summaryrefslogtreecommitdiff
path: root/src/Request.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-08-30 15:05:30 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-08-30 15:05:30 +0000
commitce25b54cfe3ba23408da19fcd87539bec879b943 (patch)
treeb60b7edf6f808aee791b72ecdc64131d3d36665d /src/Request.h
parent19ae8f9d07ba6a8f1d3b6f501a01f9285b6875e9 (diff)
2009-08-31 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added support for IPv6 literal address in URI. Now aria2 can handle URI such as http://[::1]/ * src/HttpRequest.cc * src/HttpRequest.h * src/Request.cc * src/Request.h * test/HttpRequestTest.cc * test/OptionHandlerTest.cc * test/RequestTest.cc
Diffstat (limited to 'src/Request.h')
-rw-r--r--src/Request.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/Request.h b/src/Request.h
index cab16999..5c88cf62 100644
--- a/src/Request.h
+++ b/src/Request.h
@@ -41,6 +41,7 @@
#include "SharedHandle.h"
#include "PeerStat.h"
+#include "a2functional.h"
namespace aria2 {
@@ -82,6 +83,8 @@ private:
std::string _password;
+ bool _ipv6LiteralAddress;
+
SharedHandle<PeerStat> _peerStat;
bool parseUrl(const std::string& url);
@@ -116,10 +119,21 @@ public:
void setReferer(const std::string& url);
const std::string& getProtocol() const { return protocol; }
const std::string& getHost() const { return host; }
+ // Same as getHost(), but for IPv6 literal addresses, enclose them
+ // with square brackets and return.
+ std::string getURIHost() const
+ {
+ if(isIPv6LiteralAddress()) {
+ return strconcat("[", getHost(), "]");
+ } else {
+ return getHost();
+ }
+ }
uint16_t getPort() const { return port; }
const std::string& getDir() const { return dir; }
const std::string& getFile() const { return file;}
const std::string& getQuery() const { return _query; }
+ bool isIPv6LiteralAddress() const { return _ipv6LiteralAddress; }
void supportsPersistentConnection(bool f)
{