Commit b528bde4 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

conn->bits.tcpconnect now keeps track of if this connection is connected

or not
parent 57572e55
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -380,8 +380,8 @@ CURLcode Curl_is_connected(struct connectdata *conn,
      return CURLE_OPERATION_TIMEOUTED;
    }
  }
  if(conn->protocol & PROT_FILE) {
    /* we are connected, awesome! */
  if(conn->bits.tcpconnect) {
    /* we are connected already! */
    *connected = TRUE;
    return CURLE_OK;
  }
+15 −1
Original line number Diff line number Diff line
@@ -1677,6 +1677,12 @@ CURLcode Curl_protocol_connect(struct connectdata *conn,
  struct SessionHandle *data = conn->data;
  CURLcode result=CURLE_OK;
  
  if(conn->bits.tcpconnect)
    /* We already are connected, get back. This may happen when the connect
       worked fine in the first call, like when we connect to a local server
       or proxy. */
    return CURLE_OK;

  Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */

  if(data->set.verbose)
@@ -2299,6 +2305,7 @@ static CURLcode CreateConnection(struct SessionHandle *data,

    /* Setup a "faked" transfer that'll do nothing */
    if(CURLE_OK == result) {
      conn->bits.tcpconnect = TRUE; /* we are "connected */
      result = Curl_Transfer(conn, -1, -1, FALSE, NULL, /* no download */
                             -1, NULL); /* no upload */
    }
@@ -2795,14 +2802,21 @@ static CURLcode CreateConnection(struct SessionHandle *data,
    /* Connect only if not already connected! */
    result = ConnectPlease(conn, hostaddr, &connected);

    if(connected)
    if(connected) {
      result = Curl_protocol_connect(conn, hostaddr);
      if(CURLE_OK == result)
        conn->bits.tcpconnect = TRUE;
    }
    else
      conn->bits.tcpconnect = FALSE;


    if(CURLE_OK != result)
      return result;
  }
  else {
    Curl_pgrsTime(data, TIMER_CONNECT); /* we're connected already */
    conn->bits.tcpconnect = TRUE;
    if(data->set.verbose)
      verboseconnect(conn, hostaddr);
  }
+3 −0
Original line number Diff line number Diff line
@@ -243,6 +243,9 @@ struct ConnectBits {
  bool forbidchunk;   /* used only to explicitly forbid chunk-upload for
                         specific upload buffers. See readmoredata() in
                         http.c for details. */
  bool tcpconnect;    /* the tcp stream (or simimlar) is connected, this
                         is set the first time on the first connect function
                         call */
};

/*