multi: better failed connect treatment
authorDaniel Stenberg <daniel@haxx.se>
Thu, 17 Feb 2011 22:51:43 +0000 (23:51 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 18 Feb 2011 22:01:55 +0000 (23:01 +0100)
commitd85cae922575d8966529fee364e6d611e3062a99
tree3b3e28ced7d845909fd11178992e61d29ea8db90
parent05895927f59eef2d746a1b70f40f1abd0907a474
multi: better failed connect treatment

When failing to connect the protocol during the CURLM_STATE_PROTOCONNECT
state, Curl_done() has to be called with the premature flag set TRUE as
for the pingpong protocols this can be important.

When Curl_done() is called with premature == TRUE, it needs to call
Curl_disconnect() with its 'dead_connection' argument set to TRUE as
well so that any protocol handler's disconnect function won't attempt to
use the (control) connection for anything.

This problem caused the pingpong protocols to fail to disconnect when
STARTTLS failed.

Reported by: Alona Rossen
Bug: http://curl.haxx.se/mail/lib-2011-02/0195.html
lib/multi.c
lib/url.c