made CURLOPT_HTTPPROXYTUNNEL work for plain HTTP as well

This commit is contained in:
Daniel Stenberg 2001-11-12 14:08:41 +00:00
parent a18d41a463
commit 05f3ca880f
3 changed files with 18 additions and 18 deletions

View File

@ -398,19 +398,22 @@ CURLcode Curl_http_connect(struct connectdata *conn)
* us to the host we want to talk to. Only after the connect * us to the host we want to talk to. Only after the connect
* has occured, can we start talking SSL * has occured, can we start talking SSL
*/ */
if (conn->protocol & PROT_HTTPS) {
if (data->change.proxy) { if(data->change.proxy &&
/* HTTPS through a proxy can only be done with a tunnel */ ((conn->protocol & PROT_HTTPS) || data->set.tunnel_thru_httpproxy)) {
result = Curl_ConnectHTTPProxyTunnel(conn, conn->firstsocket,
conn->hostname, conn->remote_port); /* either HTTPS over proxy, OR explicitly asked for a tunnel */
if(CURLE_OK != result) result = Curl_ConnectHTTPProxyTunnel(conn, conn->firstsocket,
conn->hostname, conn->remote_port);
if(CURLE_OK != result)
return result;
if(conn->protocol & PROT_HTTPS) {
/* now, perform the SSL initialization for this socket */
result = Curl_SSLConnect(conn);
if(result)
return result; return result;
} }
/* now, perform the SSL initialization for this socket */
result = Curl_SSLConnect(conn);
if(result)
return result;
} }
if(conn->bits.user_passwd && !data->state.this_is_a_follow) { if(conn->bits.user_passwd && !data->state.this_is_a_follow) {
@ -530,7 +533,9 @@ CURLcode Curl_http(struct connectdata *conn)
host, ppath, host, ppath,
conn->protocol&PROT_HTTPS?TRUE:FALSE); conn->protocol&PROT_HTTPS?TRUE:FALSE);
} }
if ((data->change.proxy) && !(conn->protocol&PROT_HTTPS)) { if (data->change.proxy &&
!data->set.tunnel_thru_httpproxy &&
!(conn->protocol&PROT_HTTPS)) {
/* The path sent to the proxy is in fact the entire URL */ /* The path sent to the proxy is in fact the entire URL */
ppath = data->change.url; ppath = data->change.url;
} }

View File

@ -92,13 +92,7 @@
* *
****************************************************************************/ ****************************************************************************/
*
* To test:
*
* Use WIDTH, PRECISION and NUMBERED ARGUMENT combined.
*/
#include "setup.h" #include "setup.h"
#include <sys/types.h> #include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>

View File

@ -1543,6 +1543,7 @@ static CURLcode CreateConnection(struct SessionHandle *data,
conn->protocol |= PROT_HTTP; conn->protocol |= PROT_HTTP;
conn->curl_do = Curl_http; conn->curl_do = Curl_http;
conn->curl_done = Curl_http_done; conn->curl_done = Curl_http_done;
conn->curl_connect = Curl_http_connect;
} }
else if (strequal(conn->protostr, "HTTPS")) { else if (strequal(conn->protostr, "HTTPS")) {
#ifdef USE_SSLEAY #ifdef USE_SSLEAY