Commit Graph

2476 Commits (ad596fa03f470471459f2a098bf6fe7b3b723997)

Author SHA1 Message Date
Tatsuhiro Tsujikawa 249fd90c92 Made -i list options available in aria2.changeGlobalOption. 2011-10-22 23:22:34 +09:00
Tatsuhiro Tsujikawa 2ef6b34e60 Made --download-result, --save-session, --server-stat-of and
--save-cookies option available in aria2.changeGlobalOption.
2011-10-22 23:08:40 +09:00
Tatsuhiro Tsujikawa 23a83deb4f Renamed NameMatchOptionHandler as AbstractOptionHandler. 2011-10-22 22:57:44 +09:00
Tatsuhiro Tsujikawa 3d767543e6 Removed OptionHandler::{get,set}OptionID() and canHandle().
Removed typedefs in OptionHandler and NameMatchOptionHandler.
2011-10-22 22:52:23 +09:00
Tatsuhiro Tsujikawa 1872aef953 Made --max-download-result option available in aria2.changeGlobalOption. 2011-10-22 22:43:07 +09:00
Tatsuhiro Tsujikawa c8ed44b18f Made --uri-selector option available in -i list. 2011-10-22 21:49:46 +09:00
Tatsuhiro Tsujikawa 6bc6825cec Renamed OptionHandler::setGlobalChangeOption() as setChangeGlobalOption(). 2011-10-22 21:23:42 +09:00
Tatsuhiro Tsujikawa 5a29813d24 OptionHandler now knows its option can be used in -i list option,
changeable in aria2.changeOption or aria2.changeGlobalOption.

