diff options
| author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2002-11-28 12:07:15 +0000 | 
|---|---|---|
| committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2002-11-28 12:07:15 +0000 | 
| commit | d5216a4fb72b3463bb145d6efbf0c107e6836c62 (patch) | |
| tree | a975785e404c570108050c0b7a4fb3ae6fccd9c4 /lib/libfetch/http.c | |
| parent | fdff30d256e3cd6f6414902c4494b797308279aa (diff) | |
Notes
Diffstat (limited to 'lib/libfetch/http.c')
| -rw-r--r-- | lib/libfetch/http.c | 33 | 
1 files changed, 21 insertions, 12 deletions
diff --git a/lib/libfetch/http.c b/lib/libfetch/http.c index f28e2ea352ff..00f28e8768c5 100644 --- a/lib/libfetch/http.c +++ b/lib/libfetch/http.c @@ -776,10 +776,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us,  	const char *p;  	FILE *f;  	hdr_t h; -	char *host; -#ifdef INET6 -	char hbuf[MAXHOSTNAMELEN + 1]; -#endif +	char hbuf[MAXHOSTNAMELEN + 7], *host;  	direct = CHECK_FLAG('d');  	noredirect = CHECK_FLAG('A'); @@ -831,24 +828,29 @@ _http_request(struct url *URL, const char *op, struct url_stat *us,  			host = hbuf;  		}  #endif +		if (url->port != _fetch_default_port(url->scheme)) { +			if (host != hbuf) { +				strcpy(hbuf, host); +				host = hbuf; +			} +			snprintf(hbuf + strlen(hbuf), +			    sizeof(hbuf) - strlen(hbuf), ":%d", url->port); +		}  		/* send request */  		if (verbose) -			_fetch_info("requesting %s://%s:%d%s", -			    url->scheme, host, url->port, url->doc); +			_fetch_info("requesting %s://%s%s", +			    url->scheme, host, url->doc);  		if (purl) { -			_http_cmd(conn, "%s %s://%s:%d%s HTTP/1.1", -			    op, url->scheme, host, url->port, url->doc); +			_http_cmd(conn, "%s %s://%s%s HTTP/1.1", +			    op, url->scheme, host, url->doc);  		} else {  			_http_cmd(conn, "%s %s HTTP/1.1",  			    op, url->doc);  		}  		/* virtual host */ -		if (url->port == _fetch_default_port(url->scheme)) -			_http_cmd(conn, "Host: %s", host); -		else -			_http_cmd(conn, "Host: %s:%d", host, url->port); +		_http_cmd(conn, "Host: %s", host);  		/* proxy authorization */  		if (purl) { @@ -874,6 +876,13 @@ _http_request(struct url *URL, const char *op, struct url_stat *us,  		}  		/* other headers */ +		if ((p = getenv("HTTP_REFERER")) != NULL && *p != '\0') { +			if (strcasecmp(p, "auto") == 0) +				_http_cmd(conn, "Referer: %s://%s%s", +				    url->scheme, host, url->doc); +			else +				_http_cmd(conn, "Referer: %s", p); +		}  		if ((p = getenv("HTTP_USER_AGENT")) != NULL && *p != '\0')  			_http_cmd(conn, "User-Agent: %s", p);  		else  | 
