1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-04 05:42:12 +03:00

64 Commits

Author SHA1 Message Date
Yann Ylavic
1e06568a28 mod_ssl: Fix deprecation warnings with openssl-3.
* mod_ssl_openssl.h:
  Make it the first openssl to be included openssl header, selecting the
  OpenSSL api based on OPENSSL_API_COMPAT eventually.

* ssl_private.h;
  Define OPENSSL_API_COMPAT to version 1.1.1 (last one supporting EGINE_ API)
  before including mod_ssl_openssl.h to enable the ENGINE_ api (TODO: switch to
  new "providers" api before the ENGINE_ api is abandonned..).
  mod_ssl.h is now implicitely included from there.
  Fix preprocessor "#define FOO (COND)" to "#if COND #define FOO 1 #else #define FOO 0".
  Define MODSSL_HAVE_ENGINE_API iff OPENSSL_API_COMPAT < 3.0 (otherwise all the
  engine features are disabled, only "builtin" is accepted).
  Define HAVE_SRP iff OPENSSL_API_COMPAT < 3.0 (no replacement for this api
  above, so it might not be implemenentedain httpd anymore at some point..).
  Define X509_get_not{Before,After} if missing to the non deprecated version.
  New modssl_set_io_callbacks() to factorize compat code for io callbacks.
  ssl_dh_GetParamFromFile() becomes modssl_dh_from_file() for openssl < 3.0 and
  modssl_dh_pkey_from_file() for openssl >= 3.0.

* mod_ssl.c, mod_ssl_ct.c, ssl_util_stapling:
  Including "ssl_private.h" only is suited/enough now.
  
* mod_ssl_ct.c, ssl_ct_log_config:
  Use EVP api with openssl >= 3 instead of the deprecated SHA256 one.

* ssl_engine_config.c(ssl_cmd_SSLCryptoDevice):
  Disabled engines (besides NULL/"builtin"/NULL) unless MODSSL_HAVE_ENGINE_API.

* ssl_engine_init:
  New compat modssl_runtime_lib_version() to address deprecated SSLeay().
  ssl_init_Engine() does nothing unless MODSSL_HAVE_ENGINE_API.
  Simplify ssl_init_server_certs() (less #ifdef-ery) with scoped local vars.
  Compat loading DH parameters and EC curve from cert.

* ssl_engine_io.c, ssl_engine_kernel.c:
  Implement common modssl_set_io_callbacks() and use it.

* ssl_engine_pphrase(modssl_load_engine_keypair):
  Depend on MODSSL_HAVE_ENGINE_API, or return ENOTIMPL.

* ssl_util.c(modssl_is_engine_id):
  No engine supported unless MODSSL_HAVE_ENGINE_API.

* ssl_util_ssl.c(modssl_dh_pkey_from_file, modssl_ec_group_from_file):
  Compat with openssl >= 3.0.
  


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908537 13f79535-47bb-0310-9956-ffa450edef68
2023-03-19 21:30:47 +00:00
Giovanni Bechis
ea2c84a0e3 release memory if needed
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1898366 13f79535-47bb-0310-9956-ffa450edef68
2022-02-24 11:39:59 +00:00
Stefan Eissing
a4f45f275b *) core/mod_proxy/mod_ssl:
Adding `outgoing` flag to conn_rec, indicating a connection is
     initiated by the server to somewhere, in contrast to incoming
     connections from clients.
     Adding 'ap_ssl_bind_outgoing()` function that marks a connection
     as outgoing and is used by mod_proxy instead of the previous
     optional function `ssl_engine_set`. This enables other SSL
     module to secure proxy connections.
     The optional functions `ssl_engine_set`, `ssl_engine_disable` and
     `ssl_proxy_enable` are now provided by the core to have backward
     compatibility with non-httpd modules that might use them. mod_ssl
     itself no longer registers these functions, but keeps them in its
     header for backward compatibility.
     The core provided optional function wrap any registered function
     like it was done for `ssl_is_ssl`.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1890605 13f79535-47bb-0310-9956-ffa450edef68