OptionHandler also now its option is cumulative.
2011-10-22 19:08:20 +09:00
Tatsuhiro Tsujikawa d5c8d048ef Rewritten OptionParser. Made it simpler and efficient. 2011-10-22 01:03:14 +09:00
Tatsuhiro Tsujikawa 3832ed97c6 Rewritten Option. Introduced Pref.
Now preference key is Pref instead of just string.  It has Option
ID. Now option lookup and setting takes O(1) using Pref object.
2011-10-21 21:56:42 +09:00
Tatsuhiro Tsujikawa 20e781c2df Code cleanup 2011-10-20 00:11:41 +09:00
Tatsuhiro Tsujikawa 9b4855a5f0 Use sockaddr_union instead of sockaddr_storage. 2011-10-20 00:06:44 +09:00
Tatsuhiro Tsujikawa c01c34f24a Use sockaddr_union in parseAsyncDNSServers(). 2011-10-19 23:29:23 +09:00
Tatsuhiro Tsujikawa 138130497f Rewritten bittorrent::packcompact() using net::getBinAddr(). 2011-10-19 23:24:28 +09:00
Tatsuhiro Tsujikawa 3837be82c8 Removed redundant call of util::isNumericHost(). 2011-10-19 23:21:10 +09:00
Tatsuhiro Tsujikawa 74e5aa0ace Rewritten util::inSameCidrBlock() to support IPv6 address.
We also introduced union sockaddr_union in a2netcompat.h.
2011-10-19 23:14:13 +09:00
Tatsuhiro Tsujikawa 2b68f72fa6 Fixed bug that generateRandomData() does not populate data at the
first call.
2011-10-19 00:43:52 +09:00
Tatsuhiro Tsujikawa 4f0a45abe2 Made toXml and toJson non-member function. 2011-10-18 00:55:58 +09:00
Tatsuhiro Tsujikawa e700d2bb1f Made LpdMessage struct 2011-10-18 00:47:14 +09:00
Tatsuhiro Tsujikawa fc4d38d236 Rewritten HttpProxyOptionHandler using uri::parse().
Removed test case where username is empty and resulted URI has empty
username in URI.
2011-10-18 00:40:43 +09:00
Tatsuhiro Tsujikawa 065fb3a6b8 HttpProxyOptionHandler: Enclose hostname with square brackets if
hostname is IPv6 numeric address.
2011-10-15 23:10:00 +09:00
Tatsuhiro Tsujikawa 2d6e087f58 Use /dev/urandom in generateRandomData() if available. 2011-10-13 23:12:05 +09:00
Tatsuhiro Tsujikawa dbb08c08ed Simplified IteratableChecksumValidator 2011-10-13 22:07:22 +09:00
Tatsuhiro Tsujikawa ba87268d1c Simplified IteratableChunkChecksumValidator 2011-10-13 22:05:18 +09:00
Tatsuhiro Tsujikawa 2f59ce0048 Renamed DownloadResult::bitfieldStr to bitfield and changed its
content from hex string to raw byte string.
2011-10-13 21:57:33 +09:00
Tatsuhiro Tsujikawa 6404f119e1 Renamed DownloadResult::infoHashStr to infoHash and changed its
contents from hex digest to raw byte string.
2011-10-13 21:52:08 +09:00
Tatsuhiro Tsujikawa 310e58bc62 Stored hash value as raw byte string, instead of hex digest. 2011-10-13 21:40:07 +09:00
Tatsuhiro Tsujikawa d83f42ef36 s/STD_INPUT_HANDLE/STD_OUTPUT_HANDLE/ 2011-10-05 22:52:03 +09:00
Tatsuhiro Tsujikawa 8938cef9b3 Made several messages translatable 2011-10-02 16:14:03 +09:00
Tatsuhiro Tsujikawa a077ddd111 Fixed compile error with --without-libxml2 --without-libexpat 2011-09-28 23:41:22 +09:00
Tatsuhiro Tsujikawa 5ce9af94ce Check libgcrypt version is greater or equal to required version.
This will fixes Debian bug#642989.
2011-09-28 23:40:34 +09:00
Tatsuhiro Tsujikawa 7e7aeac3ff Added --piece-length option.
This option sets a piece length for HTTP/FTP downloads. This is the
boundary when aria2 splits a file. All splits occur at multiple of
this length. This option will be ignored in BitTorrent downloads.  It
will be also ignored if Metalink file contains piece hashes.
2011-09-27 21:48:41 +09:00
Tatsuhiro Tsujikawa 05104ba177 Removed asString, asList, ... and use downcast<T> instead. 2011-09-26 21:45:45 +09:00
Tatsuhiro Tsujikawa 374955da0d Throw exception if parameter has wrong type in RPC method.
Formally, depending on the method implementation, this kind of error
is just ignored and parameter is skipped. Now aria2 responds error for
these cases. The required parameter checking is also reworked along
with this change.
2011-09-25 23:36:00 +09:00
Tatsuhiro Tsujikawa fee9b95db3 Don't check readability of BitTorrent TCP socket.
Don't check readability of BitTorrent TCP socket to avoid flooding.
2011-09-11 00:54:33 +09:00
Tatsuhiro Tsujikawa 79c59dcbf4 Cleanup log message for binding server socket.
Cleaned up log message for binding server socket.  After binding
BitTorrent TCP port, add the socket to DownloadEngine to check
readability. This was missing for long time.
2011-09-11 00:13:09 +09:00
Tatsuhiro Tsujikawa b775b19366 Check socket is null or not before calling (add|delete)SocketForReadCheck. 2011-09-11 00:12:18 +09:00
Tatsuhiro Tsujikawa c408dbba72 Recognize tab as white space before option in -i list. 2011-08-28 00:40:23 +09:00
Tatsuhiro Tsujikawa f25c89b53d Added usage of --stream-piece-selector=geom option. 2011-08-25 00:04:04 +09:00
Tatsuhiro Tsujikawa c7ac147287 Added PieceStorage::onDownloadIncomplete() virtual function.
In DefaultPieceStorage::onDownloadIncomplete(), we call
StreamPieceSelector::onBitfieldInit().
Added GeomStreamPieceSelectorTest.
2011-08-24 23:16:06 +09:00
Tatsuhiro Tsujikawa b94bf3355b getGeomMissingUnusedIndex: use index if isBitSet() is false.
In getGeomMissingUnusedIndex(), use index if isBitSet() is false
instead of finding isUseBitSet() == true and cancel.  Added doc for
getGeomMissingUnusedIndex(). Renamed confusing names in bitfield.h.
2011-08-24 22:59:00 +09:00
Tatsuhiro Tsujikawa a081f651a1 GeomStreamPieceSelector: Made base changeable and added offsetIndex
parameter.
2011-08-24 21:56:55 +09:00
Tatsuhiro Tsujikawa 7318c361bc Added geom parameter to --stream-piece-selector option. 2011-08-24 21:56:54 +09:00
Tatsuhiro Tsujikawa 201af99501 Added GeomStreamPieceSelector. 2011-08-24 21:56:54 +09:00
Tatsuhiro Tsujikawa 846b9b9283 Detect \b as \f as valid UTF-8 chars. 2011-08-24 21:55:32 +09:00
Tatsuhiro Tsujikawa 09ce8960fd Added completedLength response key in aria2.getFiles RPC method. 2011-08-23 18:47:27 +09:00
Tatsuhiro Tsujikawa 91220f20ca Added #checksum help tag. 2011-08-23 17:59:38 +09:00
Tatsuhiro Tsujikawa b7b5fac13c Updated usage of -V option. 2011-08-23 17:55:22 +09:00
Tatsuhiro Tsujikawa 401a217369 Added --checksum option.
Added --checksum=TYPE=DIGEST option. This option sets checksum. TYPE
is hash type. The supported hash type is listed in "Hash Algorithms"
in "aria2c -v". DIGEST is hex digest.  For example, setting sha-1
digest looks like this: sha-1=0192ba11326fe2298c8cb4de616f4d4140213838
This option applies only to HTTP(S)/FTP downloads.
2011-08-23 17:25:15 +09:00
Tatsuhiro Tsujikawa 8ec6cd1c44 Removed redundant MessageDigest::supports() call.
MessageDigest::supports() will be called from
MessageDigest::isValidHash() later in the function.
2011-08-23 17:23:46 +09:00
Tatsuhiro Tsujikawa 6c5c796646 Added --hash-check-only opiton.
Added --hash-check-only opiton.  If true is given, after hash check
using --check-integrity option, abort download whether or not download
is complete. The default value is false.
2011-08-22 23:34:17 +09:00
Tatsuhiro Tsujikawa f7aeb86ccc Added --download-result option.
Added --download-result=OPT option.  This option changes the way
"Download Results" is formatted. If OPT is 'default', print GID,
status, average download speed and path/URI. If multiple files are
involved, path/URI of first requested file is printed and remaining
ones are omitted.  If OPT is 'full', print GID, status, average
download speed, percentage of progress and path/URI. The percentage of
progress and path/URI are printed for each requested file in each row.
2011-08-22 23:05:06 +09:00
Tatsuhiro Tsujikawa 3c73b6e767 Eliminated inet_ntoa and inet_ntop. Use getnameinfo() instead. 2011-08-20 21:53:48 +09:00
Tatsuhiro Tsujikawa af46293ef9 Use utimes instead of utime if utimes is available. 2011-08-19 22:35:15 +09:00
Tatsuhiro Tsujikawa 3fe4e84443 Removed unused preferences. 2011-08-19 22:11:38 +09:00
Tatsuhiro Tsujikawa 384ef111b9 Added --rpc-allow-origin-all option.
This option adds Access-Control-Allow-Origin header field with value
'*' to the RPC response.
2011-08-18 21:24:18 +09:00
Tatsuhiro Tsujikawa 4c1c38a33f Ignore --out option supplied in command-line if -i is used.
You can still use out option in the text file specified in -i.
2011-08-18 18:36:17 +09:00
Tatsuhiro Tsujikawa bf42505b7b MinGW32: Use CryptGenRandom() to generate random number.
MinGW32 lacks random(), so we use CryptGenRandom() as a replacement.
In the implementation, SimpleRandomizer::getRandomNumber() returns the
random number in range [0, INT32_MAX]. Thus,
simpleRandomizer::getMaxRandomNumber() returns INT32_MAX.
2011-08-18 18:03:06 +09:00
Tatsuhiro Tsujikawa dce0667c0b MinGW32 build: Replace all '\' in path with '/' in util::applyDir()
In MinGW32 build, replace all '\' in path with '/' in
util::applyDir().  Take into account '\' in File::getBasename() and
File::getDirname().
2011-08-18 17:27:41 +09:00
Cristian Rodríguez e6f3c78103 - Disable SSLv2 and enable all workarounds for buggy servers
- Keep memory usage low when openSSL supports SSL_MODE_RELEASE_BUFFERS
2011-08-15 17:55:58 -03:00
Tatsuhiro Tsujikawa fd3e7671a5 Use random() instead of rand(). 2011-08-11 02:34:04 +09:00
Tatsuhiro Tsujikawa e76dc28f7f Added libnettle and libgmp support.
libnettle and libgmp is used by default. Old implementation uses
libgcrypt as default. If more and more Linux distributions offer
libnettle linked GnuTLS, then this change decrease library dependency
against libgcrypt and libgpg-error.  The current library detection for
libnettle and libgmp is very simple, just use AC_SEARCH_LIBS.
util::generateRandomData() was written using SimpleRandomizer, thus no
external library dependency from this function.
2011-08-11 02:29:14 +09:00
Tatsuhiro Tsujikawa 11ac2c4a88 Added DHKeyExchange implementation using GMP. 2011-08-11 00:08:29 +09:00
Tatsuhiro Tsujikawa 6edfa4e430 Limit maximum length of ByteArrayWriter.
aria2 downloads meta files such as .torrent and .metalink file in
memory using ByteArrayWriter. To prevent accidentally download big
file, we set the maximum length that ByteArrayWriter can hold.  The
default is 5MiB and it is reasonable because most .torrent and
.metalink file are much smaller than that.
2011-08-10 23:58:49 +09:00
Tatsuhiro Tsujikawa 2d9323651b Don't use sorted std::deque for requestSlots_.
Don't use sorted deque for requestSlots_. For the most time, first
data requested is sent back first. So using std::deque, we find
received RequestSlot by O(1), while sorted std::deque requires
O(logN).
2011-08-10 23:18:23 +09:00
Tatsuhiro Tsujikawa 6ee913b0bc Simplified PieceStatMan and RarestPieceSelector.
Simplified PieceStatMan and RarestPieceSelector, but computation order
 to select piece index is still O(N) and unchanged.  Updating piece
 stat is improved to O(N) for bitfield update and O(1) for single
 index update, while old implementation needs O(NlogN) and O(N)
 respectively.
