浏览代码

Perform SSL/TLS handshake after checking whether connection is established

Tatsuhiro Tsujikawa 13 年之前
父节点
当前提交
841395f332
共有 1 个文件被更改,包括 8 次插入9 次删除
  1. 8 9
      src/HttpRequestCommand.cc

+ 8 - 9
src/HttpRequestCommand.cc

@@ -122,21 +122,20 @@ createHttpRequest(const SharedHandle<Request>& req,
 
 bool HttpRequestCommand::executeInternal() {
   //socket->setBlockingMode();
-  if(getRequest()->getProtocol() == "https") {
-    if(!getSocket()->tlsConnect(getRequest()->getHost())) {
-      setReadCheckSocketIf(getSocket(), getSocket()->wantRead());
-      setWriteCheckSocketIf(getSocket(), getSocket()->wantWrite());
-      getDownloadEngine()->addCommand(this);
-      return false;
-    }
-  }
   if(httpConnection_->sendBufferIsEmpty()) {
     if(!checkIfConnectionEstablished
        (getSocket(), getRequest()->getConnectedHostname(),
         getRequest()->getConnectedAddr(), getRequest()->getConnectedPort())) {
       return true;
     }
-
+    if(getRequest()->getProtocol() == "https") {
+      if(!getSocket()->tlsConnect(getRequest()->getHost())) {
+        setReadCheckSocketIf(getSocket(), getSocket()->wantRead());
+        setWriteCheckSocketIf(getSocket(), getSocket()->wantWrite());
+        getDownloadEngine()->addCommand(this);
+        return false;
+      }
+    }
     if(getSegments().empty()) {
       SharedHandle<HttpRequest> httpRequest
         (createHttpRequest(getRequest(),