Commit Graph

2582 Commits (8d8ba403fe9bd9ed5bef02e1d70dc555c5fef3c3)

Author SHA1 Message Date
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