2011-08-10 21:29:01 +09:00
Tatsuhiro Tsujikawa 37016c6587 global cout and cerr is now retrieved using global::cout() and global::cerr()
This is necessary to avoid global variable initialization order
problem.
2011-08-10 01:28:20 +09:00
Tatsuhiro Tsujikawa e8e3a6f259 wallclock is now retrieved using global::wallclock() call.
This is necessary to avoid global variable initialization order
problem.
2011-08-10 01:17:28 +09:00
Tatsuhiro Tsujikawa 97f34ab668 Added global::cerr. windows.h now included from common.h
We replaced most of std::cerr with global::cerr.  windows.h is now
included from common.h. Before including it, we define WINVER.  We
renamed some variable name because some macros in windows.h collide
with them.
2011-08-10 00:38:48 +09:00
Tatsuhiro Tsujikawa a10cda2f17 Use global::cout to output string to stdout.
In MinGW32 build, global::cout is WinConsoleFile. When outputing to
console, it uses WriteConsoleW, so Unicode characters are written.
Fixed memory leak in WChar<->MultiByte conversion functions.  The
portion of code which uses std::cout is rewritten to use global::cout.
2011-08-09 23:33:55 +09:00
Tatsuhiro Tsujikawa 02307cee0a Removed utf8ToNative from log message and exception message. 2011-08-08 21:46:10 +09:00
Tatsuhiro Tsujikawa 7368c9c9d8 Percent-encode non-printable ASCII and non-ASCII chars in FileEntry.
Percent-encode non-printable ASCII and non-ASCII chars in URI using
util::percentEncodeMini() when URI is added to FileEntry.  Removed
percent-encode from Request. Also do percent-encoding when setting
referer and redirected URI.
2011-08-07 20:46:04 +09:00
Tatsuhiro Tsujikawa 491e8bc519 Call utf8ToNative to log filename and URI in Metalink2RequestGroup. 2011-08-07 18:48:40 +09:00
Tatsuhiro Tsujikawa e9d16306df Made getRedirectURI and getTransferEncoding return const reference.
Made getRedirectURI and getTransferEncoding in HttpResponse return
const reference.
2011-08-07 18:45:29 +09:00
Tatsuhiro Tsujikawa 272d81b7a1 Rewritten ExpatMetalinkProcessor using BufferedFile. 2011-08-07 18:08:16 +09:00
Tatsuhiro Tsujikawa 32d413c6de Use BufferedFile::printf in SessionSerializer 2011-08-07 17:30:21 +09:00
Tatsuhiro Tsujikawa fd5f9127cd Rewritten Logger using BufferedFile. 2011-08-07 17:06:07 +09:00
Tatsuhiro Tsujikawa b6b8cb005d Added printf and flush method to BufferedFile. 2011-08-07 17:05:50 +09:00
Tatsuhiro Tsujikawa e2d682e0c6 bencode2::decodeFromFile is now first read torrent metainfo file into
memory before parsing it.
2011-08-07 01:43:24 +09:00
Tatsuhiro Tsujikawa 4220c2aadc Read aria2.conf using BufferedFile
Read aria2.conf using BufferedFile. Added BufferedFile::transfer().
2011-08-07 01:43:02 +09:00
Tatsuhiro Tsujikawa b3b67f440b Removed unused function declaration. 2011-08-07 01:11:28 +09:00
Tatsuhiro Tsujikawa 0f349773f5 Rewritten saveAs using BufferedFile 2011-08-07 01:10:17 +09:00
Tatsuhiro Tsujikawa a6c2ad53bf Rewritten UriListParser using BufferedFile 2011-08-07 01:05:02 +09:00
Tatsuhiro Tsujikawa 945012a32f Removed unused header 2011-08-07 00:37:54 +09:00
Tatsuhiro Tsujikawa 1f710d29c1 Rewritten SessionSerializer using BufferedFile 2011-08-07 00:36:44 +09:00
Tatsuhiro Tsujikawa 6034474550 Don't allow copying BufferedFile 2011-08-07 00:36:31 +09:00
Tatsuhiro Tsujikawa 190d170076 Rewritten ServerStatMan using BufferedFile. 2011-08-07 00:10:53 +09:00
Tatsuhiro Tsujikawa 7f3d027b83 Removed feof from operator unspecified_bool_type. Added eof().
In BufferedFile, removed feof from operator unspecified_bool_type. EOF
can be queried separately using newly added eof().
2011-08-07 00:06:32 +09:00
Tatsuhiro Tsujikawa f6472abae8 Compare 16bytes of header text. 2011-08-06 23:04:06 +09:00
Tatsuhiro Tsujikawa 8f93855bbd Rewritten ProtocolDetector using BufferedFile 2011-08-06 22:43:24 +09:00
Tatsuhiro Tsujikawa c553d92f45 Rewritten NsCookieParser using BufferedFile 2011-08-06 21:59:06 +09:00
Tatsuhiro Tsujikawa f38c2d2012 Rewritten Netrc using BufferedFile. 2011-08-06 21:57:38 +09:00
Tatsuhiro Tsujikawa c9f8cf75bf Rewritten CookieStorage using BufferedFile 2011-08-06 21:53:59 +09:00
Tatsuhiro Tsujikawa 410d88710b Rewritten DHTRoutingTable I/O using BufferedFile. 2011-08-06 21:35:39 +09:00
Tatsuhiro Tsujikawa ef27370243 Use BufferedFile in DefaultBtProgressInfoFile 2011-08-06 21:27:17 +09:00
Tatsuhiro Tsujikawa 6cb91cae88 Added fopen/fread/fwrite/fgets wrapper class. 2011-08-06 21:17:36 +09:00
Tatsuhiro Tsujikawa 733ff2c05a Rewritten NsCookieParser using stdio instead of stream. 2011-08-05 23:35:00 +09:00
Tatsuhiro Tsujikawa 07874696c5 Rewritten Netrc using stdio instead of stream. 2011-08-05 23:33:30 +09:00
Tatsuhiro Tsujikawa 13158de0d3 Removed unused header fstream from DHTSetup 2011-08-05 22:45:34 +09:00
Tatsuhiro Tsujikawa 168094560d Rewritten CookieStorage using stdio instead of stream 2011-08-05 22:44:54 +09:00
Tatsuhiro Tsujikawa 292bbb3679 Added log messages to DHTRoutingTable IO routines. 2011-08-05 22:23:53 +09:00
Tatsuhiro Tsujikawa dea7a7969c Rewritten DHTRoutingTableSerializer using stdio instead of stream. 2011-08-05 22:15:55 +09:00
Tatsuhiro Tsujikawa f141cd4228 Rewritten DHTRoutingTableDeserializer using stdio instead of stream. 2011-08-05 21:50:11 +09:00
Tatsuhiro Tsujikawa 5eb338ad87 Rewritten DefaultBtProgressInfoFile using stdio instead of stream. 2011-08-05 18:34:07 +09:00
Tatsuhiro Tsujikawa 3879da592d In MinGW32, open file with UNICODE filename and print them in ANSI. 2011-08-04 21:43:02 +09:00
Tatsuhiro Tsujikawa 6e1e481be5 Make --metalink-location option available with --disable-metalink 2011-07-31 21:46:07 +09:00
Tatsuhiro Tsujikawa afdbda8f10 Initialize libgcrypt.
We relied initialization of libgcrypt on gnutls_global_init(), but
recent change in gnutls, which changes default crypto backend from
libgcrypt to libnettle, leaves libgcrypt uninitialized if it uses
libnettle as backend(and this is likely because libnettle is chosen by
default). To fix this issue, we simply initialize libgcrypt on our
own.
2011-07-30 17:36:39 +09:00
Tatsuhiro Tsujikawa 70eeebfae9 Retry DHT get_peers task if the number of peers in PeerStorage is less
than max peers.

