made CURLOPT_HTTPPROXYTUNNEL work for plain HTTP as well
This commit is contained in:
parent
a18d41a463
commit
05f3ca880f
29
lib/http.c
29
lib/http.c
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user