2021-06-08 14:37:44 +00:00
Stefan Eissing
8951949163 core/ap_ssl_*: changes after review by rpluem
- removed no longer needed (char*) casts when looking
   up ssl variables.
 - move 'goto cleanup;' on separate source line
 - fixed check for wrong optional function in ap_run_ssl_var_lookup
 - remove ap_bytes_t again from httpd.h and passes now ocsp
   identifier as separate const char* and apr_size_t. This
   follows more how such data is passed in the rest of the
   server.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1889009 13f79535-47bb-0310-9956-ffa450edef68
2021-04-20 12:16:05 +00:00
Stefan Eissing
db5aa786d8 *) core/mod_ssl/mod_md: adding OCSP response provisioning as core feature. This
allows modules to access and provide OCSP response data without being tied
     of each other. The data is exchanged in standard, portable formats (PEM encoded
     certificates and DER encoded responses), so that the actual SSL/crypto
     implementations used by the modules are independant of each other.
     Registration and retrieval happen in the context of a server (server_rec)
     which modules may use to decide if they are configured for this or not.
     The area of changes:
     1. core: defines 2 functions in include/http_ssl.h, so that modules may
        register a certificate, together with its issuer certificate for OCSP
        response provisioning and ask for current response data (DER bytes) later.
        Also, 2 hooks are defined that allow modules to implement this OCSP
        provisioning.
     2. mod_ssl uses the new functions, in addition to what it did already, to
        register its certificates this way. If no one is interested in providing
        OCSP, it falls back to its own (if configured) stapling implementation.
     3. mod_md registers itself at the core hooks for OCSP provisioning. Depending
        on configuration, it will accept registrations of its own certificates only,
        all certficates or none.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1888723 13f79535-47bb-0310-9956-ffa450edef68
2021-04-13 11:12:00 +00:00
Yann Ylavic
ff2de29c1e mod_ssl: destroy temporary pool on stapling_renew_response() failure.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1877549 13f79535-47bb-0310-9956-ffa450edef68
2020-05-10 12:58:26 +00:00
Yann Ylavic
f461bcf12c Add missing pool tags to help debugging.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1876599 13f79535-47bb-0310-9956-ffa450edef68
2020-04-16 12:32:33 +00:00
Yann Ylavic
8a4acde30b mod_{ssl,md}: init_stapling_status hooks should return an int.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1876549 13f79535-47bb-0310-9956-ffa450edef68
2020-04-15 12:45:42 +00:00
Yann Ylavic
f6b252e3a2 mod_ssl: Fix memory leak in stapling code. PR63687.
Free issuer's X509 in ssl_stapling_init_cert()'s early return paths.

Submitted by: icing


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1876548 13f79535-47bb-0310-9956-ffa450edef68
2020-04-15 12:25:27 +00:00
Joe Orton
11d565c3ce * modules/ssl/ssl_private.h: Define X509_up_ref and EVP_PKEY_up_ref
for OpenSSL < 1.1.

* modules/ssl/ssl_engine_kernel.c (modssl_set_cert_info):
* modules/ssl/ssl_util_stapling.c (stapling_get_issuer): 
  Use the above macros for all OpenSSL versions.

Github: closes #104


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1875702 13f79535-47bb-0310-9956-ffa450edef68
2020-03-26 11:03:54 +00:00
Ruediger Pluem
6289dfffa4 * modules/ssl/ssl_util_stapling.c (stapling_check_response) Don't send
out an OCSP response that can't be parsed.

  If the crypto/ASN library can't parse a response as 'basic OCSP'
  even if it leads with a OCSP successful status, then don't pass it
  to the client. There is nothing to say at all it isn't just garbage.
  And if other types of messages are standardized they can be added.

PR: 60182
Obtained from: e72154c75d.diff
Submitted by: <gmoniker@gmail.com>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1875356 13f79535-47bb-0310-9956-ffa450edef68
2020-03-18 11:31:20 +00:00
Ruediger Pluem
5699abfec6 * modules/ssl/ssl_util_stapling.c (stapling_check_response) Don't stop
Certificate Revoked messages.

  Certificate Revoked Responder messages don't belong to 'error' class.
  When the server receives one, it MUST be passed on to the client.
  And stored for the normal period of basic responses.

  Also don't log an error each time it is retrieved from cache,
  only once when it is retrieved from the OCSP responder.

