]> granicus.if.org Git - curl/commitdiff
modified Curl_disconnect() so that it unlinks itself from the data struct,
authorDaniel Stenberg <daniel@haxx.se>
Mon, 12 Mar 2001 10:13:42 +0000 (10:13 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 12 Mar 2001 10:13:42 +0000 (10:13 +0000)
it saves me from more mistakes when the connectindex is -1 ... also, there's
no point in having its parent do it as all parents would do it anyway.

lib/url.c

index c6e19df02ec4713f9024d010e5a35041cdf5f6c3..201d35eebc4affeb1fab355ddf1b005e4d122d20 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -495,6 +495,10 @@ RETSIGTYPE alarmfunc(int signal)
 
 CURLcode Curl_disconnect(struct connectdata *conn)
 {
+  if(-1 != conn->connectindex)
+    /* unlink ourselves! */
+    conn->data->connects[conn->connectindex] = NULL;
+
   if(conn->curl_disconnect)
     /* This is set if protocol-specific cleanups should be made */
     conn->curl_disconnect(conn);
@@ -1810,13 +1814,8 @@ CURLcode Curl_connect(struct UrlData *data,
     /* We're not allowed to return failure with memory left allocated
        in the connectdata struct, free those here */
     conn = (struct connectdata *)*in_connect;
-    if(conn) {
-      int index;
-      index = conn->connectindex; /* get the index */
+    if(conn)
       Curl_disconnect(conn);      /* close the connection */
-      if(-1 != index)
-        data->connects[index]=NULL; /* clear the pointer */
-    }
   }
   return code;
 }
@@ -1824,11 +1823,8 @@ CURLcode Curl_connect(struct UrlData *data,
 
 CURLcode Curl_done(struct connectdata *conn)
 {
-  struct UrlData *data;
+  struct UrlData *data=conn->data;
   CURLcode result;
-  int index;
-
-  data = conn->data;
 
   /* this calls the protocol-specific function pointer previously set */
   if(conn->curl_done)
@@ -1840,11 +1836,8 @@ CURLcode Curl_done(struct connectdata *conn)
 
   /* if bits.close is TRUE, it means that the connection should be closed
      in spite of all our efforts to be nice */
-  if((CURLE_OK == result) && conn->bits.close) {
-    index = conn->connectindex;     /* get the index */
+  if((CURLE_OK == result) && conn->bits.close)
     result = Curl_disconnect(conn); /* close the connection */
-    data->connects[index]=NULL;     /* clear the pointer */
-  }
 
   return result;
 }