Index: docs/manual/mod/mod_setenvif.xml =================================================================== --- docs/manual/mod/mod_setenvif.xml (revision 264763) +++ docs/manual/mod/mod_setenvif.xml (working copy) @@ -183,14 +183,6 @@ among request characteristics and a regular expression was not used for the attribute. -
  • - A reference to an extension of an SSL client certificate, located by - its object id oid. - If a non-SSL request, or in absense of the configured oid, - no variable will be set. If the oid is found multiple times, - the individual strings will be concatenated, separated by a comma ','. - The oid should reference a string-valued extension. -
  • The second argument (regex) is a SetEnvIf object_is_image xbm XBIT_PROCESSING=1
    :
    - SetEnvIf OID("2.16.840.1.113730.1.13") "(.*)" NetscapeComment=$1
    - :
    SetEnvIf ^TS* ^[a-z].* HAVE_TS
    @@ -240,10 +230,6 @@ the referring page was somewhere on the www.mydomain.com Web site.

    -

    The sixth example will set the NetscapeComment - environment variable to the string found in the corresponding - SSL client certificate field (if found).

    -

    The last example will set environment variable HAVE_TS if the request contains any headers that begin with "TS" whose values begins with any character in the Index: server/listen.c =================================================================== --- server/listen.c (revision 264763) +++ server/listen.c (working copy) @@ -346,7 +346,16 @@ return NULL; } +/* Evaluates to true if the (apr_sockaddr_t *) addr argument is the + * IPv4 match-any-address, 0.0.0.0. */ +#define IS_INADDR_ANY(addr) ((addr)->family == APR_INET \ + && (addr)->sa.sin.sin_addr.s_addr == INADDR_ANY) +/* Evaluates to true if the (apr_sockaddr_t *) addr argument is the + * IPv6 match-any-address, [::]. */ +#define IS_IN6ADDR_ANY(addr) ((addr)->family == APR_INET6 \ + && IN6_IS_ADDR_UNSPECIFIED(&(addr)->sa.sin6.sin6_addr)) + /** * Create, open, listen, and bind all sockets. * @param process The process record for the currently running server @@ -374,22 +383,43 @@ else { #if APR_HAVE_IPV6 int v6only_setting; + + /* If we have the unspecified IPv4 address (0.0.0.0) and + * the unspecified IPv6 address (::) is next, we need to + * swap the order of these in the list. We always try to + * bind to IPv6 first, then IPv4, since an IPv6 socket + * might be able to receive IPv4 packets if V6ONLY is not + * enabled, but never the other way around. */ + if (lr->next != NULL + && IS_INADDR_ANY(lr->bind_addr) + && lr->bind_addr->port == lr->next->bind_addr->port + && IS_IN6ADDR_ANY(lr->next->bind_addr)) { + /* Exchange lr and lr->next */ + ap_listen_rec *next = lr->next; + lr->next = next->next; + next->next = lr; + if (previous) { + previous->next = next; + } + else { + ap_listeners = next; + } + lr = next; + } + /* If we are trying to bind to 0.0.0.0 and the previous listener * was :: on the same port and in turn that socket does not have * the IPV6_V6ONLY flag set; we must skip the current attempt to * listen (which would generate an error). IPv4 will be handled * on the established IPv6 socket. */ - if (previous != NULL && - lr->bind_addr->family == APR_INET && - lr->bind_addr->sa.sin.sin_addr.s_addr == INADDR_ANY && - lr->bind_addr->port == previous->bind_addr->port && - previous->bind_addr->family == APR_INET6 && - IN6_IS_ADDR_UNSPECIFIED( - &previous->bind_addr->sa.sin6.sin6_addr) && - apr_socket_opt_get(previous->sd, APR_IPV6_V6ONLY, - &v6only_setting) == APR_SUCCESS && - v6only_setting == 0) { + if (previous != NULL + && IS_INADDR_ANY(lr->bind_addr) + && lr->bind_addr->port == previous->bind_addr->port + && IS_IN6ADDR_ANY(previous->bind_addr) + && apr_socket_opt_get(previous->sd, APR_IPV6_V6ONLY, + &v6only_setting) == APR_SUCCESS + && v6only_setting == 0) { /* Remove the current listener from the list */ previous->next = lr->next; @@ -407,13 +437,10 @@ * error. The user will still get a warning from make_sock * though. */ - if (lr->next != NULL && lr->bind_addr->family == APR_INET6 && - IN6_IS_ADDR_UNSPECIFIED( - &lr->bind_addr->sa.sin6.sin6_addr) && - lr->bind_addr->port == lr->next->bind_addr->port && - lr->next->bind_addr->family == APR_INET && - lr->next->bind_addr->sa.sin.sin_addr.s_addr == INADDR_ANY) { - + if (lr->next != NULL + && IS_IN6ADDR_ANY(lr->bind_addr) + && lr->bind_addr->port == lr->next->bind_addr->port + && IS_INADDR_ANY(lr->next->bind_addr)) { /* Remove the current listener from the list */ if (previous) { previous->next = lr->next; Index: build/rpm/httpd.spec.in =================================================================== --- build/rpm/httpd.spec.in (revision 264763) +++ build/rpm/httpd.spec.in (working copy) @@ -203,7 +203,6 @@ # docroot mkdir $RPM_BUILD_ROOT%{contentdir}/html rm -r $RPM_BUILD_ROOT%{contentdir}/manual/style -rm $RPM_BUILD_ROOT%{contentdir}/manual/*/*.xml # logs rmdir $RPM_BUILD_ROOT%{_sysconfdir}/httpd/logs @@ -324,6 +323,7 @@ %{_sbindir}/logresolve %{_sbindir}/httpd %{_sbindir}/httpd.worker +%{_sbindir}/httxt2dbm %{_sbindir}/apachectl %{_sbindir}/rotatelogs %attr(4510,root,%{suexec_caller}) %{_sbindir}/suexec @@ -397,6 +397,10 @@ %{_libdir}/httpd/build/mkdir.sh %changelog +* Fri Aug 26 2005 Graham Leggett 2.1.7 +- Deleting the xml doc files is no longer necessary. +- Add httxt2dbm to the sbin directory + * Sat Jul 2 2005 Graham Leggett 2.1.7-dev - Fixed complaints about unpackaged files with new config file changes. Index: support/htcacheclean.c =================================================================== --- support/htcacheclean.c (revision 264763) +++ support/htcacheclean.c (working copy) @@ -44,8 +44,8 @@ /* mod_disk_cache.c extract start */ -#define VARY_FORMAT_VERSION 1 -#define DISK_FORMAT_VERSION 2 +#define VARY_FORMAT_VERSION 3 +#define DISK_FORMAT_VERSION 4 typedef struct { /* Indicates the format of the header struct stored on-disk. */