Commit 05f3ca88 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

made CURLOPT_HTTPPROXYTUNNEL work for plain HTTP as well

parent a18d41a4
Loading
Loading
Loading
Loading
+17 −12
Original line number Diff line number Diff line
@@ -398,20 +398,23 @@ CURLcode Curl_http_connect(struct connectdata *conn)
   * us to the host we want to talk to.  Only after the connect
   * has occured, can we start talking SSL
   */
  if (conn->protocol & PROT_HTTPS) {
    if (data->change.proxy) {
      /* HTTPS through a proxy can only be done with a tunnel */

  if(data->change.proxy &&
     ((conn->protocol & PROT_HTTPS) || data->set.tunnel_thru_httpproxy)) {

    /* either HTTPS over proxy, OR explicitly asked for a tunnel */
    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;
    }
  }

  if(conn->bits.user_passwd && !data->state.this_is_a_follow) {
    /* Authorization: is requested, this is not a followed location, get the
@@ -530,7 +533,9 @@ CURLcode Curl_http(struct connectdata *conn)
                             host, ppath,
                             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 */
    ppath = data->change.url;
  }
+0 −6
Original line number Diff line number Diff line
@@ -92,13 +92,7 @@
 *
 ****************************************************************************/

*
 * To test:
 *
 * Use WIDTH, PRECISION and NUMBERED ARGUMENT combined.
 */
#include "setup.h"

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
+1 −0
Original line number Diff line number Diff line
@@ -1543,6 +1543,7 @@ static CURLcode CreateConnection(struct SessionHandle *data,
    conn->protocol |= PROT_HTTP;
    conn->curl_do = Curl_http;
    conn->curl_done = Curl_http_done;
    conn->curl_connect = Curl_http_connect;
  }
  else if (strequal(conn->protostr, "HTTPS")) {
#ifdef USE_SSLEAY