Added virtual size_t countPeer() const to PeerStorage.
2011-07-29 23:49:25 +09:00
Tatsuhiro Tsujikawa aa13ff5f51 Throw exception with error message if gnutls_global_init() failed. 2011-07-29 22:06:02 +09:00
Tatsuhiro Tsujikawa 932c258755 Added log message when checksum validation failed. 2011-07-28 00:00:01 +09:00
Tatsuhiro Tsujikawa 4ea28cb837 Don't send basic auth header to service operated on differenct port.
When --http-auth-challenge=true, aria2 only sends basic auth header
when requested. Old implementation sends basic auth header to service
operated in different port in successive request. This change avoid
this bug.
2011-07-27 23:28:31 +09:00
Tatsuhiro Tsujikawa 02292feaba Consistent naming scheme for hash type and digest for Piece. 2011-07-27 22:50:10 +09:00
Tatsuhiro Tsujikawa 03f0774482 Consistent naming scheme for hash type and digest for DownloadContext. 2011-07-27 22:44:30 +09:00
Tatsuhiro Tsujikawa 7b86b294c9 Consistent naming scheme for hash type and digest. 2011-07-27 21:44:54 +09:00
Tatsuhiro Tsujikawa ce101f5ad2 Use HttpHeader::getIterator() instead of HttpHeader::get() 2011-07-27 21:15:54 +09:00
Tatsuhiro Tsujikawa c536e460aa Merge branch 'rfc6249' 2011-07-27 21:02:53 +09:00
Tatsuhiro Tsujikawa a533437be6 Implemented Metalink/HTTP in HTTP download.
Link header fields from first Metalink server is utilized as described
in rfc6249. We only set digest from Digest header field to
DownloadContext only when PieceStorage is not initialized(in other
words, before file size is known). After PieceStorage is initialized,
Digest header field is used to check the value is the same in digest
in DownloadContext.  Current implementation only handles
rel=duplicate.
2011-07-27 20:54:21 +09:00
Tatsuhiro Tsujikawa 67e91c3431 HttpResponse::getDigest() now returns all Digest.
In addition, HttpResponse::getMetalinkHttpEntries() does not check
validity of URI. It is checked when we add it to FileEntry.
2011-07-27 19:32:35 +09:00
Tatsuhiro Tsujikawa 7c317de4e7 Added Metalink/HTTP Link and Digest header field parser. 2011-07-26 23:41:21 +09:00
Tatsuhiro Tsujikawa 9ff60ac477 Added struct for Metalink/HTTP 2011-07-26 23:19:54 +09:00
Tatsuhiro Tsujikawa 3b9a751757 Lowcase PREF_METALINK_LOCATION before split. 2011-07-25 23:58:38 +09:00
Tatsuhiro Tsujikawa 5a4a627d72 Remove Metalink content-type after first server response.
We don't accept Metalink content-type after first server response.
2011-07-25 00:03:13 +09:00
Tatsuhiro Tsujikawa a6b7ef5f07 Eliminated static variable from LpdReceiveMessageCommand.
BtRegistry now holds LpdMessageReceiver.
2011-07-22 00:41:45 +09:00
Tatsuhiro Tsujikawa 97f76b7cf4 Fixed the bug due to dangling pointers in RequestGroup.
RequestGroup holds a poitner to btRuntime_ and peerStorage_. After
removing them from BtRegistry, we failed to set 0 to them.  When
program access them, it goes undefined world, such as random crash.
We found this bug when pasuing download and valgrind warned memory
corruption.
2011-07-21 23:59:44 +09:00
Tatsuhiro Tsujikawa c58f736bb9 BtRegistry now holds BitTorrent TCP server port.
Because BitTorrent TCP server port is global configuration, it is not
preferable that per download resource BtRuntime holds it.  We also
refactored and eliminated ugly static variable in PeerListenCommand.
If TCP port is necessary, we inject it to them directly.
2011-07-21 23:42:41 +09:00
Tatsuhiro Tsujikawa f0cd83f809 Added log message to clarify error for BitTorrent server socket. 2011-07-21 21:59:26 +09:00
Tatsuhiro Tsujikawa e15f4edf8b Loosen the condition where maxOutstandingRequest_ is increased. 2011-07-18 23:31:25 +09:00
Tatsuhiro Tsujikawa a454a97c4e Set UB_MAX_OUTSTANDING_REQUEST 256 2011-07-16 16:19:38 +09:00
Tatsuhiro Tsujikawa af0daa3caa Set NO_DEFAULT_VALUE as the default value of --enable-direct-io. 2011-07-16 16:15:16 +09:00
Tatsuhiro Tsujikawa 0eda667605 Added #deprecated help tag. 2011-07-16 16:14:57 +09:00
Tatsuhiro Tsujikawa 4933428261 Removed ENABLE_DIRECT_IO macro. 2011-07-16 16:06:15 +09:00
Tatsuhiro Tsujikawa dbf4f553ca Deprecated --enable-direct-io option.
Modified DeprecatedOptionHandler so that it can have replacing
OptionHandler.
2011-07-16 16:03:28 +09:00
Tatsuhiro Tsujikawa b96df117d6 Removed deprecated options.
Removed --enable-xml-rpc, --xml-rpc-listen-all, --xml-rpc-listen-port,
--xml-rpc-max-request-size, --xml-rpc-user, --xml-rpc-passwd.
2011-07-16 15:52:35 +09:00
Tatsuhiro Tsujikawa 5bbfa742fc Removed use of O_DIRECT because it performs bad. 2011-07-16 13:57:31 +09:00
Tatsuhiro Tsujikawa 5c4a52ad74 Managed user cuid in Piece.
Previous implementation does not store information which Command cuid
uses which Piece.  Mark Piece acquired by SegmentMan by setting
Piece::setUsedBySegment(true).
2011-07-16 00:58:41 +09:00
Tatsuhiro Tsujikawa ba710a7cb4 Define SHUT_WR as SD_SEND for MinGW32 2011-07-16 00:58:13 +09:00
Tatsuhiro Tsujikawa ad4065ca12 Increased max # of in-flight request in BitTorrent. 2011-07-16 00:24:29 +09:00
Tatsuhiro Tsujikawa 44c379eaa8 Do nothing if block has already acquired.
This happens in end-game mode.
2011-07-16 00:23:45 +09:00
Tatsuhiro Tsujikawa 5703835784 Use GNUTLS_SHUT_WR instead of GNUTLS_SHUT_RDWR
We don't read the response from peer about this.
2011-07-06 22:52:15 +09:00
Tatsuhiro Tsujikawa 6f602e2809 Call shutdown() with SHUT_WR before close to avoid TCP RST. 2011-07-06 22:51:20 +09:00
Tatsuhiro Tsujikawa d2e76eca47 Don't search faster server using ServerStatMan if req_ is null or
total length is unknown.
2011-06-29 21:30:32 +09:00
Tatsuhiro Tsujikawa 45430983d8 Move URI to spendUris_ when it is selected in
FileEntry::findFasterRequest().
2011-06-28 22:38:31 +09:00
Tatsuhiro Tsujikawa bd4d3a27b3 Assign global::wallclock instead of calling Timer::reset(). 2011-06-28 22:30:40 +09:00
Tatsuhiro Tsujikawa 5d498cb1ab Take into account PREF_MAX_CONNECTION_PER_SERVER in
findFasterRequest(...,serverStatMan).
2011-06-28 21:27:31 +09:00
Tatsuhiro Tsujikawa 2906484345 Use ServerStat to find faster server. 2011-06-28 00:21:29 +09:00
Tatsuhiro Tsujikawa 0f0d4b9a48 Documented that falloc can be used against NTFS(MinGW build only). 2011-06-20 23:28:19 +09:00
Tatsuhiro Tsujikawa cc7bc0aad3 Added aria2.getGlobalStat RPC method.
It returns overall download/upload speed and the number of
active/stopped/waiting downloads.
2011-06-17 22:45:42 +09:00
Tatsuhiro Tsujikawa bb7e2e69db Call requestQueueCheck() even if reservedGroups_ is not empty. 2011-06-16 22:36:20 +09:00
Tatsuhiro Tsujikawa 58b9655ad4 Call requestQueueCheck() even if reservedGroups_ is not empty.
This is because if all downloads in reservedGroups_ are in paused
state, we have to call requestQueueCheck() for each new added
download.
2011-06-16 22:01:14 +09:00
Tatsuhiro Tsujikawa bea21e0afa Added --stream-piece-selector option to -i list option. 2011-06-16 21:45:47 +09:00
Tatsuhiro Tsujikawa d5c2ef4ce9 Added --pause option.
This option pauses download after added. This option is effective only
when --enable-rpc=true is given.  When --save-session option is used
and there are paused downloads, they are saved with --pause=true so
that it will become paused state when the session is recovered.
2011-06-16 21:37:15 +09:00
Tatsuhiro Tsujikawa c0d1e98133 Abort aria2 if it could not setup any RPC server. 2011-06-15 22:19:09 +09:00
Tatsuhiro Tsujikawa 561dafc942 Added --truncate-console-readout option.
This option truncates console readout to fit in a single line.  This
is default. Give false value to this option to tell aria2 not to
truncate console readout.
2011-06-15 20:27:14 +09:00
Tatsuhiro Tsujikawa e3e7a420de Cache and reuse RpcMethod objects. 2011-06-15 20:07:10 +09:00
Tatsuhiro Tsujikawa d1885a5874 Allowed missing params in system.multicall RPC method. 2011-06-15 00:42:50 +09:00
Tatsuhiro Tsujikawa 2d92571cf9 Moved jsonRpc flag from RpcMethod to RpcRequest.
Now RpcMethod is stateless, so we can cache and reuse them.
2011-06-15 00:19:07 +09:00
Tatsuhiro Tsujikawa ba9673be1d Initialized member variables of DownloadResult in its ctor. 2011-06-12 00:51:36 +09:00
Tatsuhiro Tsujikawa 65ec9e98df Replaced InOrder with Inorder. 2011-06-11 21:49:09 +09:00
Tatsuhiro Tsujikawa deaea9537b Added --stream-piece-selector option.
This option specifies piece selection algorithm used in HTTP/FTP
download. Piece means fixed length segment which is downloaded in
parallel in segmented download. If 'default' is given, aria2 selects
piece so that it reduces the number of establishing connection. This
is reasonable default behaviour because establishing connection is an
expensive operation.  If 'inorder' is given, aria2 selects piece which
has minimum index. Index=0 means first of the file. This will be
useful to view movie while downloading it. --enable-http-pipelining
option may be useful to reduce reconnection overhead.  Please note
that aria2 honors --min-split-size option, so it will be necessary to
specify a reasonable value to --min-split-size option.
2011-06-11 21:41:56 +09:00
Tatsuhiro Tsujikawa cc82da3bab Added StreamPieceSelector class.
This class abstracts the piece selection algorithm for HTTP/FTP
download.
2011-06-11 17:34:17 +09:00
Tatsuhiro Tsujikawa 533cdfa850 Removed unnecessary template parameter from std::make_pair call.
The patch was contributed from Dan Fandrich.
2011-06-10 21:11:03 +09:00
Tatsuhiro Tsujikawa 51dc544f2b Logged invoked RPC method name. 2011-06-07 23:33:04 +09:00
Tatsuhiro Tsujikawa e958f5dab3 Implemented fast file allocation in MinGW32 build.
We use SetFilePointerEx and SetEndOfFile to allocate extents.  This
only works with NTFS. To enable this feature, --file-allocation=falloc
must be given.
2011-06-07 01:09:38 +09:00
Tatsuhiro Tsujikawa 867cab6df1 Small code cleanup 2011-06-01 01:43:31 +09:00
Tatsuhiro Tsujikawa 2799c9f0cc Only percent-encode non-printable ASCII chars(0x00-0x1f), non-ASCII
chars(>0x7f), ' ', '"', '<' and '>' for URIs supplied by user and
remote server(usually Location header field).
2011-06-01 01:34:30 +09:00
Tatsuhiro Tsujikawa 74a049ddfc Don't throw exception if Z_BUF_ERROR is encountered in
GZipDecodingFilter.
2011-05-30 23:10:06 +09:00
Tatsuhiro Tsujikawa 34207cda01 Don't throw exception if Z_BUF_ERROR is encountered in GZipEncoder. 2011-05-30 23:04:48 +09:00
Tatsuhiro Tsujikawa 70b7394b21 Updated doc for --save-session option. 2011-05-29 21:07:27 +09:00
Tatsuhiro Tsujikawa 4784114281 Don't save removed download in --save-session text file.
Now stat column of removed downloads in Download Results is 'RM'
instead of INPR.
2011-05-29 20:59:45 +09:00
Tatsuhiro Tsujikawa c6b71eac8f Updated doc for --save-session option. 2011-05-19 19:01:17 +09:00
Tatsuhiro Tsujikawa 4dc71647f8 Added --metalink-base-uri option to -i list options. 2011-05-16 22:45:53 +09:00
Tatsuhiro Tsujikawa 653f04ef5c Add CreateRequestCommand with STATUS_INACTIVE instead of SleepCommand
+ DownloadFailureException.

