From cf35e2009d549bed5e94eb4b43e0d680dff1ed8d Mon Sep 17 00:00:00 2001 From: hniksic Date: Thu, 2 Mar 2000 05:34:05 -0800 Subject: [PATCH] [svn] Applied contributed patch. --- src/ChangeLog | 5 +++++ src/http.c | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7b8cae52..72eba003 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +1999-05-02 andrew deryabin + + * http.c (gethttp): Specify port in `Host' header only if it's + different from 80. + 1998-11-03 Edward J. Sabol * recur.c (recursive_retrieve): If a finite maximum depth is diff --git a/src/http.c b/src/http.c index c79e6fec..b25e0146 100644 --- a/src/http.c +++ b/src/http.c @@ -309,6 +309,8 @@ gethttp (struct urlinfo *u, struct http_stat *hs, int *dt) char *authenticate_h; char *proxyauth; char *all_headers; + char *host_port; + int host_port_len; int sock, hcount, num_written, all_length, remport, statcode; long contlen, contrange; struct urlinfo *ou; @@ -454,10 +456,19 @@ gethttp (struct urlinfo *u, struct http_stat *hs, int *dt) } remhost = ou->host; remport = ou->port; + + if (remport == 80) { + host_port = NULL; host_port_len = 0; + } + else { + host_port = (char *)alloca (numdigit (remport) + 2); + host_port_len = sprintf (host_port, ":%d", remport); + } + /* Allocate the memory for the request. */ request = (char *)alloca (strlen (command) + strlen (path) + strlen (useragent) - + strlen (remhost) + numdigit (remport) + + strlen (remhost) + host_port_len + strlen (HTTP_ACCEPT) + (referer ? strlen (referer) : 0) + (wwwauth ? strlen (wwwauth) : 0) @@ -470,11 +481,11 @@ gethttp (struct urlinfo *u, struct http_stat *hs, int *dt) sprintf (request, "\ %s %s HTTP/1.0\r\n\ User-Agent: %s\r\n\ -Host: %s:%d\r\n\ +Host: %s%s\r\n\ Accept: %s\r\n\ %s%s%s%s%s%s\r\n", - command, path, useragent, remhost, remport, HTTP_ACCEPT, - referer ? referer : "", + command, path, useragent, remhost, host_port ? host_port : "", + HTTP_ACCEPT, referer ? referer : "", wwwauth ? wwwauth : "", proxyauth ? proxyauth : "", range ? range : "",