Tatsuhiro Tsujikawa
1ad815061b
Rewritten SpeedCalc
2013-01-11 23:29:58 +09:00
Tatsuhiro Tsujikawa
c893d82867
Removed BtMessage::isSendingProgress()
...
DefaultBtMessageDispatcher::isSendingInProgress() now checks the
number of buffer entry in PeerConnection.
2013-01-11 20:26:31 +09:00
Tatsuhiro Tsujikawa
c04df672d1
Buffer up at most A2_IOV_MAX buffer entries for BtMessages
2013-01-11 18:46:36 +09:00
Tatsuhiro Tsujikawa
e0ea88ebcf
mingw32: Make NTFS sparse file on --file-allocation=trunc
2013-01-11 18:35:54 +09:00
Tatsuhiro Tsujikawa
357e4b1a77
Made SocketCore::readData() and readDataFrom() take void*
2013-01-11 17:03:59 +09:00
Tatsuhiro Tsujikawa
8ba0d58ee1
Vectorized write for SocketBuffer to avoid small packet
2013-01-11 16:50:04 +09:00
Tatsuhiro Tsujikawa
8e63bad2da
Added --save-session-interval option
...
--save-session-interval option saves error/unfinished downloads to a
file specified by --save-session option every SEC seconds. If 0 is
given, file will be saved only when aria2 exits.
2013-01-10 00:15:30 +09:00
Tatsuhiro Tsujikawa
87af7c32c6
Use request URI as referer if --referer="*" is given
2013-01-08 21:42:42 +09:00
Tatsuhiro Tsujikawa
08bed3f77f
Log warn if unknown option is found in config file or -i file
2013-01-07 22:42:28 +09:00
Tatsuhiro Tsujikawa
d6000024c0
Added --console-log-level option
...
--console-log-level option sets log level to output to console.
2013-01-05 18:48:09 +09:00
Tatsuhiro Tsujikawa
f019eae5df
mingw32: Use LANG_ENGLISH for error message
2012-12-27 00:53:22 +09:00
Tatsuhiro Tsujikawa
247084f9c3
Fixed bug that USR_BASENAME is not defined
...
In some cases, if the dirname is only "/", the basename will not be
defined (e.g., "/f"). This change fixes this bug.
2012-12-27 00:03:37 +09:00
Tatsuhiro Tsujikawa
bd671403bc
Fix compiler warning
2012-12-26 23:10:32 +09:00
Tatsuhiro Tsujikawa
c09a5a95f4
mingw32: Re-open files with read-only mode enabled on seeding
...
On Mingw32 build, if aria2 opens file with GENERIC_WRITE access right,
some programs cannot open the file aria2 is seeding. To avoid this
situation, re-open files with read-only enabled when seeding is about
to begin.
2012-12-24 23:03:19 +09:00
Tatsuhiro Tsujikawa
d13aa3a0b3
Added missing IndexedList.h to SRCS
2012-12-24 21:23:52 +09:00
Tatsuhiro Tsujikawa
616cd9e75f
Simplified RequestGroupMan::fillRequestGroupFromReserver
2012-12-22 23:37:44 +09:00
Tatsuhiro Tsujikawa
b017e80438
Changed threshold of using upper unit for abbrevSize
2012-12-19 23:58:24 +09:00
Tatsuhiro Tsujikawa
07bb779eb0
Faster deletion of RequestGroup and DownloadResult lists
2012-12-19 23:03:48 +09:00
Tatsuhiro Tsujikawa
c8565360b0
Removed unused variables
2012-12-17 00:43:13 +09:00
Tatsuhiro Tsujikawa
77a4ee4de0
Save gid option with --save-session option
2012-12-17 00:33:11 +09:00
Tatsuhiro Tsujikawa
0a4ce4fdb5
Use map to make DownloadResult lookup fast
2012-12-16 18:50:45 +09:00
Tatsuhiro Tsujikawa
0001f4cfbd
Added --gid option
...
This option sets GID manually. aria2 identifies each download by the
ID called GID. The GID must be hex string of 16 characters, thus
[0-9a-zA-Z] are allowed and leading zeros must not be stripped. The
GID all 0 is reserved and must not be used. The GID must be unique,
otherwise error is reported and the download is not added. This
option is useful when restoring the sessions saved using
--save-session option. If this option is not used, new GID is
generated by aria2.
2012-12-16 18:22:13 +09:00
Tatsuhiro Tsujikawa
b9da9d4ed3
Use 64 bits random bytes as GID
...
This change replaces the current 64 bit sequential GID with 64 bits
random bytes GID in an attempt to support persistent GID. Internally,
the GID is stored as uint64_t. For human representation and RPC
interface, GID is represented as 16 bytes hex string. For console
readout, 16 bytes are too long, so it is abbreviated to first 6 bytes.
When querying GID in RPC calls, user can speicfy the prefix of GID as
long as the prefix is shared by more than 1 GID entries.
2012-12-16 17:29:01 +09:00
Tatsuhiro Tsujikawa
04586f50b1
Fixed BitfieldMan::getOffsetCompletedLength overflow on 32-bit systems
2012-12-16 17:26:01 +09:00
Tatsuhiro Tsujikawa
de1ca6d6b8
mingw32: Use HANDLE only for MinGW32 build
2012-12-15 18:28:46 +09:00
Tatsuhiro Tsujikawa
2235743de3
Changed console readout, making it more compact
...
"SIZE:" is removed because it is obvious. SEEDING, SEED, SPD and UP
are now replaced with SEED, SD, DL and UL respectively.
2012-12-12 23:22:04 +09:00
Tatsuhiro Tsujikawa
4fdd5da27d
Compact readout when more than 1 simultaneous downloads are going on
...
If more than 1 simultaneous downloads are going on, use more compact
format in readout. Currently, at most 5 download stats are displayed.
util::abbrevSize() is rewritten to support "Gi" unit and provides more
compact abbreviation.
2012-12-11 23:40:06 +09:00
Tatsuhiro Tsujikawa
79fce29bda
Fixed segmentation fault if fp_ is NULL
2012-12-11 23:39:12 +09:00
Tatsuhiro Tsujikawa
e86fd44dc5
Console color output
...
Log level and download result string is now colored.
2012-12-08 21:48:18 +09:00
Tatsuhiro Tsujikawa
9a5fff0de0
Logger: Simplified console output and change level format in log
...
The date and time are now removed from console output. The log level
is now formatted as "[LEVEL]".
2012-12-08 19:13:59 +09:00
Tatsuhiro Tsujikawa
2364f809c3
Code cleanup: Merged successive string literals in readout
2012-12-08 19:09:03 +09:00
Tatsuhiro Tsujikawa
bf56f3c299
Check the output file is terminal or not in ctor
2012-12-08 18:38:30 +09:00
Tatsuhiro Tsujikawa
9d7bb9d01a
Release statically allocated resources for prefs and options
...
Not realeasing these resources does not hurt the correctness of the
program, but memory leak detection tool, such as valgrind, reports it
as potential memory leak. It is better to distinguish it from the real
ones.
2012-12-08 17:52:10 +09:00
Tatsuhiro Tsujikawa
901227db9b
Updated usage of --disk-cache
2012-12-07 00:44:42 +09:00
Tatsuhiro Tsujikawa
7a02177698
Start to find faster host before the number of missing segments becomes 1
...
The old implementation starts to find faster host when the number of
missing segment becomes 1. Because of --min-split-size option, before
the number of missing segment becomes 1, the number of connection
becomes 1 and it can be slow. In this case, we have to wait until the
last segment is reached. The new implementation starts to find faster
host when the remaining length is less than --min-split-size * 2, to
mitigate the problem stated above.
2012-12-07 00:32:44 +09:00
Tatsuhiro Tsujikawa
5683f2fb3e
Removed unused staticSHA1Digest
2012-12-07 00:12:22 +09:00
Tatsuhiro Tsujikawa
bec0f6dc11
Removed warning when --file-allocation=falloc is used in MinGW32 build
...
The warning was just a mistake. SetFilePointerEx + SetEndOfFile
actually allocate disk space.
2012-12-06 22:48:46 +09:00
Tatsuhiro Tsujikawa
a6b18c868b
Log size before flush
2012-12-06 03:04:41 +09:00
Tatsuhiro Tsujikawa
df5f1fe77f
Fixed bug that size_ is not updated when WrDiskCacheEntry::append is called
2012-12-06 03:04:05 +09:00
Tatsuhiro Tsujikawa
838949ab85
Append new data to the contagious cache data
...
If we receive small data (e.g., 1 or 2 bytes), cache entry becomes a
headache. To mitigate this problem, we allocate cache buffer at least
4KiB and append the data to the contagious cache data.
2012-12-06 02:23:32 +09:00
Tatsuhiro Tsujikawa
2c5e77f422
Flush cached data on checkout/cancel Segment
...
This change prevents the cached data from overlap because of BT peers.
2012-12-06 01:16:28 +09:00
Tatsuhiro Tsujikawa
56c498bcbf
Clear write cache on Segment::clear and Piece::clearAllBlock
2012-12-06 00:39:14 +09:00
Tatsuhiro Tsujikawa
9ed8502e74
Write data in 4K aligned offset in write with disk cache enabled
...
This greatly reduces disk activity especially on Win + NTFS. Not so
much difference on Linux.
2012-12-06 00:17:11 +09:00
Tatsuhiro Tsujikawa
911851debb
mingw32: Removed FSCTL_SET_SPARSE set
2012-12-03 23:07:05 +09:00
Tatsuhiro Tsujikawa
f314719618
Added --disk-cache option
...
This option enables disk cache. If SIZE is 0, the disk cache is
disabled. This feature caches the downloaded data in memory, which
grows to at most SIZE bytes. The cache storage is created for aria2
instance and shared by all downloads. The one advantage of the disk
cache is reduce the disk seek time because the data is written in
larger unit and it is reordered by the offset of the file. If the
underlying file is heavily fragmented it is not the case.
2012-12-03 01:39:10 +09:00
Tatsuhiro Tsujikawa
8ac433a8e9
Fixed compile error without SSL/TLS lib
2012-12-01 23:37:57 +09:00
Tatsuhiro Tsujikawa
2cbdd8b845
Fixed compile error without BitTorrent support
2012-12-01 21:33:25 +09:00
Tatsuhiro Tsujikawa
7e59e2dbb5
mingw32: Open file using _wsopen and added --enable-mmap support
...
I tried CreateFile but the subsequent ReadFile fails with Access
Denied if sparse file is read on NTFS. I mostly reverted previous
changes and use _wsopen with read/write share enabled instead of
CreateFile.
This change also includes --enable-mmap support for MinGW32
build. Memory mapped file may be useful for 64-bits OS and lots of
RAM. Currently, FlushViewOfFile is not called during the download, so
it is slightly vulnerable against sudden power loss. I found lots of
read when resuming download due to page fault. So for now it is useful
for the initial download. I recommend not to use
--file-allocation=prealloc with --enable-mmap for MinGW32, because it
triggers page faults even in the initial download. Anyway, the option
is experimental.
2012-12-01 19:38:30 +09:00
Tatsuhiro Tsujikawa
b95f15b462
Use Win32 API for file I/O in AbstractDiskWriter
...
Now file has been opened by aria2 is now readable by other processes.
2012-11-30 01:20:49 +09:00
Tatsuhiro Tsujikawa
74520b03f8
Set F_GLOBAL_NOCACHE for Mac OS X
2012-11-28 21:47:55 +09:00
Tatsuhiro Tsujikawa
506a9358e1
Refactored file open code
2012-11-28 21:46:44 +09:00
Tatsuhiro Tsujikawa
16e25ef4e1
Enabled TCP_NODELAY in SocketCore::establishConnection and acceptConnection
2012-11-28 00:20:43 +09:00
Tatsuhiro Tsujikawa
e781e6eac1
Made socket non-blocking mode in SocketCore::beginListen()
2012-11-28 00:15:03 +09:00
Tatsuhiro Tsujikawa
438f95abae
Made socket non-blocking mode in SocketCore::acceptConnection()
2012-11-28 00:10:32 +09:00
Tatsuhiro Tsujikawa
e0dcb942b2
Added --force-save option.
...
--force-save option saves download with --save-session option even if
the download is completed or removed. This may be useful to save
BitTorrent seeding which is recognized as completed state. The
default value is false.
2012-11-17 15:33:44 +09:00
Tatsuhiro Tsujikawa
2ee4361848
Removed unused static function util::parseParam
2012-11-17 14:38:55 +09:00
Tatsuhiro Tsujikawa
9c1fe4addd
Use array_ptr to remove try block
2012-11-15 22:05:59 +09:00
Tatsuhiro Tsujikawa
6b2f5ab1f5
SocketCore::bind now accepts const char* host instead of std::string
2012-11-15 21:09:10 +09:00
Tatsuhiro Tsujikawa
b2893f1e31
Get the correct uploaded data size
...
Subtract msgHdrLen_ from writtenLength to get the uploaded data size.
Without this correction, the seeder assumes it has uploaded more data
than it actually has.
2012-11-04 16:49:39 +09:00
Tatsuhiro Tsujikawa
31189b1222
Made return type of util::parse_content_disposition ssize_t
2012-11-01 22:54:32 +09:00
Tatsuhiro Tsujikawa
08cd68ec95
Removed Socket.h from SRCS
2012-10-31 19:07:08 +09:00
Tatsuhiro Tsujikawa
bf342a2827
Fixed compile error with mingw
2012-10-31 17:10:49 +09:00
Tatsuhiro Tsujikawa
d4e7b51eb9
Made --http-no-cache false by default
2012-10-31 16:44:28 +09:00
Tatsuhiro Tsujikawa
49e9f66c16
Use len formal parameter of util::parse_content_disposition
2012-10-31 01:24:10 +09:00
Tatsuhiro Tsujikawa
5dfd1a5af7
Fixed memory leak
2012-10-29 23:43:35 +09:00
Tatsuhiro Tsujikawa
00e3151110
Initialized member
2012-10-29 23:42:58 +09:00
Tatsuhiro Tsujikawa
f60b956a48
Removed always-true condition
2012-10-29 23:42:58 +09:00
Tatsuhiro Tsujikawa
2676bbe9c6
Initialized scalar members
2012-10-29 23:42:58 +09:00
Tatsuhiro Tsujikawa
feb548e174
Removed unused members
2012-10-29 23:42:58 +09:00
Tatsuhiro Tsujikawa
6fddbc845c
Removed dead code
2012-10-29 23:42:58 +09:00
Tatsuhiro Tsujikawa
f42199b46d
Fixed resource leak
2012-10-29 23:42:58 +09:00
Tatsuhiro Tsujikawa
8566d050ff
Reset stream format state
2012-10-29 22:39:09 +09:00
Tatsuhiro Tsujikawa
d6f73292fa
gnutls: Added more status checking when verifying peer
2012-10-27 17:46:53 +09:00
Tatsuhiro Tsujikawa
118aed9c24
Content-Disposition parser conforming to RFC 6266.
...
RFC 2231 Continuation is not supported.
2012-10-27 14:51:07 +09:00
Tatsuhiro Tsujikawa
21c3903af0
Simplified TransferStat struct
2012-10-26 00:16:20 +09:00
Tatsuhiro Tsujikawa
0ecfa19925
Reworked download/upload statistics calculation
...
The old implementation calculates download/upload statistics for a
RequestGroup by summing up all PeerStat objects. For global
statistics, those are summed together. This clearly incurs runtime
penalty and we introduced some kind of caching which updates
statistics every 250ms but it did not work right.
This change removes all these aggregation code, and instead makes
RequestGroup and RequestGroupMan objects hold NetStat object and
download/upload bytes are directly calculated by thier own NetStat.
This is far more simplar than the old way and less runtime penalty and
brings more accuracy.
2012-10-25 23:33:45 +09:00
Tatsuhiro Tsujikawa
46bdaf0e8d
Made HTTP/FTP download speed limiter more accurate
...
We have to do the same thing for BitTorrent.
2012-10-24 01:05:41 +09:00
Tatsuhiro Tsujikawa
da8086cbc9
Updated doc
2012-10-16 22:55:14 +09:00
Tatsuhiro Tsujikawa
a9c76ed35e
Added --rpc-save-upload-metadata option
...
If true is given, which is default, save the uploaded torrent or
metalink metadata in the directory specified by --dir option. The
filename consists of SHA1-hash hex string of metadata plus
extension. For torrent, the extension is '.torrent'. For metalink, it
is '.meta4'. If false is given to this option, the downloads added by
aria2.addTorrent or aria2.addMetalink will not be saved by
--save-session option.
2012-10-16 00:18:34 +09:00
Tatsuhiro Tsujikawa
4a4fec2c8c
Removed socket readability check from checkIfConnectionEstablished()
2012-10-15 23:27:51 +09:00
Tatsuhiro Tsujikawa
841395f332
Perform SSL/TLS handshake after checking whether connection is established
2012-10-15 23:26:51 +09:00
Tatsuhiro Tsujikawa
c904aa50fe
Use uri_split instead of uri::parse where appropriate
2012-10-14 18:05:34 +09:00
Tatsuhiro Tsujikawa
692f978978
Rewritten URI parser
2012-10-14 00:14:50 +09:00
Tatsuhiro Tsujikawa
5367c34de3
Fixed bug that mmap won't work if MultiDiskAdaptor is used
2012-10-08 19:13:01 +09:00
Tatsuhiro Tsujikawa
71620854c7
Moved bool members to the last to reduce structure size
2012-10-07 22:14:06 +09:00
Tatsuhiro Tsujikawa
8b0c701266
Removed trailing spaces
2012-10-01 23:52:22 +09:00
Tatsuhiro Tsujikawa
7c878d3c81
Moved implementation of SharedCount and WeakCount to cc file
2012-09-30 18:14:59 +09:00
Tatsuhiro Tsujikawa
e34d0e7ffa
Dont' return SharedHandle from HttpHeader::getRange()
2012-09-30 17:30:35 +09:00
Tatsuhiro Tsujikawa
90515dfa50
RPC over SSL/TLS transport
...
To enable RPC over SSL/TLS, specify server certificate and private key
using --rpc-certificate and --rpc-private-key options and enable
--rpc-secure option. After the encryption is enabled, use https and
wss scheme to access RPC server.
2012-09-30 00:50:14 +09:00
Tatsuhiro Tsujikawa
4b94ede268
Return ExtensionMessage subclass create return raw pointer
2012-09-28 23:40:44 +09:00
Tatsuhiro Tsujikawa
3258614033
Removed *Handle typedef
2012-09-28 23:27:46 +09:00
Tatsuhiro Tsujikawa
1c57a3ff9f
Code cleanup
2012-09-28 22:00:46 +09:00
Tatsuhiro Tsujikawa
1fdc6e0a33
Code cleanup
2012-09-28 00:26:34 +09:00
Tatsuhiro Tsujikawa
c6b76f1d32
Don't instantiate SharedHandle for DHT{Query, Response}Message subclass
2012-09-28 00:13:08 +09:00
Tatsuhiro Tsujikawa
5323afa5b2
Removed instantiation of unused BtMessageValidator
2012-09-27 23:46:34 +09:00
Tatsuhiro Tsujikawa
215d1d3d0b
Made static create function of BtMessage subclass return raw pointer
2012-09-27 23:40:25 +09:00
Tatsuhiro Tsujikawa
ae2e4cb7ff
Handle OptionHandlers as raw pointer
2012-09-27 22:45:31 +09:00
Tatsuhiro Tsujikawa
8fc5cdea02
Removed unused functions
2012-09-27 01:03:39 +09:00
Tatsuhiro Tsujikawa
89f18dde85
Use nothrow version of parseInt, parseUInt and parseLLInt
2012-09-27 00:45:32 +09:00
Tatsuhiro Tsujikawa
a879d75aaa
Don't use parseInt in cookie_helper
2012-09-27 00:16:22 +09:00
Tatsuhiro Tsujikawa
f75402739b
Rewritten ServerStatMan::load() using nothrow version of parseInt
2012-09-27 00:07:15 +09:00
Tatsuhiro Tsujikawa
8f2030da09
Removed HttpHeader::findAs{LL}Int and unused HttpResponse::{has,get}RetryAfter
2012-09-26 23:58:59 +09:00
Tatsuhiro Tsujikawa
b9f972665b
Rewritten LpdMessageReceiver::receiveMessage()
2012-09-26 23:45:58 +09:00
Tatsuhiro Tsujikawa
3a917ff695
Rewritten FtpConnection::receiveMdtmResponse without util::parseInt
2012-09-26 23:14:49 +09:00
Tatsuhiro Tsujikawa
10a68061f7
Code cleanup
2012-09-26 23:03:25 +09:00
Tatsuhiro Tsujikawa
a20e279606
Use std::string for SocketPoolEntry::options_
...
Currently, we only store 1 value for FTP download. std::map is
overkill in the this situation.
2012-09-26 23:00:05 +09:00
Tatsuhiro Tsujikawa
c13dc166de
Rewritten ExtensionMessageRegistry
2012-09-26 22:02:48 +09:00
Tatsuhiro Tsujikawa
f0000a8754
Made ExtensionMessage's NAME const char[]
2012-09-26 00:01:41 +09:00
Tatsuhiro Tsujikawa
c522d79d89
Code cleanup
2012-09-25 23:48:35 +09:00
Tatsuhiro Tsujikawa
f133091a9e
Made BufferedFile ctor take const char* args
2012-09-25 23:44:41 +09:00
Tatsuhiro Tsujikawa
c63af24c63
Made BtMessage's NAME const char[]
2012-09-25 23:28:24 +09:00
Tatsuhiro Tsujikawa
9a510ddac0
Made MetalinkMetaurl::MEDIATYPE_TORRENT const char[]
2012-09-25 23:07:23 +09:00
Tatsuhiro Tsujikawa
8788cae7e3
Removed MetalinkResource static strings
2012-09-25 23:03:19 +09:00
Tatsuhiro Tsujikawa
be77d1394e
Removed Request::PROTO_*
2012-09-25 22:41:03 +09:00
Tatsuhiro Tsujikawa
c186e93488
Code cleanup
2012-09-25 22:02:58 +09:00
Tatsuhiro Tsujikawa
c16cebbc9a
Code cleanup
2012-09-25 22:00:56 +09:00
Tatsuhiro Tsujikawa
41cb774374
Made getMethodName() of RpcMethod subclass return const char*
2012-09-25 21:57:08 +09:00
Tatsuhiro Tsujikawa
260a0b8bcb
Rewritten AnnounceList::getEventString()
2012-09-25 00:07:14 +09:00
Tatsuhiro Tsujikawa
b640b830a2
Made STATUS_STRING const char*[]
2012-09-25 00:01:00 +09:00
Tatsuhiro Tsujikawa
a8c0794640
Made DEFAULT_STRIP_CHARSET const char[]
2012-09-24 23:54:41 +09:00
Tatsuhiro Tsujikawa
656a766bb0
Rewritten ServerStatMan::load()
2012-09-24 23:35:41 +09:00
Tatsuhiro Tsujikawa
d8c44fe9e8
Use const char* instead of static const std::string
2012-09-24 23:20:43 +09:00
Tatsuhiro Tsujikawa
0144397e4b
Rewritten File::getPathSeparators()
2012-09-24 23:04:42 +09:00
Tatsuhiro Tsujikawa
d95a179876
Removed A2STR strings other than NIL
2012-09-24 23:01:08 +09:00
Tatsuhiro Tsujikawa
4423ece43d
Moved GZipDecoder to test
2012-09-24 22:38:59 +09:00
Tatsuhiro Tsujikawa
dc74ebeced
Removed unused code
2012-09-24 21:46:26 +09:00
Tatsuhiro Tsujikawa
8d8ba403fe
Removed proxy-connection from InterestingHeader
2012-09-23 22:33:15 +09:00
Tatsuhiro Tsujikawa
8b0bdacace
Don't send Proxy-Connection header field
...
It was deprecated long ago.
2012-09-23 21:51:53 +09:00
Tatsuhiro Tsujikawa
54665ff409
Removed static std::string constant in HttpHeader
...
This change also removes inspection of Proxy-Connection header field
when checking whether the remote endpoint keeps connection open.
2012-09-23 21:46:01 +09:00
Tatsuhiro Tsujikawa
dd7014a612
Store only interesting HTTP headers in HttpHeader
...
In this change, we defined HTTP header fields we are interested in.
We only store those headers in HttpHeader object. Accessing HTTP
headers in HttpHeader object is now done through enum values.
2012-09-23 20:59:34 +09:00
Tatsuhiro Tsujikawa
0b4dec0250
Increased shreshold of command-line option suggestion
2012-09-23 15:06:39 +09:00
Tatsuhiro Tsujikawa
295a62f538
Rewritten help tags and various internal flag handling in OptionHandler
...
Now help tags are defined as enum values to avoid vector of strings.
The internal flags are represented by bitmask to shrink size.
2012-09-23 14:59:05 +09:00
Tatsuhiro Tsujikawa
461a542c5e
Rewritten DownloadHandlerConstants
...
DownloadHandlerConstants was simplified. MIME type handling in Accept
header was also reworked. DownloadContext's metalinkServerContacted_
is replaced with acceptMetalink_ and its boolean value is reverted.
RequestGroup and HttpRequest now do not hold vector of accepting
types. HttpRequest has the flag acceptMetalink_ which will be set by
the same value of DownloadContext::accpetMetalink_ and if it is true,
Metalink MIME types are added to Accept header field.
2012-09-22 23:19:41 +09:00
Tatsuhiro Tsujikawa
9d294741fd
Rewritten FeatureConfig into set of functions
2012-09-22 20:56:39 +09:00
Tatsuhiro Tsujikawa
e2340efe27
Use std::vector instead of std::map for ContextAttribute objects
...
Now key for ContextAttribute object store is int instead of string.
2012-09-22 17:37:30 +09:00
Tatsuhiro Tsujikawa
0030025bb6
Don't set SNI hostname if it does not include "." for GNUTLS
2012-09-15 01:14:21 +09:00
Tatsuhiro Tsujikawa
393d0d9fbc
Disable SSL/TLS compression with OpenSSL
2012-09-15 01:13:52 +09:00
Tatsuhiro Tsujikawa
d0703a2f26
Code cleanup
2012-09-07 21:45:36 +09:00
Tatsuhiro Tsujikawa
763c7a0aa0
Pause download even if download is completed
...
This allows to pause and unpause BitTorrent seed.
2012-09-07 01:40:40 +09:00
Tatsuhiro Tsujikawa
f6c7aaa1cd
Use execlp() instead of execl()
2012-09-07 01:28:53 +09:00
Tatsuhiro Tsujikawa
2148cbaf1d
Fixed compile error without XML library
2012-09-02 21:04:36 +09:00
Tatsuhiro Tsujikawa
e2bf627b17
Ensure that num of commands is 0 before processing tracker response
2012-09-02 17:43:26 +09:00
Tatsuhiro Tsujikawa
3c39931566
Remove trailing white spaces
2012-09-02 17:40:11 +09:00
Tatsuhiro Tsujikawa
2a51949132
Catch exception from Socket::getPeerInfo() when pooling connection
...
Socket::getPeerInfo() may fail if its TCP connection has already
disconnected. In this case, we log this error. The success or failure
of pooling connection should not affect the later execution of the
program.
2012-09-02 17:35:50 +09:00
Tatsuhiro Tsujikawa
9840955798
Removed trailing white spaces
2012-09-01 20:54:07 +09:00
Tatsuhiro Tsujikawa
086c5701e1
Updated doc
2012-09-01 20:53:38 +09:00
Tatsuhiro Tsujikawa
ce5c016066
Cleared pre and post download handlers from BitTorrent tracker request
2012-09-01 00:53:30 +09:00
Tatsuhiro Tsujikawa
b336725ca0
Don't check control file existence if isPreLocalFileCheckEnabled() == false
2012-08-31 23:40:32 +09:00
Tatsuhiro Tsujikawa
0bbda43385
Fixed assertion error if --retry-wait is used
...
In CreateRequestCommand, if Request object returned from getRequest()
is still sleeping, CreateRequestCommand pools it back but still holds
its reference. This makes assertion error in
UnknownLengthPieceStroage::hasMissingUnusedPiece() from
AbstractCommand::execute().
2012-08-31 22:31:31 +09:00
Tatsuhiro Tsujikawa
d734ff7d29
Added new file allocation method called 'trunc'
...
--file-allocation option can now take new value 'trunc'. 'trunc' uses
ftruncate() system call or platform-specific counterpart to truncate a
file to a specified length.
2012-08-12 16:52:53 +09:00
Tatsuhiro Tsujikawa
e2fcd6d72c
Use enum to select file allocation method
2012-08-11 23:38:58 +09:00
Tatsuhiro Tsujikawa
8f1049c15f
Fixed assertion in removeRequestGroupIndex()
2012-08-03 00:27:03 +09:00
Tatsuhiro Tsujikawa
2795176d79
Add GID => RequestGroup index for faster access to RequestGroup
2012-07-31 23:55:51 +09:00
Tatsuhiro Tsujikawa
329a17b3f9
Removed tailing whitespaces
2012-07-31 21:26:59 +09:00
Tatsuhiro Tsujikawa
3465906969
Added missing sources to SRCS
2012-07-30 22:31:09 +09:00
Tatsuhiro Tsujikawa
c1ddf34e4b
Specify torrent file explicitly in createRequestGroupForBitTorrent()
2012-07-26 21:20:08 +09:00
Tatsuhiro Tsujikawa
01e1fdaf49
Parse torrent file on the fly if --follow-torrent=mem is given
...
In this changes, Bencode parser in bencode2 is removed and the request
is delegated to BencodeParser.
2012-07-26 21:07:10 +09:00
Tatsuhiro Tsujikawa
7176107414
BencodeParser: fixed parser failure due to the uninitialized variables
2012-07-26 20:42:02 +09:00
Tatsuhiro Tsujikawa
8311d6ef87
Added stream Bencode parser
2012-07-24 23:50:06 +09:00
Tatsuhiro Tsujikawa
9620bb0a6d
Fix off by 1 error in JsonParser::parseUpdate() return value
2012-07-24 23:47:18 +09:00
Tatsuhiro Tsujikawa
2684db766d
Fix Android build
2012-07-24 00:05:18 +09:00
Tatsuhiro Tsujikawa
f6b2c3c080
Rewritten ExpatXmlParser
...
Put common elements in both Xml2XmlParser and ExpatXmlParser in
XmlParser.
2012-07-23 23:41:33 +09:00
Tatsuhiro Tsujikawa
4b57106a17
Check sum of file length does not exceed INT64_MAX
...
With BitTorrent or Metalink (metaurl), one RequestGroup can contain
multiple files. In this change, ensure that the sum of thoese files
must be equal or less than INT64_MAX.
2012-07-23 21:57:02 +09:00
Tatsuhiro Tsujikawa
860f4dd06a
Use int64_t instead of off_t
...
Using off_t, at least, in DiskAdaptor layer is problematic because
torrent can contain under 2GiB files but total sum of those files may
exceed 2GiB limit, which makes off_t overflow in 32 bit system without
large file support. So we use int64_t in API. We'll check the file
length before download so that it does not exceed max off_t.
2012-07-23 21:42:47 +09:00
Tatsuhiro Tsujikawa
f56743b083
Parse WebSocket RPC request on the fly without buffering
2012-07-15 00:24:59 +09:00
Tatsuhiro Tsujikawa
7100b1b9ca
Parse HTTP RPC request on the fly without buffering
2012-07-14 18:59:56 +09:00
Tatsuhiro Tsujikawa
5352d76d4f
Added reset() API to ParserStateMachine
...
Not unittested
2012-07-13 00:53:56 +09:00
Tatsuhiro Tsujikawa
70685bd233
Rewritten Xml2XmlParser
...
Now it is push parser + utility function for file parsing.
2012-07-11 23:20:48 +09:00
Tatsuhiro Tsujikawa
cd67e27ca4
Check structure depth when parsing JSON
2012-07-11 23:20:20 +09:00
Tatsuhiro Tsujikawa
57b46d5123
Added streaming parser for structured data format.
...
Added JSON streaming parser. Note that currently JSON parser ignores
frac and exp parts of number construct.
2012-07-10 01:42:42 +09:00
Tatsuhiro Tsujikawa
e3b8c92434
Added TLS SNI support
2012-07-06 23:07:10 +09:00
Tatsuhiro Tsujikawa
b00ed1aa30
More http header parser tests
2012-07-06 00:57:18 +09:00
Tatsuhiro Tsujikawa
f04090199f
Rewritten timegm replacement function
...
The algorithm is based on Python 2.7 calendar.timegm.
2012-07-06 00:34:37 +09:00
Tatsuhiro Tsujikawa
4046f27ea9
Use system-wide certificates for SSL
...
Use system-wide certificates for SSL. For GnuTLS it requires the
latest version, 3.0.20. OpenSSL had it for longer. This means that if
SSL library is properly configured to locate system-wide certificates
store, the user don't have to use --ca-certificate option. Also
packagers don't have to use --with-ca-bundle configure option.
Patch from Cristian Morales Vega
2012-07-05 23:22:34 +09:00
Tatsuhiro Tsujikawa
b25d8a9923
Code cleanup
2012-07-04 22:59:15 +09:00
Tatsuhiro Tsujikawa
995c07c184
Fixed base64::decode() return "" if input ends with garbase and no padding
2012-07-04 22:51:41 +09:00
Tatsuhiro Tsujikawa
aa944f4ef6
Guarded include of stdint.h and inttypes.h
2012-07-04 00:00:24 +09:00
Tatsuhiro Tsujikawa
98e1c6c580
Code cleanup
2012-07-03 21:56:26 +09:00
Sergey Zolotarev
1c39b9474e
Fixed ssize_t error on MinGW
2012-07-03 17:44:48 +06:00
Tatsuhiro Tsujikawa
5d3b6801b1
Changed default Peer ID prefix
...
The new Peer ID prefix is "A2-$MAJOR-$MINOR-$MICRO-", where $MAJOR,
$MINOR and $MICRO are the major version, the minor version and the
micro version respectively. For instance, 1.15.2 release of aria2 will
use "A2-1-15-2-".
2012-06-29 23:38:12 +09:00
Tatsuhiro Tsujikawa
0c8ec9c325
Merged Android build scripts
2012-06-29 00:51:13 +09:00
Tatsuhiro Tsujikawa
f1017d5def
Don't percent-decode filename value in Content-Disposition.
...
We only percent-decode filename* value in Content-Disposition because
the encoding is fully specified. But since filename value is not, so
we just accept it as is.
2012-06-28 23:18:50 +09:00
Tatsuhiro Tsujikawa
c30ea8adeb
Don't sum in-flight piece which does not intersect filtered ranges
...
When calculating completed length, don't sum the completed length of
piece which does not intersect filtered ranges.
2012-06-27 23:28:57 +09:00
Tatsuhiro Tsujikawa
68f225de0b
Use stack allocation+reference instead of pointer for BufferedFile
2012-06-27 01:38:27 +09:00
Tatsuhiro Tsujikawa
a6775db3ca
Fixed segmentation fault when logger failed to open log file
2012-06-27 01:38:18 +09:00
Tatsuhiro Tsujikawa
16d395779a
Removed static_cast<int64>()s where they are unnecessary
2012-06-25 23:44:52 +09:00
Tatsuhiro Tsujikawa
1b874268a0
Use int64_t instead of off_t
...
Some classes such as DiskAdaptor, DiskWriter, FileAllocationIterator
and ChecksumValidator are left unchanged.
2012-06-25 23:35:24 +09:00
Tatsuhiro Tsujikawa
4b03634f36
Use PRId64 for int64_t format specifier
2012-06-25 22:43:33 +09:00
Tatsuhiro Tsujikawa
3620d271af
Process as many messages as possible in recv buffer
2012-06-25 21:37:55 +09:00
Tatsuhiro Tsujikawa
e816c5eee4
Rewritten PeerConnection::receiveMessage()
...
The old implementation calls at least 2 read(2) (4bytes length and
payload) to receive the message. This change will read as many bytes
as possible in one read(2) call. BtPieceMessage::data_ is now just a
const pointer to the internal buffer of PeerConnection.
2012-06-25 21:35:52 +09:00
Tatsuhiro Tsujikawa
73b75186c7
Handle the case when MINGW32 vsnprintf returns -1
...
MINGW32 vsnprintf returns -1 if output is truncated. Increased buffer
for vsnprintf in WinConsoleFile and fmt.
2012-06-24 16:56:34 +09:00
Tatsuhiro Tsujikawa
96720b297d
Added --enable-mmap option.
...
If this option is used, map files into memory using mmap(2). This
option is experimental.
2012-06-24 16:28:04 +09:00
Tatsuhiro Tsujikawa
38426d744b
Code cleanup
2012-06-23 17:50:27 +09:00
Tatsuhiro Tsujikawa
5fc1b1ad29
Rewritten HTTP header parser
2012-06-23 17:34:20 +09:00
Tatsuhiro Tsujikawa
5a0a62c5f4
Added CORS preflight request support.
...
This change is based on the patch from binux.
2012-06-23 16:26:17 +09:00
Tatsuhiro Tsujikawa
9ba65aea1d
Rewritten ChunkedDecodingStreamFilter
2012-06-18 23:42:46 +09:00
Tatsuhiro Tsujikawa
afcd95dec7
Return appropriate HTTP status code on RPC failure.
...
In this change, we return 404 if the request path is neither /json-rpc
nor /rpc. If XML feature is not enabled and /rpc is requested, return
404. If XML parser failed, return 400. JSON parser failure has been
handled well in the existing code.
2012-05-19 18:36:57 +09:00
Tatsuhiro Tsujikawa
68eb1b6737
Ignore unacceptable options in RPC request instead of throwing error.
...
This change allows RPC client to send same options for the different
type of downloads.
2012-05-17 22:52:39 +09:00
Tatsuhiro Tsujikawa
92c518a2ba
Moved parseAsyncDNSServers() to AsyncNameResolver.cc and refactored.
...
The parseAsyncDNSServers() now uses net::getBinAddr() internally,
which makes the function simpler. Also added unit test.
2012-05-16 23:05:09 +09:00
Tatsuhiro Tsujikawa
36051cca5e
Handle sockaddr_in.sin_len and sockaddr_in6.sin6_len
...
Check sockaddr_in.sin_len and sockaddr_in6.sin6_len are available and
assign values to them properly. This change fixes unit test error and
most error related to getnameinfo() on netbsd.
2012-05-16 22:43:25 +09:00
Tatsuhiro Tsujikawa
ca60020fa4
Removed dependency on inet_aton
...
Implemented inetPton as a replacement of inet_aton. inetPton is
implemented using net::getBinAddr.
This change fixes bug#3525424.
2012-05-14 01:17:50 +09:00
Tatsuhiro Tsujikawa
19798f09ae
Fixed typo
2012-05-12 19:33:33 +09:00
Tatsuhiro Tsujikawa
a998e32f95
Call ERR_clear_error() before OpenSSL I/O functions.
...
Use ERR_get_error() with ERR_error_string().
2012-05-08 01:02:18 +09:00
Tatsuhiro Tsujikawa
d16071d108
Fixed the bug which prevents --bt-lpd-interface from working.
...
Fixes bug#3520125
2012-04-22 18:35:43 +09:00
Tatsuhiro Tsujikawa
f5d3cd1bb0
Updated copyright year
2012-04-08 21:43:00 +09:00
Tatsuhiro Tsujikawa
aee28c8b0d
Fixed compile warning with clang
2012-04-08 19:22:23 +09:00
Tatsuhiro Tsujikawa
1e0068e4d4
WebSocket: Check keyword string in comma separeted values in HTTP
...
header field.
2012-04-08 19:00:07 +09:00
Tatsuhiro Tsujikawa
c648ca0c5c
Include common.h from a2algo.h and a2functional.h
2012-04-08 18:59:06 +09:00
Tatsuhiro Tsujikawa
52826433d9
Fixed typo
2012-04-08 17:51:01 +09:00
Tatsuhiro Tsujikawa
9e8676af2c
Disable IPv6 by default only if MinGW 32bit build.
2012-04-08 17:45:33 +09:00
Tatsuhiro Tsujikawa
d9bb24a2e0
Fixed gcc-4.7 warnings
2012-04-08 03:12:29 +09:00
Tatsuhiro Tsujikawa
fcbdecfd1e
Conditional compile for WebSocket.
...
WebSocket support depends on Message Digest support.
2012-04-08 00:50:25 +09:00
Tatsuhiro Tsujikawa
7bc2a14d9f
Fixed compile error without BitTorrent support
2012-04-08 00:05:42 +09:00
Tatsuhiro Tsujikawa
ef86d760cc
Use CreateProcessW instead of CreateProcessA
2012-04-07 23:57:49 +09:00
Tatsuhiro Tsujikawa
3f7561b80c
Define HAVE_GETADDRINFO only if it is not defined in MinGW build.
2012-04-07 23:56:37 +09:00
Tatsuhiro Tsujikawa
fcb102b650
Fixed compile error with i686-w64-mingw32
2012-04-07 21:26:33 +09:00
Tatsuhiro Tsujikawa
840ca5adb6
Check availability of pwd.h
2012-04-07 15:49:22 +09:00
Tatsuhiro Tsujikawa
c7c26e67c4
Disable IPv6 for MinGW build by default
2012-04-07 15:40:33 +09:00
Tatsuhiro Tsujikawa
65a20f5070
First check there is wildcard character or not in tls hostname check.
2012-04-01 22:07:01 +09:00
Tatsuhiro Tsujikawa
b9471d7452
Compare IPAddress in commonName as string.
...
Added test for net::verifyHostname().
2012-04-01 16:42:38 +09:00
Tatsuhiro Tsujikawa
b68e0a5527
Use net::verifyHostname() with gnutls.
...
We now don't use gnutls_x509_crt_check_hostname() any more.
2012-03-31 21:21:18 +09:00
Tatsuhiro Tsujikawa
e6f04416d9
Don't use locale dependent toupper and tolower.
2012-03-31 00:06:55 +09:00
Tatsuhiro Tsujikawa
0a9abd89c6
Rewritten TLS hostname check based on RFC 6125.
2012-03-30 23:49:14 +09:00
Tatsuhiro Tsujikawa
e4e9562c92
Get the home directory of the effective user ID using getpwuid() if
...
$HOME is not defined.
2012-03-30 01:43:38 +09:00
Tatsuhiro Tsujikawa
25ef6677e9
Added hostname check described in RFC 2818 with OpenSSL.
2012-03-28 23:28:22 +09:00
Tatsuhiro Tsujikawa
06b6bef860
Made WebSocket handshake more strict.
...
Refactored HttpServer as well.
2012-03-25 22:10:36 +09:00
Tatsuhiro Tsujikawa
8499a47d21
Added --bt-remove-unselected-file option.
...
Removes the unselected files when download is completed in
BitTorrent. To selecting files, use --select-file option. If it is not
used, all files are assumed to be selected. Please use this option
with care because it will actually remove files from your disk.
This option is default to false.
2012-03-25 19:25:43 +09:00
Tatsuhiro Tsujikawa
2b3469dad9
Use std::set for socketEntries_ and nameResolverEntries_ in PortEventPoll
2012-03-25 00:38:57 +09:00
Tatsuhiro Tsujikawa
ae393329f7
Fixed segmentation fault in open solaris in unit test.
...
This is due to the fact that the maximum value of random() in open
solaris is not RAND_MAX, but (2**31)-1.
2012-03-25 00:28:11 +09:00
Tatsuhiro Tsujikawa
4d8c17d104
Fixed compile error on open solaris
...
Fixes bug#3497518
2012-03-25 00:27:25 +09:00
Tatsuhiro Tsujikawa
d8948056b3
Use std::set for socketEntries_ and nameResolverEntries_ in KqueueEventPoll
2012-03-24 21:19:57 +09:00
Tatsuhiro Tsujikawa
eed804baaa
Use std::set instead of std::deque if the elements are sorted and
...
insertions and deletions are frequent.
2012-03-23 01:34:37 +09:00
Tatsuhiro Tsujikawa
332bda83b4
Enable TCP_NODELAY for WebSocket connection.
2012-03-21 02:08:18 +09:00
Tatsuhiro Tsujikawa
0792540bf2
Prefixed notification method name with "aria2."
2012-03-21 01:35:48 +09:00
Tatsuhiro Tsujikawa
f4e2c7f060
Added JSON-RPC over WebSocket.
...
Wslay library must be placed under deps/wslay.
2012-03-20 21:42:09 +09:00
Tatsuhiro Tsujikawa
5bff877eae
Fixed assertion failure if Chunked encoding along with Content-Length is used.
2012-03-05 12:45:05 +09:00
Tatsuhiro Tsujikawa
e73c3c53ff
Fixed clang warning and errors.
...
Test for the zero-length array with A2_ARRAY_LEN was commented out
since it is only used in unit test code and clang and old gcc 3.4.3
emit error.
2012-03-01 00:02:29 +09:00
Tatsuhiro Tsujikawa
037f1512db
Added BufferedFile::getLine() to make reading one line more flexible.
...
Fixes bug#3495336
2012-02-29 02:50:12 +09:00
Tatsuhiro Tsujikawa
c63a524a88
Added .gitignore files
2012-02-27 21:49:01 +09:00
Tatsuhiro Tsujikawa
f4e0eae904
Added checkRequiredInteger() to check integer param is in valid range.
...
Ensure that fileIndex in aria2.changeUri RPC method is greater than or
equal to 1.
2012-02-26 21:49:37 +09:00
Tatsuhiro Tsujikawa
ad11d746f0
Only accepts 32 bit integer values from int and i4 elements in XML-RPC.
...
Fixed overflow in AbstractPaginationRpcMethod::getPaginationRange().
Fixes bug#3494165
2012-02-26 19:45:25 +09:00
Tatsuhiro Tsujikawa
663cfec9f6
Fixed the bug that aria2 does not listen on address given in --interface.
2012-02-22 22:45:01 +09:00
Tatsuhiro Tsujikawa
075ea06ad7
Supported Windows UNC path.
2012-02-19 21:19:11 +09:00
Tatsuhiro Tsujikawa
b7dbcea58b
Check scheme part in redirected URI more strictly.
...
The previous implementation mistakenly sees '/abspath?uri=http://foo '
as an absolute URI because it contains '://', but actually it is not.
This change checks scheme part is constructed in the allowed character
set described in RFC 3986 Section 3.1.
2012-02-15 01:40:12 +09:00
Tatsuhiro Tsujikawa
9e302b86df
Code cleanup: use empty() to check size() == 0
2012-02-12 23:21:25 +09:00
Tatsuhiro Tsujikawa
7dc2b9ff16
Allow missing params in XML-RPC request.
...
Now following request is legal:
<methodCall>
<methodName>aria2.getVersion</methodName>
</methodCall>
2012-02-12 23:13:21 +09:00
Tatsuhiro Tsujikawa
9b7e4219d9
Reserve PeerConnection's buffer capacity according to number of pieces.
...
If the number of pieces gets bigger, the length of Bitfield message
payload exceeds the initial buffer capacity of PeerConnection, which
is MAX_PAYLOAD_LEN. We expand buffer as necessary so that
PeerConnection can receive the Bitfield message.
2012-02-09 01:51:42 +09:00
Tatsuhiro Tsujikawa
f2d55f0edc
Added --deferred-input option.
...
If true is given to --deferred-input option, aria2 does not read all
URIs and options from file specified by -i option at startup, but it
reads one by one when it needs later. This may reduce memory usage if
input file contains a lot of URIs to download. If false is given,
aria2 reads all URIs and options at startup. This option defaults to
false.
2012-02-05 18:57:16 +09:00
Tatsuhiro Tsujikawa
a6803c21b5
Support network-path reference in HTTP redirect.
2012-01-11 02:17:38 +09:00
Tatsuhiro Tsujikawa
2997fa0631
Refactored splitNsName
2012-01-11 02:04:20 +09:00