Commit Graph

2221 Commits (cb14342fc3e48b0256e6fe9f622bc04589385bc7)

Author SHA1 Message Date
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
Tatsuhiro Tsujikawa 46eced8ada Fixed compile error and unit test error without SSL library. 2011-03-17 16:08:39 +09:00
Tatsuhiro Tsujikawa 821dbbff1f Fixed compile error with --disable-bittorrent 2011-03-17 16:02:35 +09:00
Tatsuhiro Tsujikawa 6e818a06dc Replaced gid_t with a2_gid_t cause gid_t is commonly used as group ID. 2011-03-17 12:17:46 +09:00
Tatsuhiro Tsujikawa b9a37f48cf Updated doc. 2011-03-16 16:56:33 +09:00
Tatsuhiro Tsujikawa 73572712d8 Use .meta4 instead of .metalink as suffix when saving metalink XML
uploaded by RPC.
2011-03-16 16:55:38 +09:00
Tatsuhiro Tsujikawa 046bee87a2 Code cleanup 2011-03-16 12:56:03 +09:00
Tatsuhiro Tsujikawa 15730aa560 Fixed the bug that JSONP callback function name is not encoded
properly.
2011-03-16 12:55:12 +09:00
Tatsuhiro Tsujikawa dfdf98d2f7 Fixed segmentation fault when JSON-RPC request cannot be parsed or is
invalid.
2011-03-16 12:53:40 +09:00
Tatsuhiro Tsujikawa bb9ad97c5c Allow empty params in GET request. 2011-03-16 12:50:39 +09:00
Tatsuhiro Tsujikawa da0ab67324 Delegate jsonRpc_ to child method in system.multicall. 2011-03-16 00:29:39 +09:00
Tatsuhiro Tsujikawa 3ddb68f340 Deprecated --enable-xml-rpc and --xml-rpc-* option. Introduced
--enable-rpc and --rpc-* option instead.

--enable-xml-rpc and --xml-rpc-* option can be used but warning
message will be shown. The help tag #xml-rpc was replaced with #rpc.
2011-03-14 21:02:25 +09:00
Tatsuhiro Tsujikawa f0cfbb21c1 Renamed classes in abstract layer of RPC service from XmlRpc* to Rpc*.
Now JSON-RPC is available by default regardless of XML library.
XML-RPC becomes available when XML library is available.
2011-03-14 16:38:54 +09:00
Tatsuhiro Tsujikawa 5a1fb3875f Added XmlRpcResponseTest. Set null as id if id is not sent.
Removed unused XmlRpcResponse::toJsonBatch(). Set default value false
to gzip argument of xmlrpc::toJsonBatch().
2011-03-14 15:31:26 +09:00
Tatsuhiro Tsujikawa bf01bb84b6 Added JSONP support. Callback query parameter is "jsoncallback". 2011-03-14 00:57:05 +09:00
Tatsuhiro Tsujikawa feb4e2e53a Hide operator<<(char c); 2011-03-14 00:54:14 +09:00
Tatsuhiro Tsujikawa b46e7a953b encodeJsonAll: Fixed stream error when gzip=true. 2011-03-14 00:53:16 +09:00
Tatsuhiro Tsujikawa 8a9fa9a692 Added JSON-RPC 2.0 batch call. 2011-03-10 00:56:37 +09:00
Tatsuhiro Tsujikawa bc7ac15d7e Fixed error message in json::decode() 2011-03-10 00:54:07 +09:00
Tatsuhiro Tsujikawa 7338a25035 Added initial JSON-RPC support.
JSON-RPC is enabled using --enable-xml-rpc. We are implementing
JSON-RPC based on JSON-RPC 2.0 draft spec.
2011-03-09 23:07:27 +09:00
Tatsuhiro Tsujikawa d541b350d2 Set DEFAULT_REFRESH_INTERVAL 1000 to update console readout more
smoothly.
2011-02-26 23:16:48 +09:00
Tatsuhiro Tsujikawa 59f251ba14 Fixed rounding error in DownloadEngine::run().
This fixes the bug that executeCommand() with Command::STATUS_ALL is
not called in every interval correctly because of rounding error in
timer.
2011-02-25 22:58:51 +09:00
Tatsuhiro Tsujikawa f8f651e8db Refresh buckets at DHT initialization without checking serialized
time.

