$OpenBSD: patch-apache1_mod_scgi_c,v 1.1 2008/05/09 08:26:53 mbalmer Exp $ --- apache1/mod_scgi.c.orig Wed Dec 5 12:19:31 2007 +++ apache1/mod_scgi.c Wed Dec 5 12:23:12 2007 @@ -266,13 +266,23 @@ static int send_headers(request_rec *r, BUFF *f) table *t; array_header *hdrs_arr, *env_arr; table_entry *hdrs, *env; - int i; + char sbuf[NI_MAXSERV]; + u_int16_t port; + int error, i; unsigned long n; log_debug(r, "sending headers"); t = ap_make_table(r->pool, 40); /* headers to send */ if (!t) return 0; + + error = getnameinfo((struct sockaddr *)&r->connection->remote_addr, + r->connection->remote_addr.ss_len, NULL, 0, sbuf, sizeof(sbuf), + NI_NUMERICSERV); + if (!error) + port = atol(sbuf); + else + port = 0; /* CONTENT_LENGTH must come first and always be present */ add_header(t, "CONTENT_LENGTH", ap_psprintf(r->pool, "%ld", r->remaining)); @@ -286,8 +296,7 @@ static int send_headers(request_rec *r, BUFF *f) ap_psprintf(r->pool, "%u", ap_get_server_port(r))); add_header(t, "REMOTE_ADDR", r->connection->remote_ip); add_header(t, "REMOTE_PORT", - ap_psprintf(r->pool, "%d", - ntohs(r->connection->remote_addr.sin_port))); + ap_psprintf(r->pool, "%d", port)); add_header(t, "REMOTE_USER", r->connection->user); add_header(t, "REQUEST_METHOD", r->method); add_header(t, "REQUEST_URI", original_uri(r));