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
Tatsuhiro Tsujikawa
fe40876546
Added aria2.removeDownloadResult XML-RPC method.
...
The method signature is aria2.removeDownloadResult(gid). This method
removes completed/error/removed download denoted by gid from
memory. This method returns "OK" for success.
2011-01-20 00:56:34 +09:00
Tatsuhiro Tsujikawa
1ea01e84b2
Use IP address of data connection to connect to the remote server in
...
passive mode.
2011-01-20 00:30:01 +09:00
Tatsuhiro Tsujikawa
1d71626bea
Supported multi-line HTTP header field value.
...
See http://tools.ietf.org/html/rfc2616#section-4.2
2011-01-20 00:25:01 +09:00
Tatsuhiro Tsujikawa
2873953f30
Changed the default value of --retry-wait to 0 for backward
...
compatibility.
Also updated usage doc.
2011-01-18 21:22:59 +09:00
Tatsuhiro Tsujikawa
426e57a180
Don't check permission of .netrc file in MinGW32 build.
2011-01-17 22:36:19 +09:00
Tatsuhiro Tsujikawa
b0ed9b3bd1
Added retry-wait option to -i list options.
2011-01-17 21:25:17 +09:00
Tatsuhiro Tsujikawa
f2a63fa06a
Added --retry-wait option.
...
This option was once existed in aria2 but erased on 2009-09-20. Now
it is resurrected once again. We choose 2 as default value, but there
is no good theory behind it. Now we retry HTTP download when remote
server returns 503 Service Unavailable if --retry-wait > 0. We also
added error code 29: HTTP_SERVICE_UNAVAILABLE.
2011-01-17 21:19:45 +09:00
Tatsuhiro Tsujikawa
4824b09237
Reverted comment which was removed unintentionally. Moved 2
...
DownloadEngine related lines outside of #ifdef ENABLE_MESSAGE_DIGEST.
2011-01-16 22:35:30 +09:00
Tatsuhiro Tsujikawa
90d94953d7
Don't show metadata download and paused download in "Download Results".
2011-01-16 22:20:29 +09:00
Tatsuhiro Tsujikawa
9fe35495fd
Fixed doc
2011-01-16 21:16:56 +09:00
Tatsuhiro Tsujikawa
2c3187451f
Don't pool connection if the command has multiple segments.
...
This means it did HTTP pipelined request. If this response is for the
first request, then successive response may arrived to the socket.
2011-01-16 21:05:14 +09:00
Tatsuhiro Tsujikawa
97d0b71dd4
Don't use SocketCore::isReadable() repeatedly.
...
We can know whether data is available by inspecting 2nd argument of
SocketCore::readData() because we use non-blocking I/O.
2011-01-16 21:04:31 +09:00
Tatsuhiro Tsujikawa
63fe7874da
Handle the situation when remote server returns Connection: close
...
after several pipelined requests.
We call Request::setMaxPipelinedRequest(1) if Connection: close is
received. Also call Request::supportsPersistentConnection(true) and
Request::setMaxPipelinedRequest(1) when closing the connection.
2011-01-16 18:12:14 +09:00
Tatsuhiro Tsujikawa
b2f27e6548
Check !SocketRecvBuffer::bufferEmpty() in ctor.
...
Also treat !SocketRecvBuffer::bufferEmpty() as data is available.
2011-01-16 17:52:18 +09:00
Tatsuhiro Tsujikawa
e60181d1ad
Removed SocketCore::peekData()
2011-01-16 17:41:17 +09:00
Tatsuhiro Tsujikawa
629099d40d
Eliminated SocketCore::peekData() from HttpServer.
2011-01-16 17:27:01 +09:00
Tatsuhiro Tsujikawa
d030dd5a3f
Code cleanup
2011-01-16 17:26:46 +09:00
Tatsuhiro Tsujikawa
ea1b4b3ee5
Eliminated SocketCore::peekData() form HTTP/FTP downloads.
...
We introduced SocketRecvBuffer which buffers received bytes. Since
HTTP response header and response body are divided with \r\n, we have
to buffer up several bytes to find this delimiter. We use
SocketRecvBuffer to hold these bytes and only consumes header and
passes SocketRecvBuffer, which may contain head of response body, to
next Command. Since FTPConnection doesn't use SocketCore::peekData(),
we left it as is.
2011-01-16 16:55:41 +09:00
Tatsuhiro Tsujikawa
3e67079087
Rewritten NAT check handling.
...
We simplified PeerConnection::receiveHandshake().
DefaultBtMessageReceiver and PeerReceiverHandshakeCommand look
PeerConnection's buffer and do NAT check handling themselves.
2011-01-09 23:57:07 +09:00
Tatsuhiro Tsujikawa
1818f2ed55
Just preset IA to PeerConnection in receiver side.
...
Since initiator cannot send payload stream before reading step2 from
receiver, mseHandshake_->getBufferLength() should be 0.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
320ca4c5a1
Throw exception if more than BtHandshakeMessage::MESSAGE_LENGTH is
...
buffered when receiving handshake. Detect preset buffer without
setting prevPeek_ = true.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
e5c27034f3
Added assertion in shiftBuffer to check size.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
02ca3ed0b7
Use refreshInterval_ as timeout value of event polling.
...
refreshInterval_ is now limited less than 1000ms.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
781a4220fc
Bump up DHT version number to 3.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
a2a91a2c74
Shorten MAX_BUFFER_LENGTH of MSEHandshake.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
2ee68ec8ad
Drop connection if IA length > 68 (BtHandshakeMessage::MESSAGE_LENGTH).
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
acfb290eca
We don't need to call PeerConnection::sendPendingData() twice when
...
sending piece message.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
3020087a75
Don't try legacy BitTorrent handshake when connection did not established.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
ce2d401dce
Eliminated SocketCore::peekData from MSEHandshake.
2011-01-09 18:34:06 +09:00
Tatsuhiro Tsujikawa
c48db2cdf3
Fixed the bug that making directory fails on Windows OS.
...
On Windows, stat("C:/test/", ...) fails because of trailing "/".
To handle "\" as path separator, "\" are replaced with "/"
beforehand.
2011-01-09 18:27:08 +09:00
Tatsuhiro Tsujikawa
a9f734218f
Don't send announce_peer message with empty token in
...
DHTPeerLookupTask. Replace old node ID with new node ID when response
message is received in DHTAbstractNodeLookupTask.
2011-01-07 00:22:43 +09:00
Tatsuhiro Tsujikawa
2dba2f86a4
Drop old node from DHT routing table if node ID has changed.
2011-01-07 00:20:58 +09:00
Tatsuhiro Tsujikawa
653951f70a
Drop connection if client and peer are both seeders.
2011-01-07 00:20:10 +09:00
Tatsuhiro Tsujikawa
b6d5c389b8
Added missing include.
2011-01-07 00:19:10 +09:00
Tatsuhiro Tsujikawa
920583502e
Consider IP address and port when finding DHT node.
2011-01-07 00:14:42 +09:00
Tatsuhiro Tsujikawa
d429943d05
Fixed the bug that peer is marked as seeder whenever it sends
...
extension handshake with metadata size.
Peer must be marked as seeder only when client has not got metadata
yet. This bug causes aria2 shutdowns connection early when it gets
have message from a peer because it wrongly recognizes the peer as
seeder.
2011-01-06 22:43:34 +09:00
Tatsuhiro Tsujikawa
e818f9c8a5
Use %lx for DWORD.
...
GetLastError() returns DWORD, not C-String.
2010-12-19 00:24:36 +09:00
Tatsuhiro Tsujikawa
b04e0bae6b
Moved #include <gettext.h> inside of #ifdef ENABLE_NLS.
...
If we put #include <gettext.h> outside of #ifdef ENABLE_NLS and
--disable-nls is used, gettext(msgid) is defined as ((const char *)
(Msgid)). System header includes libintl.h regardless of
--disable-nls. For example, #include <string> will include libintl.h
through include chain. Since libintl.h refers gettext and it is
defined as non-function form, this causes compile error. User reported
gcc-4.2.2 has this problem. But gcc-4.4.5 does not suffer from this
problem.
2010-12-15 22:33:26 +09:00
Tatsuhiro Tsujikawa
5856d9252b
Updated doc.
2010-12-10 21:50:23 +09:00
Tatsuhiro Tsujikawa
94ee6d6895
Updated doc
2010-12-10 21:34:24 +09:00
Tatsuhiro Tsujikawa
9e70c5ead7
Fixed typo
2010-12-10 21:29:50 +09:00
Tatsuhiro Tsujikawa
418c04c94c
Fixed typo
2010-12-09 21:59:35 +09:00
Tatsuhiro Tsujikawa
3d0764eb9d
Added comment.
2010-12-09 21:49:00 +09:00
Tatsuhiro Tsujikawa
31ec5ddf92
Updated help text for --input-file option.
...
Removed reference of --out and --dir option. It is a regacy before we
supported many other options.
2010-12-08 22:54:20 +09:00
Tatsuhiro Tsujikawa
235b5a0848
Allocate buffer used by DownloadCommand in stack.
2010-12-08 20:41:12 +09:00
Tatsuhiro Tsujikawa
9103fb6105
Refactored PieceStatMan::updatePieceStats().
2010-12-07 01:08:11 +09:00
Tatsuhiro Tsujikawa
829803d4f5
Fixed compile error which occurs when system has posix_fallocate() but
...
does not have fallocate().
2010-12-05 23:47:35 +09:00
Tatsuhiro Tsujikawa
da8e0203b8
Removed specializations of std::swap(PeerEntry&, PeerEntry&).
...
Declaring std::swap(PeerEntry&, PeerEntry&) in class declaration
breaks under Mac OS X 10.5. They are also not used. So we simply
removed them.
2010-12-05 23:19:37 +09:00
Tatsuhiro Tsujikawa
55e49b65d3
Use errno to get error code epoll_ctl(). Using its returned value as
...
error code is simply wrong.
2010-12-05 23:13:09 +09:00
Tatsuhiro Tsujikawa
bc798ae4e6
Use Exception::getErrorCode() in main() instead of error_code::UNKNOWN_ERROR
...
unconditionally.
2010-12-05 15:13:32 +09:00
Tatsuhiro Tsujikawa
0271ec0352
Updated usage of --on-download-* options.
2010-12-04 22:42:24 +09:00
Tatsuhiro Tsujikawa
adcfffeccb
Fixed arithmetic exception when completedLength is 0.
2010-12-04 20:56:52 +09:00
Tatsuhiro Tsujikawa
f3e89651a8
Return true if completedLength is 0.
2010-12-04 20:56:14 +09:00
Tatsuhiro Tsujikawa
c5ef9dadbd
Pass the number of requested files as 2nd argument to the command specified in
...
--on-download-* hook.
As a consequence, first filename is passed as 3rd argument.
2010-12-04 19:00:48 +09:00
Tatsuhiro Tsujikawa
0cdfc3d104
Call RequestGroupMan::removeStoppedGroup() in
...
DownloadEngine::onEndOfRun() to process RequestGroup objects currently
in-progress.
With this change, --on-download-stop/error/complete hooks are properly
called for in-progress downloads when Ctrl-C is pressed.
2010-12-04 18:24:38 +09:00
Tatsuhiro Tsujikawa
567b424907
Pass first filename as 2nd argument to command specified by
...
--on-download-* option.
2010-12-04 18:14:27 +09:00