diff --git a/lib/url.c b/lib/url.c index 6b0d191707a773ab637556ca7898cda939119045..2ee6c07223471d60116c0b2c306486a0edfa6b70 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);