Checking serialized time does not work if you stop aria2 as soon as it
started DHT. The serialized time in dht.dat will be updated, but
buckets are not updated and still old. When you restart aria2 again,
it does not refresh buckets because serialized time is recent.
2011-02-25 22:39:14 +09:00
Tatsuhiro Tsujikawa 655b59e350 Retry get_peers if connection is low.
To eliminate unresponsive node, we have to contact them 5
times. Therefore the maximum number of retry is 10. It is very
annoying when it takes some time to get first peer, so retry quickly
(5 seconds delay).
2011-02-25 00:34:50 +09:00
Tatsuhiro Tsujikawa f16aef227d Fixed compile error with c-ares 1.7.0 2011-02-19 01:57:16 +09:00
Tatsuhiro Tsujikawa b21cce0002 Use pkg-config for libcares. Dropped c-ares pre-1.5 support. 2011-02-18 23:36:39 +09:00
Tatsuhiro Tsujikawa 395212f47f Replaced HAVE_LIBSSL with HAVE_OPENSSL 2011-02-18 22:43:50 +09:00
Tatsuhiro Tsujikawa 7230fbd2f7 Replaced HAVE_LIBZ with HAVE_ZLIB 2011-02-18 22:34:38 +09:00
Tatsuhiro Tsujikawa 3f125dce21 Use LIBS and CPPFLAGS instead of substituting them individually per
library.
2011-02-18 18:53:53 +09:00
Tatsuhiro Tsujikawa d3d1293974 Check the availability of ares_set_servers and ares_addr_node. 2011-02-18 01:04:11 +09:00
Tatsuhiro Tsujikawa 1698b2c7b1 Save downloads added by aria2.addTorrent or aria2.addMetalink in
--save-session file.

Uploaded data are saved as file named hex string of sha1 hash of
uploaded data plus extension(".torrent" for torrent and ".metalink"
for metalink). For example,
0a3893293e27ac0490424c06de4d09242215f0a6.torrent. The directory where
these files are saved is specified by --dir option. These file paths
are written in --save-session file.
2011-02-16 00:44:23 +09:00
Tatsuhiro Tsujikawa a21fb350a0 Fixed the bug that causes segmentation fault when unpause RequestGroup
which has resolved BtDependency.
2011-02-14 00:36:52 +09:00
Tatsuhiro Tsujikawa eb6a811279 Look for USERPROFILE and the combination of HOMEDRIVE and HOMEPATH to
get user's home directory in MinGW32 build.

