Don't inject validator into BtMessage in metadataGetMode because
most of the checks depends on the total length of download but it
is unknown. Delegate metadataGetMode to BtMessage.
* src/DefaultBtMessageFactory.cc
* src/DefaultBtMessageFactory.h
Added setEndGamePieceNum() pure virtual function to PieceStorage.
* src/DefaultPieceStorage.h
* src/PieceStorage.h
* src/UnknownLengthPieceStorage.h
* test/MockPieceStorage.h
Added parseMagnetLink(). Hex encoded info hash is supported.
Base32 encoded info hash is not supported yet.
* src/bittorrent_helper.cc
* src/bittorrent_helper.h
* test/BittorrentHelperTest.cc
Added _metadataGetMode member variable. It toggles the action when
messages are received: usually they almost do nothing if
_metadataGetMode is true.
* src/AbstractBtMessage.cc
* src/AbstractBtMessage.h
* src/BtAllowedFastMessage.cc
* src/BtBitfieldMessage.cc
* src/BtCancelMessage.cc
* src/BtChokeMessage.cc
* src/BtHaveAllMessage.cc
* src/BtHaveMessage.cc
* src/BtInterestedMessage.cc
* src/BtNotInterestedMessage.cc
* src/BtPieceMessage.cc
* src/BtRejectMessage.cc
* src/BtRequestMessage.cc
* src/BtUnchokeMessage.cc
Added bencode::decode overload functions. They have extra argument
'end', passed by reference. 'end' points to the beyond the last
position of data used in decoding process.
* src/bencode.cc
* src/bencode.h
* test/BencodeTest.cc
Fixed the bug that slow server is not knocked down in favor of
faster one.
* src/AbstractCommand.cc
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/PieceStorage.h
* src/UnknownLengthPieceStorage.cc
* src/UnknownLengthPieceStorage.h
* test/MockPieceStorage.h
Changed the strategry of how to increase the number of outstanding
requests. Now the number is doubled if there are no outstanding
requests after receiving messages.
* src/BtConstants.h
* src/DefaultBtInteractive.cc
* src/DefaultBtInteractive.h
Applied a patch from tizianomueller to fix sigbus errors on Linux
sparc. I modified the patch to eliminate a cast to uint32_t* and
include file ordering.
* src/PeerListProcessor.h
* src/bittorrent_helper.cc
Fixed the bug that DHTAbstractNodeLookupTask never finishes if
error occurred in DHTMessageDispatcherImpl::sendMessage().
* src/DHTMessageDispatcherImpl.cc
Removed peerStorage from DHTPeerAnnounceEntry. It is unlikely to
receive get_peers request for torrent which the client is now
downloading.
* src/BtSetup.cc
* src/DHTPeerAnnounceEntry.cc
* src/DHTPeerAnnounceEntry.h
* src/DHTPeerAnnounceStorage.cc
* src/DHTPeerAnnounceStorage.h
* src/RequestGroup.cc
* test/DHTPeerAnnounceEntryTest.cc
* test/DHTPeerAnnounceStorageTest.cc
Throw exception if binding listening port is failed. Removed
RequestGroupMan::getInitialCommand(). Use
fillRequestGroupFromReserver() instead. Delete commands for
RequestGroup which has errors when it is being added.
* src/BtSetup.cc
* src/DownloadEngine.cc
* src/DownloadEngine.h
* src/DownloadEngineFactory.cc
* src/MultiUrlRequestInfo.cc
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* test/RequestGroupManTest.cc
Fixed the bug that when downloading more than one torrent,
listening port is not reported properly to tracker for 2nd or
later torrents.
* src/BtSetup.cc
* src/PeerListenCommand.cc
* src/PeerListenCommand.h
* src/RequestGroup.cc
If user name is embedded but password is missing in URI, first
resolve password using .netrc. If password is found in .netrc,
then use it as password. If not, use the password specified in
--ftp-passwd.
* src/AuthConfigFactory.cc
* src/Request.cc
* src/Request.h
* test/AuthConfigFactoryTest.cc