diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ftp.c | 3 | ||||
| -rw-r--r-- | lib/http.c | 3 | ||||
| -rw-r--r-- | lib/url.c | 12 | 
3 files changed, 11 insertions, 7 deletions
@@ -545,9 +545,6 @@ CURLcode Curl_ftp_done(struct connectdata *conn)      }    } -  free(ftp); -  data->proto.ftp=NULL; /* it is gone */ -    return CURLE_OK;  } diff --git a/lib/http.c b/lib/http.c index 54623ec6b..93ae049b1 100644 --- a/lib/http.c +++ b/lib/http.c @@ -375,9 +375,6 @@ CURLcode Curl_http_done(struct connectdata *conn)      *bytecount = http->readbytecount + http->writebytecount;    } -  free(http); -  data->proto.http=NULL; /* it is gone */ -    return CURLE_OK;  } @@ -561,6 +561,10 @@ CURLcode curl_disconnect(CURLconnect *c_connect)    struct UrlData *data = conn->data; +  if(data->proto.generic) +    free(data->proto.generic); +  data->proto.generic=NULL; /* it is gone */ +  #ifdef ENABLE_IPV6    if(conn->res) /* host name info */      freeaddrinfo(conn->res); @@ -1644,7 +1648,13 @@ CURLcode curl_do(CURLconnect *in_conn)    if(!conn || (conn->handle!= STRUCT_CONNECT)) {      return CURLE_BAD_FUNCTION_ARGUMENT;    } -  if(conn->state != CONN_INIT) { +  switch(conn->state) { +  case CONN_INIT: +  case CONN_DONE: +    /* these two states are OK */ +    break; +  default: +    /* anything else is bad */      return CURLE_BAD_CALLING_ORDER;    }  | 
