فهرست منبع

FTP PASV: fixed IPv6 support.

If fake FTP URI cannot be parsed (this should not happen), throw
exception.
Tatsuhiro Tsujikawa 14 سال پیش
والد
کامیت
413b61c316
1فایلهای تغییر یافته به همراه4 افزوده شده و 3 حذف شده
  1. 4 3
      src/FtpNegotiationCommand.cc

+ 4 - 3
src/FtpNegotiationCommand.cc

@@ -718,13 +718,14 @@ bool FtpNegotiationCommand::sendTunnelRequest()
     SharedHandle<Request> req(new Request());
     // Construct fake URI in order to use HttpRequest
     std::pair<std::string, uint16_t> dataAddr;
-    int family = getSocket()->getPeerInfo(dataAddr);
     uri::UriStruct us;
     us.protocol = "ftp";
     us.host = getRequest()->getHost();
     us.port = pasvPort_;
-    us.ipv6LiteralAddress = (family == AF_INET6);
-    req->setUri(uri::construct(us));
+    us.ipv6LiteralAddress = getRequest()->isIPv6LiteralAddress();
+    if(!req->setUri(uri::construct(us))) {
+      throw DL_RETRY_EX("Something wrong with FTP URI");
+    }
     httpRequest->setRequest(req);
     httpRequest->setProxyRequest(createProxyRequest());
     http_->sendProxyRequest(httpRequest);