Diff
Not logged in

Differences From:

File src/url.c part of check-in [387cbeda3f] - Honor the http_proxy environment variable as another source for the URL of the HTTP proxy if the "proxy" setting is undefined or is "off". by drh on 2008-05-05 17:30:12. [view]

To:

File src/url.c part of check-in [1dbf332352] - Fix the HOST: header to use the original URL, not the proxy URL. by drh on 2008-05-05 19:08:43. [view]

@@ -68,10 +68,12 @@
       while( (c = zUrl[i])!=0 && isdigit(c) ){
         g.urlPort = g.urlPort*10 + c - '0';
         i++;
       }
+      g.urlHostname = mprintf("%s:%d", g.urlName, g.urlPort);
     }else{
       g.urlPort = 80;
+      g.urlHostname = g.urlName;
     }
     g.urlPath = mprintf(&zUrl[i]);
     dehttpize(g.urlName);
     dehttpize(g.urlPath);
@@ -112,19 +114,27 @@
 /*
 ** COMMAND: test-urlparser
 */
 void cmd_test_urlparser(void){
+  int i;
   if( g.argc!=3 && g.argc!=4 ){
     usage("URL");
   }
   url_parse(g.argv[2]);
-  printf("g.urlIsFile    = %d\n", g.urlIsFile);
-  printf("g.urlName      = %s\n", g.urlName);
-  printf("g.urlPort      = %d\n", g.urlPort);
-  printf("g.urlPath      = %s\n", g.urlPath);
-  printf("g.urlUser      = %s\n", g.urlUser);
-  printf("g.urlPasswd    = %s\n", g.urlPasswd);
-  printf("g.urlCanonical = %s\n", g.urlCanonical);
+  for(i=0; i<2; i++){
+    printf("g.urlIsFile    = %d\n", g.urlIsFile);
+    printf("g.urlName      = %s\n", g.urlName);
+    printf("g.urlPort      = %d\n", g.urlPort);
+    printf("g.urlHostname  = %s\n", g.urlHostname);
+    printf("g.urlPath      = %s\n", g.urlPath);
+    printf("g.urlUser      = %s\n", g.urlUser);
+    printf("g.urlPasswd    = %s\n", g.urlPasswd);
+    printf("g.urlCanonical = %s\n", g.urlCanonical);
+    if( i==0 ){
+      printf("********\n");
+      url_enable_proxy("Using proxy: ");
+    }
+  }
 }
 
 /*
 ** If the "proxy" setting is defined, then change the URL to refer
@@ -136,9 +146,11 @@
     zProxy = getenv("http_proxy");
   }
   if( zProxy && zProxy[0] && !is_false(zProxy) ){
     char *zOriginalUrl = g.urlCanonical;
+    char *zOriginalHost = g.urlHostname;
     if( zMsg ) printf("%s%s\n", zMsg, zProxy);
     url_parse(zProxy);
     g.urlPath = zOriginalUrl;
+    g.urlHostname = zOriginalHost;
   }
 }