Просмотр исходного кода

FTP PASV: fixed IPv6 support.

If fake FTP URI cannot be parsed (this should not happen), throw
exception.
Tatsuhiro Tsujikawa 14 лет назад
Родитель
Сommit
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);