dgaudet 98/01/31 20:54:48
Modified: src CHANGES
src/main http_vhost.c
Log:
Fix a bug I introduced with http_vhost.c... r->hostname is supposed to
always have :port removed from it.
Revision Changes Path
1.609 +3 -0 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.608
retrieving revision 1.609
diff -u -r1.608 -r1.609
--- CHANGES 1998/01/31 00:24:29 1.608
+++ CHANGES 1998/02/01 04:54:45 1.609
@@ -1,5 +1,8 @@
Changes with Apache 1.3b4
+ *) Fix a bug where r->hostname didn't have the :port stripped
+ from it. [Dean Gaudet]
+
*) Tweaked the headers_out table size, and the subprocess_env
table size guess in rename_original_environment(). Added
MAKE_TABLE_PROFILE which can help discover make_table()
1.5 +23 -11 apache-1.3/src/main/http_vhost.c
Index: http_vhost.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/main/http_vhost.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- http_vhost.c 1998/01/28 11:33:22 1.4
+++ http_vhost.c 1998/02/01 04:54:47 1.5
@@ -587,6 +587,24 @@
* run-time vhost matching functions
*/
+/* Remove :port and optionally a single trailing . from the hostname, this
+ * canonicalizes it somewhat.
+ */
+static void fix_hostname(request_rec *r)
+{
+ const char *hostname = r->hostname;
+ char *host = getword(r->pool, &hostname, ':'); /* get rid of port */
+ size_t l;
+
+ /* trim a trailing . */
+ l = strlen(host);
+ if (l > 0 && host[l-1] == '.') {
+ host[l-1] = '\0';
+ }
+
+ r->hostname = host;
+}
+
static void check_hostalias(request_rec *r)
{
/*
@@ -602,21 +620,12 @@
* - except for the addresses from the VirtualHost line, none of the
other
* names we'll match have ports associated with them
*/
- const char *hostname = r->hostname;
- char *host = getword(r->pool, &hostname, ':'); /* Get rid of port */
+ const char *host = r->hostname;
unsigned port = ntohs(r->connection->local_addr.sin_port);
server_rec *s;
server_rec *last_s;
- size_t l;
name_chain *src;
- /* trim a trailing . */
- l = strlen(host);
- if (l > 0 && host[l-1] == '.') {
- host[l-1] = '\0';
- }
-
- r->hostname = host;
last_s = NULL;
/* Recall that the name_chain is a list of server_addr_recs, some of
@@ -730,14 +739,17 @@
{
/* check if we tucked away a name_chain */
if (r->connection->vhost_lookup_data) {
- if (r->hostname || (r->hostname = table_get(r->headers_in, "Host")))
+ if (r->hostname || (r->hostname = table_get(r->headers_in, "Host")))
{
+ fix_hostname(r);
check_hostalias(r);
+ }
else
check_serverpath(r);
}
else if (!r->hostname) {
/* must set this for HTTP/1.1 support */
r->hostname = table_get(r->headers_in, "Host");
+ fix_hostname(r);
}
}