Overview
SHA1 Hash: | 1dbf332352efea4a98c0f4570e9d52da0517648b |
---|---|
Date: | 2008-05-05 19:08:43 |
User: | drh |
Comment: | Fix the HOST: header to use the original URL, not the proxy URL. |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
Tags And Properties
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
Changes
[hide diffs]Modified src/http.c from [19e3e65418] to [6ef99f841e].
@@ -338,11 +338,11 @@ zSep = ""; }else{ zSep = "/"; } blob_appendf(&hdr, "POST %s%sxfer HTTP/1.1\r\n", g.urlPath, zSep); - blob_appendf(&hdr, "Host: %s:%d\r\n", g.urlName, g.urlPort); + blob_appendf(&hdr, "Host: %s\r\n", g.urlHostname); if( g.fHttpTrace ){ blob_appendf(&hdr, "Content-Type: application/x-fossil-debug\r\n"); }else{ blob_appendf(&hdr, "Content-Type: application/x-fossil\r\n"); }
Modified src/main.c from [e12b36e51e] to [54f94155e2].
@@ -71,10 +71,11 @@ int *aCommitFile; int urlIsFile; /* True if a "file:" url */ char *urlName; /* Hostname for http: or filename for file: */ + char *urlHostname; /* The HOST: parameter on http headers */ int urlPort; /* TCP port number for http: */ char *urlPath; /* Pathname for http: */ char *urlUser; /* User id for http: */ char *urlPasswd; /* Password for http: */ char *urlCanonical; /* Canonical representation of the URL */
Modified src/url.c from [51a49c89b2] to [8c4adf4994].
@@ -67,12 +67,14 @@ i++; 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); g.urlCanonical = mprintf("http://%T:%d%T", g.urlName, g.urlPort, g.urlPath); @@ -111,21 +113,29 @@ /* ** 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 ** to the proxy server. @@ -135,10 +145,12 @@ if( zProxy==0 || zProxy[0] || is_false(zProxy) ){ 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; } }