aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/url.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/url.c b/lib/url.c
index 6b0d19170..2ee6c0722 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3236,9 +3236,15 @@ CURLcode Curl_done(struct connectdata *conn)
if conn->bits.close is TRUE, it means that the connection should be
closed in spite of all our efforts to be nice, due to protocol
restrictions in our or the server's end */
- if(data->set.reuse_forbid ||
- ((CURLE_OK == result) && conn->bits.close))
- result = Curl_disconnect(conn); /* close the connection */
+ if(data->set.reuse_forbid || conn->bits.close) {
+ CURLcode res2;
+ res2 = Curl_disconnect(conn); /* close the connection */
+
+ /* If we had an error already, make sure we return that one. But
+ if we got a new error, return that. */
+ if(!result && res2)
+ result = res2;
+ }
else
infof(data, "Connection #%d left intact\n", conn->connectindex);