From 407583e8e275fdfb339c98086d431685024fef90 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 12 Jun 2002 22:04:25 +0000 Subject: Moved the secondarysocket cleanup. The 'conn' struct may have been cleared already at that other place. --- lib/transfer.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'lib/transfer.c') diff --git a/lib/transfer.c b/lib/transfer.c index 6e0b9e6c7..893897b05 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -1188,12 +1188,20 @@ CURLcode Curl_perform(struct SessionHandle *data) * may be free()ed in the Curl_done() function. */ newurl = conn->newurl?strdup(conn->newurl):NULL; - else + else { /* The transfer phase returned error, we mark the connection to get * closed to prevent being re-used. This is becasue we can't * possibly know if the connection is in a good shape or not now. */ conn->bits.close = TRUE; + if(-1 !=conn->secondarysocket) { + /* if we failed anywhere, we must clean up the secondary socket if + it was used */ + sclose(conn->secondarysocket); + conn->secondarysocket=-1; + } + } + /* Always run Curl_done(), even if some of the previous calls failed, but return the previous (original) error code */ res2 = Curl_done(conn); @@ -1414,13 +1422,6 @@ CURLcode Curl_perform(struct SessionHandle *data) if(!res && res2) res = res2; - if(conn && (-1 !=conn->secondarysocket)) { - /* if we failed anywhere, we must clean up the secondary socket if it - was used */ - sclose(conn->secondarysocket); - conn->secondarysocket=-1; - } - return res; } -- cgit v1.2.3