diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-01-10 16:10:57 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-01-10 16:10:57 +0900 |
| commit | bf9d99f291c9514cb4fe6bac4484aa575b713f18 (patch) | |
| tree | 86f2061f205ad54060c7767f4620dae0686522be /src/HttpRequest.cc | |
| parent | ea4d99ea087d8f1bafa812017efa26cb90d99947 (diff) | |
Send Want-Digest as per RFC 3230
Diffstat (limited to 'src/HttpRequest.cc')
| -rw-r--r-- | src/HttpRequest.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index 5cd1248a..b8bc630e 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -52,6 +52,7 @@ #include "array_fun.h" #include "Request.h" #include "DownloadHandlerConstants.h" +#include "MessageDigest.h" namespace aria2 { @@ -66,7 +67,8 @@ HttpRequest::HttpRequest() contentEncodingEnabled_(true), acceptMetalink_(false), noCache_(true), - acceptGzip_(false) + acceptGzip_(false), + noWantDigest_(false) { } @@ -249,6 +251,24 @@ std::string HttpRequest::createRequest() builtinHds.push_back( std::make_pair("If-Modified-Since:", ifModSinceHeader_)); } + if (!noWantDigest_) { + // Send Want-Digest header field with only limited hash algorithms: + // SHA-512, SHA-256, and SHA-1. + std::string wantDigest; + if (MessageDigest::supports("sha-512")) { + wantDigest += "SHA-512;q=1, "; + } + if (MessageDigest::supports("sha-256")) { + wantDigest += "SHA-256;q=1, "; + } + if (MessageDigest::supports("sha-1")) { + wantDigest += "SHA;q=0.1, "; + } + if (!wantDigest.empty()) { + wantDigest.erase(wantDigest.size() - 2); + builtinHds.emplace_back("Want-Digest:", wantDigest); + } + } for (std::vector<std::pair<std::string, std::string>>::const_iterator i = builtinHds.begin(), eoi = builtinHds.end(); |