Usually HOME environment variable is defined in *nix like OSes, but
not in Windows. So in MinGW32 build, if HOME is not defined, we also
look for USERPROFILE and the combination of HOMEDRIVE and HOMEPATH.
2011-02-12 18:38:13 +09:00
Tatsuhiro Tsujikawa 22a6ec6a15 Fixed the bug that DownloadContext::basePath_ is not
escaped. Percent-encode non UTF-8 strings in torrent file and Magnet
URI.
2011-02-12 00:15:33 +09:00
Tatsuhiro Tsujikawa 1a9d3b7711 Added Date, Expires and Cache-Control response header field to XML-RPC response headers. 2011-02-09 23:01:01 +09:00
Tatsuhiro Tsujikawa ffce1848ca Don't retry peer lookup.
We can handle shortage of peer by short interval.
2011-02-08 23:39:44 +09:00
Tatsuhiro Tsujikawa aa4232ca8b Use rp instead of res. 2011-02-08 23:14:13 +09:00
Tatsuhiro Tsujikawa 297858280b Moved PREF_ASYNC_DNS_SERVER to the next to PREF_ASYNC_DNS. 2011-02-08 23:08:44 +09:00
Tatsuhiro Tsujikawa f0682a98c0 Added --async-dns-server option.
This option accepts comma separated list of DNS server address used in
asynchronous DNS resolver. Usually asynchronous DNS resolver reads DNS
server addresses from /etc/resolv.conf. When this option is used, it
uses DNS servers specified in this option instead of ones in
/etc/resolv.conf. You can specify both IPv4 and IPv6 address. This
option is useful when the system does not have /etc/resolv.conf and
user does not have the permission to create it.
2011-02-08 23:05:40 +09:00
Tatsuhiro Tsujikawa cf546810e4 Don't call DownloadEngine::markBadIPAddress() when DNS query was timeout. 2011-02-08 22:46:22 +09:00
Tatsuhiro Tsujikawa af4e47329b Call calculateStatistics() after global::wallclock.reset().
Inside calculateStatistics(), global::wallclock is used and if
calculateStatistics() is called after waitData(), it may use quite old
global::wallclock value.
2011-02-08 00:16:29 +09:00
Tatsuhiro Tsujikawa 3574f6bd7d Accept https:// and ftp:// in proxy options and environment variables. 2011-02-07 22:59:04 +09:00
Tatsuhiro Tsujikawa 954d595ee8 Code cleanup 2011-02-07 21:43:38 +09:00
Tatsuhiro Tsujikawa 97fde60f3e Added upper limit of the number of peer added by each addPeer(vector) call. 2011-02-07 21:38:51 +09:00
Tatsuhiro Tsujikawa 656f8cf901 Don't calculate maxPeerListSize based on --bt-max-peers.
Always use MAX_PEER_LIST_SIZE by default.
2011-02-07 00:22:06 +09:00
Tatsuhiro Tsujikawa 6c44f6b8eb Removed unused member variable peers_. 2011-02-07 00:19:07 +09:00
Tatsuhiro Tsujikawa 8eb1de9ef8 Get peers from DHT more frequently when the size of peer list is 0. 2011-02-07 00:17:44 +09:00
Tatsuhiro Tsujikawa 2666bc8170 Renamed MessageDigestHelper as message_digest_helper
Static member variables in MessageDigestHelper class are now functions
under message_digest namespace.
2011-02-05 23:38:51 +09:00
Tatsuhiro Tsujikawa 38202a5565 Renamed MetalinkHelper as metalink_helper.
Static member functions in MetalinkHelper class is now functions under
metalink namespace.
2011-02-05 23:21:06 +09:00
Tatsuhiro Tsujikawa 2373c62205 Moved some static member variables which are not exposed as public to unnamed namespace. 2011-02-05 23:08:03 +09:00
Tatsuhiro Tsujikawa 8902c2a839 Rewritten DefaultPeerStorage::addPeer(const std::vector<SharedHandle<Peer> >&) 2011-01-31 23:00:05 +09:00
Tatsuhiro Tsujikawa 27974108f0 Fixed overflow in the calculation of progress percentage for file
allocation and hash check when off_t is 32bit.
2011-01-30 23:28:10 +09:00
Tatsuhiro Tsujikawa 1b9329c67c Accept HTTP 304 reply as success when If-None-Match request-header
field is specified using --header option.

When --conditional-get is used, --allow-overwrite is now required to
overwrite existing file.
2011-01-29 23:19:10 +09:00
Tatsuhiro Tsujikawa 2ba2511dd5 Check presence of ar.
This change allows configure to find appropriate ar at cross compile.
2011-01-29 21:33:57 +09:00
Tatsuhiro Tsujikawa b49a558c4e Fixed compile error on 32bit systems. 2011-01-27 21:21:37 +09:00
Tatsuhiro Tsujikawa 43dd3861a5 Updated copyright year. 2011-01-20 00:59:06 +09:00