create_conn: only switch protocol handler if necessary

When switching to HTTP because a HTTP proxy is being used, the existing
handler is now checked if it already is "compatible". This allows the https
handler remain while other non-http handlers will be redirected.

Bug: http://curl.haxx.se/mail/lib-2011-05/0214.html
Reported by: Jerome Robert
This commit is contained in:
Daniel Stenberg 2011-05-25 15:57:38 +02:00
Родитель 340228cc81
Коммит 017ee34bba
1 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -4812,8 +4812,11 @@ static CURLcode create_conn(struct SessionHandle *data,
/* asking for a HTTP proxy is a bit funny when HTTP is disabled... */
return CURLE_UNSUPPORTED_PROTOCOL;
#else
/* force this connection's protocol to become HTTP */
conn->handler = &Curl_handler_http;
/* force this connection's protocol to become HTTP if not already
compatible */
if(!(conn->handler->protocol & CURLPROTO_HTTP))
conn->handler = &Curl_handler_http;
conn->bits.httpproxy = TRUE;
#endif
}