Author: covener Date: Wed May 7 17:34:36 2008 New Revision: 654348 URL: http://svn.apache.org/viewvc?rev=654348&view=rev Log: Merge r579425 from trunk: mod_log_config: Add format options for %p so that the actual local or remote port can be logged. PR: 43415 Submitted by: Adam Hasselbalch Hansen Extensively commented on and/or modified by Ruediger Pluem and Jeff Trawick Modified: httpd/httpd/branches/2.2.x/CHANGES httpd/httpd/branches/2.2.x/docs/manual/mod/mod_log_config.xml httpd/httpd/branches/2.2.x/modules/loggers/mod_log_config.c Modified: httpd/httpd/branches/2.2.x/CHANGES URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/CHANGES?rev=654348&r1=654347&r2=654348&view=diff ============================================================================== --- httpd/httpd/branches/2.2.x/CHANGES [utf-8] (original) +++ httpd/httpd/branches/2.2.x/CHANGES [utf-8] Wed May 7 17:34:36 2008 @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.2.9 + *) mod_log_config: Add format options for %p so that the actual local + or remote port can be logged. PR 43415. [Adam Hasselbalch Hansen + , Ruediger Pluem, Jeff Trawick] + *) mod_speling: remove regression from 1.3/2.0 behavior and drop dependency between mod_speling and AcceptPathInfo. PR 43562 [Jose Kahan ] Modified: httpd/httpd/branches/2.2.x/docs/manual/mod/mod_log_config.xml URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/docs/manual/mod/mod_log_config.xml?rev=654348&r1=654347&r2=654348&view=diff ============================================================================== --- httpd/httpd/branches/2.2.x/docs/manual/mod/mod_log_config.xml (original) +++ httpd/httpd/branches/2.2.x/docs/manual/mod/mod_log_config.xml Wed May 7 17:34:36 2008 @@ -127,6 +127,12 @@ %p The canonical port of the server serving the request + %{format}p + The canonical port of the server serving the request or the + server's actual port or the client's actual port. Valid formats + are canonical, local, or remote. + + %P The process ID of the child that serviced the request. Modified: httpd/httpd/branches/2.2.x/modules/loggers/mod_log_config.c URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/modules/loggers/mod_log_config.c?rev=654348&r1=654347&r2=654348&view=diff ============================================================================== --- httpd/httpd/branches/2.2.x/modules/loggers/mod_log_config.c (original) +++ httpd/httpd/branches/2.2.x/modules/loggers/mod_log_config.c Wed May 7 17:34:36 2008 @@ -90,7 +90,9 @@ * %...l: remote logname (from identd, if supplied) * %...{Foobar}n: The contents of note "Foobar" from another module. * %...{Foobar}o: The contents of Foobar: header line(s) in the reply. - * %...p: the port the request was served to + * %...p: the canonical port for the server + * %...{format}p: the canonical port for the server, or the actual local + * or remote port * %...P: the process ID of the child that serviced the request. * %...{format}P: the process ID or thread ID of the child/thread that * serviced the request @@ -633,8 +635,22 @@ static const char *log_server_port(request_rec *r, char *a) { - return apr_psprintf(r->pool, "%u", - r->server->port ? r->server->port : ap_default_port(r)); + apr_port_t port; + + if (*a == '\0' || !strcasecmp(a, "canonical")) { + port = r->server->port ? r->server->port : ap_default_port(r); + } + else if (!strcasecmp(a, "remote")) { + port = r->connection->remote_addr->port; + } + else if (!strcasecmp(a, "local")) { + port = r->connection->local_addr->port; + } + else { + /* bogus format */ + return a; + } + return apr_itoa(r->pool, (int)port); } /* This respects the setting of UseCanonicalName so that