PR: 60182
Obtained from: 7db9795f45.diff
Submitted by: <gmoniker@gmail.com>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1875355 13f79535-47bb-0310-9956-ffa450edef68
2020-03-18 11:28:40 +00:00
Yann Ylavic
200f3442dc mod_ssl: simpler "goto" logic for stapling_renew_response().
No functional change.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1874579 13f79535-47bb-0310-9956-ffa450edef68
2020-02-27 13:56:39 +00:00
Yann Ylavic
1f776332c9 mod_ssl: Fix memory leak of OCSP stapling response.
The OCSP_RESPONSE is either ignored or serialized (i2d_OCSP_RESPONSE) in the
TLS response/handshake extension, so it must be freed.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1874577 13f79535-47bb-0310-9956-ffa450edef68
2020-02-27 12:43:51 +00:00
Yann Ylavic
d84fa3a185 Revert r1874574: wrong patch.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1874575 13f79535-47bb-0310-9956-ffa450edef68
2020-02-27 12:38:41 +00:00
Yann Ylavic
a4c4586997 mod_ssl: Fix memory leak of OCSP stapling response.
The OCSP_RESPONSE is either ignored or serialized (i2d_OCSP_RESPONSE) in the
TLS response/handshake extension, so it must be freed.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1874574 13f79535-47bb-0310-9956-ffa450edef68
2020-02-27 12:34:03 +00:00
Mike Rumph
85760859ca Fix spelling errors found by codespell. [skip ci]
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1873985 13f79535-47bb-0310-9956-ffa450edef68
2020-02-13 18:15:57 +00:00
Stefan Eissing
f24bd793c4 update aplogno in recent hook changes
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1863218 13f79535-47bb-0310-9956-ffa450edef68
2019-07-17 12:57:33 +00:00
Stefan Eissing
3d90a98839 * moving the openssl related new hooks into mod_ssl_openssl.h
* chaning type parameter to openssl types
 * adding explanation of return value in get_stapling_status()
 * adding array element description for add_cert_files and add_fallback_cert_files hooks


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1862823 13f79535-47bb-0310-9956-ffa450edef68
2019-07-09 16:57:59 +00:00
Stefan Eissing
360986b191 *) mod_ssl/mod_md:
Adding 2 new hooks for init/get of OCSP stapling status information when
     other modules want to provide those. Falls back to own implementation with
     same behaviour as before.
 


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1862384 13f79535-47bb-0310-9956-ffa450edef68
2019-07-01 14:22:04 +00:00
Ruediger Pluem
62e4ea6d2c Revert r1798456
* For the time being keep on caching OCSP_RESPONSE_STATUS_TRYLATER. The effect can be limited by setting SSLStaplingErrorCacheTimeout.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1798460 13f79535-47bb-0310-9956-ffa450edef68
2017-06-12 13:15:33 +00:00
Ruediger Pluem
f926fe46ee * Only report success, if had real one.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1798457 13f79535-47bb-0310-9956-ffa450edef68
2017-06-12 12:53:38 +00:00
Ruediger Pluem
a9aa6a82a4 * Do not cache OCSP_RESPONSE_STATUS_TRYLATER.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1798456 13f79535-47bb-0310-9956-ffa450edef68
2017-06-12 12:49:06 +00:00
Ruediger Pluem
3bd26f8c6b * Mark OCSP_RESPONSE_STATUS_TRYLATER as error response
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1798455 13f79535-47bb-0310-9956-ffa450edef68
2017-06-12 12:48:30 +00:00
Rainer Jung
67b777389b Silence compiler warning:
"686: warning: 'ok' may be used uninitialized in
this function"
This is a false positive, because the value of "ok"
will only be used if stapling_get_cached_response()
sets "rsp" to non-NULL in which case it will always
have set "ok".


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1775173 13f79535-47bb-0310-9956-ffa450edef68
2016-12-19 20:36:58 +00:00
Rainer Jung
e387d3e9c7 Support for OpenSSL 1.1.0:
- X509_STORE_CTX is now opaque.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1740653 13f79535-47bb-0310-9956-ffa450edef68
2016-04-23 13:17:52 +00:00
Rainer Jung
d7639a5ad0 Support OpenSSL 1.1.0.
- use common code for OpenSSL pre-1.1.0 and
  1.1.0 where possible.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1730422 13f79535-47bb-0310-9956-ffa450edef68
