Return-Path: Delivered-To: apache-cvs-archive@hyperreal.org Received: (qmail 29180 invoked by uid 6000); 18 Feb 1998 11:59:23 -0000 Received: (qmail 29173 invoked by alias); 18 Feb 1998 11:59:22 -0000 Delivered-To: apache-1.3-cvs@hyperreal.org Received: (qmail 29171 invoked by uid 143); 18 Feb 1998 11:59:21 -0000 Date: 18 Feb 1998 11:59:21 -0000 Message-ID: <19980218115921.29170.qmail@hyperreal.org> From: dgaudet@hyperreal.org To: apache-1.3-cvs@hyperreal.org Subject: cvs commit: apache-1.3/src/main http_protocol.c Sender: apache-cvs-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org dgaudet 98/02/18 03:59:21 Modified: src/main http_protocol.c Log: Fix absoluteURI problem introduced by the http_method() stuff... do a little cleanup. This isn't everything needed to get absoluteURIs working properly, they're still at least as broken as they were a week or two ago. I'm hoping Martin can get his uri parsing patch into the server, and when he does that I can finish the fixes for absoluteURIs. Revision Changes Path 1.189 +21 -10 apache-1.3/src/main/http_protocol.c Index: http_protocol.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/http_protocol.c,v retrieving revision 1.188 retrieving revision 1.189 diff -u -r1.188 -r1.189 --- http_protocol.c 1998/02/09 01:09:40 1.188 +++ http_protocol.c 1998/02/18 11:59:20 1.189 @@ -625,8 +625,8 @@ const char *check_fulluri(request_rec *r, const char *uri) { - char *name, *host, *proto; - int i, plen; + char *host, *proto, *slash, *colon; + int plen; unsigned port; /* This routine parses full URLs, if they match the server */ @@ -635,18 +635,29 @@ if (strncasecmp(uri, proto, plen) || strncasecmp(uri + plen, "://", 3)) return uri; - name = pstrdup(r->pool, uri + plen); + host = pstrdup(r->pool, uri + plen + 3); /* Find the hostname, assuming a valid request */ - i = ind(name, '/'); - name[i] = '\0'; + slash = strchr(host, '/'); + if (slash) { + *slash = 0; + } + else { + slash = host + strlen(host); + } /* Find the port */ - host = getword_nc(r->pool, &name, ':'); - if (*name) - port = atoi(name); - else + colon = strchr(host, ':'); + if (colon) { + *colon = '\0'; + port = atoi(colon+1); + if (port == 0) { + return uri; + } + } + else { port = default_port(r); + } /* Make sure ports patch */ if (port != r->server->port) @@ -654,7 +665,7 @@ /* Save it for later use */ r->hostname = pstrdup(r->pool, host); - r->hostlen = plen + 3 + i; + r->hostlen = plen + 3 + slash - host; /* The easy cases first */ if (!strcasecmp(host, r->server->server_hostname)) {