randy 98/02/08 15:15:35
Modified: src/main http_core.c
Log:
Fix a problem where r->server->port could be used without being
properly initialized for the active protocol.
Reviewed by: Dean Gaudet
Revision Changes Path
1.157 +13 -5 apache-1.3/src/main/http_core.c
Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -r1.156 -r1.157
--- http_core.c 1998/02/02 22:33:32 1.156
+++ http_core.c 1998/02/08 23:15:34 1.157
@@ -595,14 +595,17 @@
API_EXPORT(unsigned) get_server_port(const request_rec *r)
{
+ unsigned port;
core_dir_config *d =
(core_dir_config *)get_module_config(r->per_dir_config, &core_module);
+ port = r->server->port ? r->server->port : default_port(r);
+
if (d->use_canonical_name & 1) {
- return r->server->port;
+ return port;
}
return r->hostname ? ntohs(r->connection->local_addr.sin_port)
- : r->server->port;
+ : port;
}
API_EXPORT(char *) construct_url(pool *p, const char *uri, const request_rec
*r)
@@ -614,12 +617,17 @@
(core_dir_config *)get_module_config(r->per_dir_config, &core_module);
if (d->use_canonical_name & 1) {
- port = r->server->port;
+ port = r->server->port ? r->server->port : default_port(r);
host = r->server->server_hostname;
}
else {
- port = r->hostname ? ntohs(r->connection->local_addr.sin_port)
- : r->server->port;
+ if (r->hostname)
+ port = ntohs(r->connection->local_addr.sin_port);
+ else if (r->server->port)
+ port = r->server->port;
+ else
+ port = default_port(r);
+
host = r->hostname ? r->hostname : r->server->server_hostname;
}
if (is_default_port(port, r)) {