2016-02-14 22:40:07 +00:00
Rainer Jung
3afb174383 Fix compiler warning when using OpenSSL 1.1.0.
The old compatibility macro check no longer works,
because those are now actual functions, so an
ifndef is not the correct check.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1729435 13f79535-47bb-0310-9956-ffa450edef68
2016-02-09 18:10:11 +00:00
Rainer Jung
8bc4871c57 Support for OpenSSL 1.1.0:
- mod_ssl
Look out for "XXX: OpenSSL 1.1.0:" for a few
open problems.

Not tested with test suite yet.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1728909 13f79535-47bb-0310-9956-ffa450edef68
2016-02-07 01:20:37 +00:00
Rainer Jung
af14d158a3 Added many log numbers to log statements that
had none.

Those were not detected by the coccinelle script.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1725485 13f79535-47bb-0310-9956-ffa450edef68
2016-01-19 12:02:41 +00:00
Rainer Jung
44ce30494e Added many log numbers to log statements that
had none.

Handled all files in modules/.

I used the coccinelle script provided by Stefan.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1725392 13f79535-47bb-0310-9956-ffa450edef68
2016-01-19 00:03:18 +00:00
Kaspar Brand
c24dab1564 insert missing LOGNO in ssl_util_stapling.c
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1713209 13f79535-47bb-0310-9956-ffa450edef68
2015-11-08 08:11:10 +00:00
Kaspar Brand
d3fd6650ad For the "SSLStaplingReturnResponderErrors off" case, make sure to only
staple responses with certificate status "good". Also avoids including
inaccurate responses when the OCSP responder is not completely up
to date in terms of the CA-issued certificates (and provides interim
"unknown" or "extended revoked" [RFC 6960] status replies).

Log a certificate status other than "good" in stapling_check_response().

Propagate the "ok" status from stapling_check_response() back via both
stapling_renew_response() and get_and_check_cached_response() to the
callback code in stapling_cb(), enabling the decision whether to include
or skip the response.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1711728 13f79535-47bb-0310-9956-ffa450edef68
2015-11-01 09:38:31 +00:00
Jeff Trawick
0027e63326 OCSP stapling: slight simplification to some internal interfaces,
add a few comments and sanity checks


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1680276 13f79535-47bb-0310-9956-ffa450edef68
2015-05-19 12:47:16 +00:00
Jeff Trawick
e4ae36a405 Follow-up to r1679032:
Fix regression in check for cached response.

(Essentially) Submitted by: ylavic


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1679192 13f79535-47bb-0310-9956-ffa450edef68
2015-05-13 12:33:38 +00:00
Jeff Trawick
9db0d19d21 mod_ssl OCSP Stapling: Don't block initial handshakes while refreshing
the OCSP response for a different certificate.  mod_ssl has an additional
global mutex, "ssl-stapling-refresh".

Not mentioned in CHANGES:

Stapling no longer uses a mutex when using a stapling cache
implementation which doesn't require it.  (A further, unrelated
code change to mod_ssl is required to allow the use of memcache 
as a stapling cache, and I haven't tested with distcache; thus
it isn't clear if this helps in practice yet.)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1679032 13f79535-47bb-0310-9956-ffa450edef68
2015-05-12 18:59:29 +00:00
Jeff Trawick
2c334bcba5 follow up to r1641077:
one bug was traded for another in r1641077; track the response
length and the cached object length separately to avoid such
confusion


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1641095 13f79535-47bb-0310-9956-ffa450edef68
2014-11-22 17:54:08 +00:00
Jeff Trawick
70b441b9df mod_ssl: Fix recognition of OCSP stapling responses that are encoded
improperly or too large.

The one byte "ok" flag stored with the response was accounted for in
the wrong condition.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1641077 13f79535-47bb-0310-9956-ffa450edef68
2014-11-22 14:51:01 +00:00
Yann Ylavic
31342ca73d Follow up to r1629372 and r1629485: ensure compatibily with OpenSSL < 1.0 (sk_OPENSSL_STRING_[num|value|pop] macros).
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1629519 13f79535-47bb-0310-9956-ffa450edef68
2014-10-05 18:36:02 +00:00
Yann Ylavic
25cb3bad84 Follow up to r1629372: ensure compatibily with OpenSSL < 1.0 (sk_OPENSSL_STRING_value).
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1629485 13f79535-47bb-0310-9956-ffa450edef68
2014-10-05 11:41:52 +00:00
Kaspar Brand
7cc90787fb Move OCSP stapling information from a per-certificate store
(ex_data attached to an X509 *) to a per-server hash which is
allocated from the pconf pool. Fixes PR 54357, PR 56919 and
a leak with the certinfo_free cleanup function (missing
OCSP_CERTID_free).

