---- apache_1.3.28.orig/src/ap/ap_snprintf.c Mon Feb 3 18:13:17 2003
-+++ apache_1.3.28/src/ap/ap_snprintf.c Fri Jul 25 11:01:55 2003
-@@ -73,6 +73,7 @@
- #include <string.h>
- #include <stdlib.h>
- #include <math.h>
-+#include "sa_len.h"
- #ifdef WIN32
- #include <float.h>
- #endif
-@@ -510,6 +511,42 @@
-
-
-
-+#ifdef INET6
-+static char *conv_sockaddr(struct sockaddr *sa, char *buf_end, int *len)
-+{
-+ char *p = buf_end;
-+ char hostnamebuf[MAXHOSTNAMELEN];
-+ char portnamebuf[MAXHOSTNAMELEN];
-+ char *q;
-+ int salen;
-+
-+#ifndef SIN6_LEN
-+ salen = SA_LEN(sa);
-+#else
-+ salen = sa->sa_len;
-+#endif
-+ if (getnameinfo(sa, salen, hostnamebuf, sizeof(hostnamebuf),
-+ portnamebuf, sizeof(portnamebuf), NI_NUMERICHOST | NI_NUMERICSERV)) {
-+ strcpy(hostnamebuf, "???");
-+ strcpy(portnamebuf, "???");
-+ }
-+ if (strcmp(portnamebuf,"0") == 0)
-+ strcpy(portnamebuf, "*");
-+ q = portnamebuf + strlen(portnamebuf);
-+ while (portnamebuf < q)
-+ *--p = *--q;
-+ *--p = ':';
-+ q = hostnamebuf + strlen(hostnamebuf);
-+ while (hostnamebuf < q)
-+ *--p = *--q;
-+
-+ *len = buf_end - p;
-+ return (p);
-+}
-+#endif /*INET6*/
-+
-+
-+
- /*
- * Convert a floating point number to a string formats 'f', 'e' or 'E'.
- * The result is placed in buf, and len denotes the length of the string
-@@ -1057,6 +1094,7 @@
- /* print a struct sockaddr_in as a.b.c.d:port */
- case 'I':
- {
-+#ifndef INET6
- struct sockaddr_in *si;
-
- si = va_arg(ap, struct sockaddr_in *);
-@@ -1065,6 +1103,16 @@
- if (adjust_precision && precision < s_len)
- s_len = precision;
- }
-+#else
-+ struct sockaddr *sa;
-+
-+ sa = va_arg(ap, struct sockaddr *);
-+ if (sa != NULL) {
-+ s = conv_sockaddr(sa, &num_buf[NUM_BUF_SIZE], &s_len);
-+ if (adjust_precision && precision < s_len)
-+ s_len = precision;
-+ }
-+#endif
- else {
- s = S_NULL;
- s_len = S_NULL_LEN;
---- apache_1.3.28.orig/src/include/ap.h Mon Feb 3 18:13:17 2003
-+++ apache_1.3.28/src/include/ap.h Fri Jul 25 11:01:55 2003
-@@ -95,7 +95,8 @@
- * with some extensions. The extensions are:
- *
- * %pA takes a struct in_addr *, and prints it as a.b.c.d
-- * %pI takes a struct sockaddr_in * and prints it as a.b.c.d:port
-+ * %pI takes a struct sockaddr * and prints it as a.b.c.d:port, or
-+ * ipv6-numeric-addr:port
- * %pp takes a void * and outputs it in hex
- *
- * The %p hacks are to force gcc's printf warning code to skip
---- apache_1.3.28.orig/src/include/ap_config.h Mon May 5 13:45:49 2003
-+++ apache_1.3.28/src/include/ap_config.h Fri Jul 25 11:01:55 2003
-@@ -411,6 +411,10 @@