Throwing DownloadFailureException may stop download unexpectedly when
--reuse-uri is false. Using CreateRequestCommand with STATUS_INACTIVE,
they can be executed next iteration with
DownloadEngine::setRefreshInterval(0).
2011-05-16 22:01:49 +09:00
Tatsuhiro Tsujikawa c9fe4c64f5 Added relative URI support to ExpatMetalinkProcessor 2011-05-16 01:37:19 +09:00
Tatsuhiro Tsujikawa 49b49c351a Eliminated few seconds delay when downloads stop or pause.
The delay is caused because some Commands are only called in certain
interval(called refreshInterval, default, 1000ms). In aria2 download
stops when all Commands associated to it are stopped. Since some
Commands are called in each 1000ms by default, as mentioned before, we
have to wait for them.  To fix this issue, we call
DownloadEngine::setRefreshInterval(0) when pausing/stopping downloads.
DownloadEngine::setRefreshInterval(0) makes refreshInterval 0 in one
shot.

When all segments are ignored, now DownloadFailureException is thrown.
And stop the download immediately. As described earlier, we call
DownloadEngine::setRefreshInterval(0) in catch block of
DownloadFailureException to eliminate delay.
2011-05-15 23:35:06 +09:00
Tatsuhiro Tsujikawa 49b032800f Added --metalink-base-uri option.
--metalink-uri option specifies base URI to resolve relative URI in
metalink file stored in local disk. If URI points to a directory, URI
must end with '/'.
2011-05-14 22:52:54 +09:00
Tatsuhiro Tsujikawa ed589ab034 Run batch file with cmd.exe. Quoted user command.
It seems that we have to specify the full path to cmd.exe in the first
argument of CreateProcess() to run batch file in proper manner.  We
first determine the full path to cmd.exe. To do this, we get windir
environment variable and concatenate it with "\system32\cmd.exe".
2011-05-14 21:27:31 +09:00
Tatsuhiro Tsujikawa 286991e17d Strip DQUOTE from cookie-value and updated doc. 2011-05-14 21:24:10 +09:00
Tatsuhiro Tsujikawa 3026b18ecd Updated doc 2011-05-14 21:23:59 +09:00
Tatsuhiro Tsujikawa 00fa59d0f5 Fixed the bug that the message "Loaded cookies from ..." appears when
loading cookies from that file failed.
2011-05-12 09:39:03 +09:00
Tatsuhiro Tsujikawa 990a9e6d8e Applied patch from Dan Fandrich.
Thanks to Dan Fandrich.
I modified some lines to suite my taste.
2011-05-07 18:48:58 +09:00
Tatsuhiro Tsujikawa ad5af56c17 Support relative URI in Metalink file.
If relative URI is found in Metalink file, aria2 resolves its full URI
contatenating the URI from which Metalink file is retrieved and
relative URI in Metalink file. This feature is not available if
Metalink file in local disk is specified in command line.
2011-05-07 18:41:18 +09:00
Tatsuhiro Tsujikawa e7d7233d54 Moved joinUri from util namespace to uri namespace. 2011-05-06 23:20:43 +09:00
Tatsuhiro Tsujikawa 11d7e4fa46 Set DownloadEngine::setNoWait(true) in SleepCommand. 2011-04-30 23:45:17 +09:00
Tatsuhiro Tsujikawa 1122e55a35 Handle "..", "." in util::joinUri() 2011-04-30 22:42:10 +09:00
Tatsuhiro Tsujikawa 55d00d047c Added swap for UriStruct 2011-04-30 00:29:14 +09:00
Tatsuhiro Tsujikawa 871819af59 Added util::joinUri() 2011-04-30 00:15:27 +09:00
Tatsuhiro Tsujikawa 33b9b3b27d Added uri::construct() 2011-04-30 00:14:49 +09:00
Tatsuhiro Tsujikawa 2c0476e6d9 Erase user and password specified in command-line from argv.
The user and password is masked with '*'.
2011-04-22 23:38:59 +09:00
Tatsuhiro Tsujikawa 211c4ea9f4 If no data type tag is used in XML-RPC, treat the data as string. 2011-04-22 23:02:28 +09:00
Tatsuhiro Tsujikawa aabb1f963e Removed condition always evaluated to true. 2011-03-29 23:22:36 +09:00
Tatsuhiro Tsujikawa 891c9e60ac Use A2_DELTA_MILLIS for timing critical code. 2011-03-27 20:54:51 +09:00
Tatsuhiro Tsujikawa a4ddec44d1 Fixed typo 2011-03-27 19:19:33 +09:00
Tatsuhiro Tsujikawa 6e3f512c61 Added --show-console-readout option.
This option toggles appearance of console readout.
2011-03-27 19:16:54 +09:00
Tatsuhiro Tsujikawa 60a21e672c Fixed compile error 2011-03-21 11:34:35 +09:00
Tatsuhiro Tsujikawa 87ca37ea48 Log error when event polling function failed. 2011-03-20 15:22:42 +09:00
Tatsuhiro Tsujikawa e95b8efc6b Fixed the bug that microsecond part of timeval overwlows in waitData(). 2011-03-20 15:00:13 +09:00
Tatsuhiro Tsujikawa d8585fd6eb Updated doc 2011-03-18 22:45:25 +09:00
Tatsuhiro Tsujikawa c1c3f2d77a Return text/javascript as Content-Type if jsoncallback is given. 2011-03-18 22:43:01 +09:00
Tatsuhiro Tsujikawa 3d2fa5954e Rewritten SocketBuffer::BufEntry and SocketBuffer::send() 2011-03-18 17:20:37 +09:00
Tatsuhiro Tsujikawa 18d51a3e20 Removed logging RPC request. 2011-03-17 16:09:22 +09:00