* modules/ssl/ssl_util_stapling.c: drop certinfo_free, and add
  ssl_stapling_certid_free (used with apr_pool_cleanup_register).
  Switch to a stapling_certinfo hash which is keyed by the SHA-1
  digest of the certificate's DER encoding, rework ssl_stapling_init_cert
  to only store info once per certificate (allocated from the pconf
  to the extent possible) and extend the logging.

* modules/ssl/ssl_private.h: adjust prototype for
  ssl_stapling_init_cert, replace ssl_stapling_ex_init with
  ssl_stapling_certinfo_hash_init

* modules/ssl/ssl_engine_init.c: adjust ssl_stapling_* calls

Based on initial work by Alex Bligh <alex alex.org.uk>


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1629372 13f79535-47bb-0310-9956-ffa450edef68
2014-10-04 10:58:49 +00:00
Kaspar Brand
afe9fee88c ssl_stapling_init_cert: do not return success when no responder URI is found
stapling_renew_response: abort early (before apr_uri_parse) if ocspuri is empty


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1588853 13f79535-47bb-0310-9956-ffa450edef68
2014-04-21 06:54:41 +00:00
Kaspar Brand
7d402a24ec Address a todo listed in
https://mail-archives.apache.org/mod_mbox/httpd-dev/200205.mbox/%3CPine.LNX.4.33.0205292300380.27841-100000%40mako.covalent.net%3E
"init functions should return status code rather than ssl_die()"

For diagnostic purposes, ssl_die() is still there, but instead
of abruptly exit(1)ing, it will return APR_EGENERAL to the
ssl_init_* callers in ssl_engine_init.c, and these will propagate
the status back to ssl_init_Module.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1544774 13f79535-47bb-0310-9956-ffa450edef68
2013-11-23 12:22:47 +00:00
Christophe Jaillet
8fe57f044e Typo
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1454888 13f79535-47bb-0310-9956-ffa450edef68
2013-03-10 18:00:15 +00:00
Stefan Fritsch
80ab7f95b9 Pass the server_rec to ssl_die() and use it to log a message to the main error
log, pointing to the appropriate virtual host error log


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1348660 13f79535-47bb-0310-9956-ffa450edef68
2012-06-10 21:00:39 +00:00
Kaspar Brand
9900465205 Set OPENSSL_NO_SSL_INTERN when compiling against OpenSSL 1.0.1
or later, so that mod_ssl retains binary compatibility with future
versions when internal structures are changed. Use API functions
where available, and fall back to direct access for OpenSSL up
to 1.0.0, where needed.

Remove SSL_make_ciphersuite() from ssl_util_ssl.[ch], as it was
never used by any released version of mod_ssl.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1222917 13f79535-47bb-0310-9956-ffa450edef68
2011-12-24 06:31:37 +00:00
Stefan Fritsch
26d5fb7164 Add some more log message tags
Remove some log message tags from ap_log_* calls that log lots of
different error messages, in particular the config parsing errors.
Not sure how we should handle those.

ssl_util.c: Downgrade some dynamic locking messages from level DEBUG
to TRACE1-3



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1210252 13f79535-47bb-0310-9956-ffa450edef68
2011-12-04 22:09:24 +00:00
Stefan Fritsch
92e366007c Add lots of unique tags to error log messages
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1209766 13f79535-47bb-0310-9956-ffa450edef68
2011-12-02 23:02:04 +00:00
Jim Jagielski
427c85bd23 Cleanup effort in prep for GA push:
Trim trailing whitespace... no func change



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1174751 13f79535-47bb-0310-9956-ffa450edef68
2011-09-23 13:39:32 +00:00
Stephen Henson
7c4294b796 Use correct type, need OPENSSL_STRING for >= 1.0 which doesn't exist on 0.9.8
so #define sk_OPENSSL_STRING_pop to  sk_pop on 0.9.8


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1040366 13f79535-47bb-0310-9956-ffa450edef68
2010-11-30 00:50:36 +00:00