Index: src/modules/experimental/mod_whatkilledus.c =================================================================== --- src/modules/experimental/mod_whatkilledus.c (revision 122969) +++ src/modules/experimental/mod_whatkilledus.c (working copy) @@ -75,8 +75,10 @@ * client connections */ static char *log_fname; +static conn_rec *active_connection; static char *local_addr; static char *remote_addr; +static request_rec *active_request; static char *request_plus_headers; static char buffer[2048]; @@ -121,10 +123,11 @@ msg_prefix, ei->sig); write(logfd, buffer, msg_len); - if (local_addr) { + if (active_connection) { msg_len = ap_snprintf(buffer, sizeof buffer, - "%s active connection: %s->%s\n", - msg_prefix, remote_addr, local_addr); + "%s active connection: %s->%s (conn_rec %pp)\n", + msg_prefix, remote_addr, local_addr, + active_connection); } else { msg_len = ap_snprintf(buffer, sizeof buffer, @@ -134,10 +137,11 @@ write(logfd, buffer, msg_len); - if (request_plus_headers) { + if (active_request) { msg_len = ap_snprintf(buffer, sizeof buffer, - "%s active request:\n", - msg_prefix); + "%s active request (request_rec %pp):\n", + msg_prefix, + active_request); write(logfd, buffer, msg_len); write(logfd, request_plus_headers, strlen(request_plus_headers)); } @@ -170,12 +174,14 @@ static void clear_conn_info(void *ignored) { + active_connection = NULL; local_addr = remote_addr = NULL; } static void save_conn_info(request_rec *r) { conn_rec *c = r->connection; + active_connection = r->connection; local_addr = ap_psprintf(c->pool, "%pI", &c->local_addr); remote_addr = ap_psprintf(c->pool, "%pI", &c->remote_addr); @@ -184,6 +190,7 @@ static void clear_req_info(void *ignored) { + active_request = NULL; request_plus_headers = NULL; } @@ -261,6 +268,9 @@ */ int len = strlen(r->the_request); char *ch; + + active_request = r; + ap_table_do(count_headers, &len, r->headers_in, NULL); request_plus_headers = ap_palloc(r->pool, len + 2 /* 2 for the '\n' + '\0' at end */); @@ -286,7 +296,7 @@ /* save whatever info, like client, which vhost, which port * (to know SSL or not), etc. */ - if (!local_addr) { /* first request on this connection */ + if (!active_connection) { /* first request on this connection */ save_conn_info(r); }