made CURLOPT_HTTPPROXYTUNNEL work for plain HTTP as well
authorDaniel Stenberg <daniel@haxx.se>
Mon, 12 Nov 2001 14:08:41 +0000 (14:08 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 12 Nov 2001 14:08:41 +0000 (14:08 +0000)
lib/http.c
lib/mprintf.c
lib/url.c

index 2fe8e08..6d1330c 100644 (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
    * 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 */
-      result = Curl_ConnectHTTPProxyTunnel(conn, conn->firstsocket,
-                                           conn->hostname, conn->remote_port);
-      if(CURLE_OK != result)
-        return result;
-    }
 
-    /* now, perform the SSL initialization for this socket */
-    result = Curl_SSLConnect(conn);
-    if(result)
+  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) {
@@ -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;
   }
index 7c42fca..7259a9a 100644 (file)
  *
  ****************************************************************************/
 
-*
- * To test:
- *
- * Use WIDTH, PRECISION and NUMBERED ARGUMENT combined.
- */
 #include "setup.h"
-
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
index 079e957..1b836c4 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -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