1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-05 16:55:50 +03:00

87 Commits

Author SHA1 Message Date
Yann Ylavic
2eceb6a9fe mod_proxy: Check for space/ctrls in nocanon path/urls before forwarding.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908827 13f79535-47bb-0310-9956-ffa450edef68
2023-03-31 00:11:02 +00:00
Ruediger Pluem
6e75fe3b52 * Whitespace fixes. No functional change.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908628 13f79535-47bb-0310-9956-ffa450edef68
2023-03-22 08:01:31 +00:00
Ruediger Pluem
2fa15c2c06 Do not double encode encoded slashes
In case that AllowEncodedSlashes is set to NoDecode do not double encode
encoded slashes in the URL sent by the reverse proxy to the backend.

* include/ap_mmn.h: Document the addition of ap_proxy_canonenc_ex to the API.

* modules/proxy/mod_proxy.h: Declare ap_proxy_canonenc_ex and define flag
      values.

* modules/proxy/proxy_util.c: Implement ap_proxy_canonenc_ex by modifying
      ap_proxy_canonenc accordingly and reimplement ap_proxy_canonenc to
      use ap_proxy_canonenc_ex with the appropriate flag.

* modules/http2/mod_proxy_http2.c, modules/proxy/mod_proxy_*.c: Set the
      correct flag based on the AllowEncodedSlashes configuration and use
      ap_proxy_canonenc_ex instead of ap_proxy_canonenc.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908341 13f79535-47bb-0310-9956-ffa450edef68
2023-03-13 10:24:30 +00:00
Yann Ylavic
542804c63b mod_proxy: Check the query-string for proxy-noencode too.
Follow up to r1907972 and r1908095.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908257 13f79535-47bb-0310-9956-ffa450edef68
2023-03-10 21:02:31 +00:00
Eric Covener
d78a166fed don't forward invalid query strings
Submitted by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908095 13f79535-47bb-0310-9956-ffa450edef68
2023-03-05 20:27:11 +00:00
Yann Ylavic
52930446f6 mod_proxy: Don't decode r->uri and reencode in r->filename for mapping=encoded.
Decoding was not done for mapping=servlet only (a subset), but overlooked for
mapping=encoded. To avoid double-encoding in the canon_handler hook, use a new
"proxy-noencode" (similarly to "proxy-nocanon") entry in r->notes.

* proxy/mod_proxy.c(ap_proxy_trans_match):
  Set "proxy-noencode" in r->notes for PROXYPASS_MAP_ENCODED, and return DONE
  to avoid decoding in ap_process_request_internal().

* proxy/mod_proxy_http.c, proxy/mod_proxy_ajp.c, proxy/mod_proxy_wstunnel.c,
  proxy/mod_proxy_fcgi.c, proxy/mod_proxy_ajp.c, http2/mod_proxy_http2.c:
  Don't process the url through ap_proxy_canonenc() in canon_handler if
  "proxy-noencode" is set.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1907972 13f79535-47bb-0310-9956-ffa450edef68
2023-03-02 14:30:20 +00:00
Yann Ylavic
4b5394837f mod_proxy_wstunnel: Add ProxyWebsocketFallbackToProxyHttp.
Allows to opt-out the fallback to mod_proxy_http to handle WebSocket upgrade,
and let mod_proxy_wstunnel handle the requests as in 2.4.46 and earlier.

Update docs.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1889792 13f79535-47bb-0310-9956-ffa450edef68
2021-05-12 10:10:36 +00:00
Yann Ylavic
31c04cd17f mod_proxy_wstunnel: follow up to r1885239: use ap_find_linked_module().
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885244 13f79535-47bb-0310-9956-ffa450edef68
2021-01-07 17:16:19 +00:00
Yann Ylavic
35a2656068 mod_proxy_wstunnel: leave Upgrade requests handling to mod_proxy_http.
Let mod_proxy_http's canon and scheme handlers accept "ws[s]:" schemes so that
mod_proxy_wstunnel can decline requests when mod_proxy_http is loaded.

* modules/proxy/{mod_proxy.h,proxy_util.c} (ap_proxy_worker_can_upgrade):
  Add a "dflt" argument to ap_proxy_worker_can_upgrade() which, if not NULL,
  is matched when no worker upgrade= parameter is configured. This allows to
  handle the default "Upgrade: websocket" case for "ws[s]:" schemes.

* modules/proxy/mod_proxy_http.c (proxy_http_canon, proxy_http_handler):
  Add and use the new get_url_scheme() helper to parse URL schemes handled by
  mod_proxy_http and use it in canon and scheme handlers. This helper now
  accepts ws[s] schemes.

* modules/proxy/mod_proxy_wstunnel.c (proxy_wstunnel_post_config):
  New post_config hook to detect whether mod_proxy_http is loaded and set
  global fallback_to_mod_proxy_http flag in this case.

* modules/proxy/mod_proxy_wstunnel.c (proxy_wstunnel_check_trans,
                                      proxy_wstunnel_canon,
                                      proxy_wstunnel_handler):
  These hooks now early return DECLINED if fallback_to_mod_proxy_http is set.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885239 13f79535-47bb-0310-9956-ffa450edef68
2021-01-07 13:19:08 +00:00
Joe Orton
24466f95bb * modules/proxy/mod_proxy_wstunnel.c (proxyws_set_aysnch_delay):
Fix typo in function name, no functional change.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883245 13f79535-47bb-0310-9956-ffa450edef68
2020-11-10 08:37:45 +00:00
Yann Ylavic
c9472d3fc9 Follow up to r1879449: yet better MPM poll callback API.
Let pass a const pfds to the MPM, for it to make a copy on the given pool
as needed.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879451 13f79535-47bb-0310-9956-ffa450edef68
2020-07-02 15:49:53 +00:00
Yann Ylavic
ec2c547006 mpm_common: add pool argument to mpm_register_poll_callback[_timeout] hooks.
This is cleaner API than using pfds->pool implicitely.

MAJOR bump but reusing the existing hooks (with an API/ABI breakage) because
it's trunk material only.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879449 13f79535-47bb-0310-9956-ffa450edef68
2020-07-02 15:06:23 +00:00
Yann Ylavic
6fd26c1e4f mod_proxy_wstunnel: follow up to r1879418: handle first async lifetime too.
Create the dedicated pfds and subpool in proxy_wstunnel_request() too, for
the first call to ap_mpm_register_poll_callback_timeout().

While at it, add comments about why we need the dedicated pfds/subpool.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879438 13f79535-47bb-0310-9956-ffa450edef68
2020-07-02 12:22:07 +00:00
Yann Ylavic
29bcc0eaa3 mod_proxy_wstunnel: avoid leaks on tunnel->pfds->pool.
Since event_register_poll_callback_ex() allocates its data on pfds->pool,
we need a subpool to be cleared at each proxy_wstunnel_callback() call.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879418 13f79535-47bb-0310-9956-ffa450edef68
2020-07-02 00:07:04 +00:00
Yann Ylavic
3d5ace0a30 mod_proxy: improved and reentrant tunneling loop.
modules/proxy/mod_proxy.h:
    Rename AP_PROXY_TRANSFER_SHOULD_YIELD to AP_PROXY_TRANSFER_YIELD_PENDING
    and add AP_PROXY_TRANSFER_YIELD_MAX_READS.

modules/proxy/mod_proxy_http.c:
modules/proxy/mod_proxy_wstunnel.c:
    Removing of reqtimeout filter is now handled by ap_proxy_tunnel_create().

modules/proxy/proxy_util.c:
    ap_proxy_transfer_between_connections():
        Reorganize loop to break out early.
        When AP_PROXY_TRANSFER_YIELD_PENDING, if !ap_filter_should_yield() we
        still need to run and check ap_filter_output_pending() since it may
        release pending data.
        When AP_PROXY_TRANSFER_YIELD_MAX_READS, stop the loop after too much
        reads (PROXY_TRANSFER_MAX_READS = 10000) to release the thread and
        give the caller a chance to schedule the other direction.
        Don't return APR_INCOMPLETE when it comes from an incomplete body
        detected by ap_http_filter().

    ap_proxy_tunnel_create():
        Start with POLLOUT on both directions so that any pending output data
        is flushed first.

    ap_proxy_tunnel_run():
        Remove re-init/clear of the pollset for each call so that the function
        is reentrant.
        Handle POLLOUT before POLLIN so that we can read in the same pass once
        all buffered output data are flushed, using ap_filter_input_pending()
        to drain buffered input data.

This is preparatory patch for async websocket tunneling is mod_proxy_http.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879401 13f79535-47bb-0310-9956-ffa450edef68
2020-07-01 16:35:48 +00:00
Yann Ylavic
1dc3c88d41 mod_proxy_http: handle Upgrade requests and upgraded protocol forwarding.
If the request Upgrade header matches the worker upgrade= parameter and
the backend switches the protocol, do the tunneling in mod_proxy_http.
This allows to keep the protocol to HTTP until the backend really
switches the protocol, and apply usual output filters.

When configured to forward Upgrade mechanism, we want the backend to be
able to announce its Upgrade protocol to the client (e.g. with 426
Upgrade Required response) and thus forward back the Upgrade header that
matches the one(s) configured in the worker upgrade= parameter.

modules/proxy/mod_proxy.h:
modules/proxy/proxy_util.c:
    ap_proxy_worker_can_upgrade(): added helper to determine whether a
    proxy worker is configured to forward an Upgrade protocol.

include/ap_mmn.h:
    Bump MMN minor for ap_proxy_worker_can_upgrade().

modules/proxy/mod_proxy.c:
    set_worker_param(): handle worker parameter upgrade=ANY as upgrade=*
    (should the "any" protocol scheme be something some day..).

modules/proxy/mod_proxy_wstunnel.c:
    proxy_wstunnel_handler(): use ap_proxy_worker_can_upgrade() to match
    the Upgrade header. Axe handling of upgrade=NONE, it makes no sense to
    Upgrade a connection if the client did not ask for it, nor to configure
    mod_proxy_wstunnel to use a worker with upgrade=NONE by the way.

modules/proxy/mod_proxy_http.c:
    proxy_http_req_t: add fields force10 (force HTTP/1.0) and upgrade (value
    of the Upgrade header sent by the client if it matches the configuration,
    NULL otherwise).
    proxy_http_handler(): use ap_proxy_worker_can_upgrade() to determine
    whether the request is electable for end to end protocol upgrading and set
    req->upgrade accordingly.
    terminate_headers(): handle Connection and Upgrade headers to send to the
    backend, according to req->force10 and req->upgrade set before.
    ap_proxy_http_prefetch(): use req->force10 and terminate_headers().
    send_continue_body(): added helper to send the body retained for end to
    end 100-continue handling.
    ap_proxy_http_process_response(): use ap_proxy_worker_can_upgrade() to
    match the response Upgrade header and forward it back if it matches the
    configured one(s). That is for 101 Switching Protocol obviously but also
    any other status code which is not overidden, at the backend wish. If the
    protocol is switching, create a proxy tunnel and run it, using the minimal
    timeout from the client or backend connection.

Github: closes #125



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1877646 13f79535-47bb-0310-9956-ffa450edef68
2020-05-12 12:20:57 +00:00
Yann Ylavic
124a26fb09 mod_proxy: Improve tunneling loop.
Support half closed connections and pending data draining (for protocols like
rsync). PR 61616.

When reading on one side goes faster than writing on the other side, the output
filters chain may start buffering data and finally block, which will break
bidirectional tunneling for some protocols.

To avoid this, proxy_tunnel_run() now stops polling/reading until pending data
are drained, and recovers appropriately.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1869420 13f79535-47bb-0310-9956-ffa450edef68
2019-11-05 16:41:14 +00:00
Yann Ylavic
3d3e03a63a mod_proxy: Add proxy check_trans hook.
This allows proxy modules to decline request handling at early stage.
Then mod_proxy_wstunnel can implement that hook to verify that an Upgrade
is requested, and otherwise hand over to mod_proxy_http.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1869399 13f79535-47bb-0310-9956-ffa450edef68
2019-11-05 12:43:29 +00:00
Yann Ylavic
641102d747 mod_proxy: factorize mod_proxy_{connect,wstunnel} tunneling code in proxy_util.
This commit adds struct proxy_tunnel_rec that contains the fields needed for a
poll() loop through the filters chains, plus functions ap_proxy_tunnel_create()
and ap_proxy_tunnel_run() to respectively initialize a tunnel and (re)start it.
 
Proxy connect and wstunnel modules now make use of this new API to avoid
duplicating logic and code.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1869338 13f79535-47bb-0310-9956-ffa450edef68
2019-11-03 15:48:53 +00:00
Yann Ylavic
cdc97c4368 Revert r1869222, wrong files committed.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1869223 13f79535-47bb-0310-9956-ffa450edef68
2019-10-31 16:10:08 +00:00
Yann Ylavic
e2d7af8692 mod_proxy_http: follow up to r1869216.
Let's call stream_reqbody() for all rb_methods, no RB_SPOOL_CL special case.

This both simplifies code and allows to keep EOS into the input_brigade until
it's sent, and thus detect whether we already fetched the whole body if/when
proxy_http_handler() re-enters for different balancer members.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1869222 13f79535-47bb-0310-9956-ffa450edef68
2019-10-31 16:08:33 +00:00
Christophe Jaillet
82b7e77b82 Synch 2.4.x and trunk.
There is an extra space on trunk. Axe it.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1868642 13f79535-47bb-0310-9956-ffa450edef68
2019-10-20 06:58:29 +00:00
Yann Ylavic
975f5e1095 Follow up to r1859371: extend to other ap_proxy_connection_create[_ex]() users.
This function now now handles SSL reuse as well as the "proxy-request-hostname"
note (SNI), so let's also call it unconditionnaly in all proxy modules.

On the mod_ssl side, since this note has the lifetime of the connection, don't
reset/unset it during handshake (ssl_io_filter_handshake).


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1859422 13f79535-47bb-0310-9956-ffa450edef68
2019-05-17 08:42:17 +00:00
Christophe Jaillet
bcf87c0fe1 Fix numbering
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1853416 13f79535-47bb-0310-9956-ffa450edef68
2019-02-12 07:49:32 +00:00
Christophe Jaillet
351107bc8d Fix websocket proxy over UDS.
configuration example:
<Location "/apis">
ProxyPass unix:/var/run/unix.sock|ws://127.0.0.1/api
</Location>

Currently 'ap_proxy_get_worker()' can't get matched pre-defined worker because
of different uri formatting in 'proxy_wstunnel_canon()' and ap_proxy_define_worker()'

PR 62932 <pavel dcmsys.com>


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1851093 13f79535-47bb-0310-9956-ffa450edef68
2019-01-11 19:31:43 +00:00
Christophe Jaillet
c9ed35a57a Fix some style issue to improve readability:
- break long lines
   - remove un-needed 'return' statement
   - fix the position of the first { in function

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1834224 13f79535-47bb-0310-9956-ffa450edef68
2018-06-23 20:10:54 +00:00
Christophe Jaillet
f9dea2b419 Follow-up to r1754161
Fix a missed s/backconn/backend connection/ in an un-likely error path.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1834222 13f79535-47bb-0310-9956-ffa450edef68
2018-06-23 20:06:46 +00:00
Jean-Frederic Clere
de15a34dc8 Add logic to read the Upgrade header and use it in the response.
Use we you are proxying to a server that has multiple upgrade on the same IP/Port.
PR 61142


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1801594 13f79535-47bb-0310-9956-ffa450edef68
2017-07-11 11:41:44 +00:00
Eric Covener
fc1981aa0e whitespace only
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1796864 13f79535-47bb-0310-9956-ffa450edef68
2017-05-30 13:39:45 +00:00
Eric Covener
b7735544ee despite trace, assign a APLOGNO, as done elsewhere in this mod
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1792395 13f79535-47bb-0310-9956-ffa450edef68
2017-04-23 21:27:15 +00:00
Eric Covener
8af890b8f8 PR61012: log a trace message on tunnel shutdown
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1792394 13f79535-47bb-0310-9956-ffa450edef68
2017-04-23 21:26:37 +00:00
Jean-Frederic Clere
61ca36599d Add upgrade parameter to mod_proxy_wstunnel.
That allows to upgrade to jboss-remoting for example
or to run an HTTP/1.1 backend that needs to upgrade to
WebSocket.
See also:
 https://issues.jboss.org/browse/JBCS-254
 https://issues.jboss.org/browse/JBCS-291


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1792092 13f79535-47bb-0310-9956-ffa450edef68
2017-04-20 17:07:32 +00:00
Eric Covener
3dac6889c2 followup to r1776285
backwards per rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1778117 13f79535-47bb-0310-9956-ffa450edef68
2017-01-10 13:20:26 +00:00
Eric Covener
c5f5760b7e let wstunnel run first
Since wstunnel can step aside based on the Upgrade: header.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1776290 13f79535-47bb-0310-9956-ffa450edef68
2016-12-28 14:54:37 +00:00
Eric Covener
281b96b078 improve a debug message
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1776285 13f79535-47bb-0310-9956-ffa450edef68
2016-12-28 14:40:54 +00:00
Yann Ylavic
dba4e304b3 mod_proxy_wstunnel: we want to detect whether some response was sent to
the client when forwarding data from the backend to the client, not the
reverse.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1754164 13f79535-47bb-0310-9956-ffa450edef68
2016-07-26 17:50:34 +00:00
Yann Ylavic
a3814e4cd2 mod_proxy_connect,wstunnel: log polling errors (and events) consistently at
level ERR (resp. TRACE2), and name the backend connection "backend" instead of
"sock".


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1754161 13f79535-47bb-0310-9956-ffa450edef68
2016-07-26 17:37:18 +00:00
William A. Rowe Jr
f4cc76ee71 Rename ap_casecmpstr[n]() to ap_cstr_casecmp[n](), update with APR doxygen
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1747469 13f79535-47bb-0310-9956-ffa450edef68
2016-06-09 00:06:42 +00:00
Yann Ylavic
f9ad2754f7 mod_proxy, mod_ssl: Handle SSLProxy* directives in <Proxy> sections,
allowing per backend TLS configuration.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1740928 13f79535-47bb-0310-9956-ffa450edef68
2016-04-26 00:04:57 +00:00
Stefan Eissing
7c6d768d77 reverting the reverting of r1735174, r1735176 was the culprit
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1735227 13f79535-47bb-0310-9956-ffa450edef68
2016-03-16 13:09:47 +00:00
Stefan Eissing
9a54010ad2 reverting r1735174 as http/1.1 just terminated before response
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1735216 13f79535-47bb-0310-9956-ffa450edef68
2016-03-16 11:06:28 +00:00
Graham Leggett
008d76cc3f mpm: Generalise the ap_mpm_register_socket functions to accept pipes or sockets.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1735174 13f79535-47bb-0310-9956-ffa450edef68
2016-03-15 22:52:51 +00:00
Ruediger Pluem
5e04c2abb4 * Use correct bucket allocator for sending data to the backend
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1730823 13f79535-47bb-0310-9956-ffa450edef68
2016-02-17 12:37:46 +00:00
Yann Ylavic
64f843d74b Prefer "goto cleanup" over "do {... if (error) break; ... } while(0)"
construction for error handling/jump (as suggested by Ruediger).

Hence we can move backend->close = 1 (for mod_proxy_wstunnel) and
proxy_run_detach_backend() (for mod_proxy_http2) in the cleanup fallback.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1729749 13f79535-47bb-0310-9956-ffa450edef68
2016-02-10 22:42:57 +00:00
Yann Ylavic
447582e5f4 mod_proxy: axe negative "ping" parameter setting and handling.
This used to check for the backend connection readability only (instead of
the full ping/100-continue round-trip), but the case is already handled by
ap_proxy_connect_backend() which is always called.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1729507 13f79535-47bb-0310-9956-ffa450edef68
2016-02-09 23:38:59 +00:00
Ruediger Pluem
b70e849980 * Let mod_proxy_wstunnel and mod_proxy_connect use ap_proxy_transfer_between_connections
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1728481 13f79535-47bb-0310-9956-ffa450edef68
2016-02-04 13:57:14 +00:00
Ruediger Pluem
249fb57294 * Use the correct brigade created from the correct bucket allocator for the correct purpose
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1727553 13f79535-47bb-0310-9956-ffa450edef68
2016-01-29 11:59:34 +00:00
Ruediger Pluem
6583e5de1d * Use the brigades the other way around if the connections are used the other way around
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1727551 13f79535-47bb-0310-9956-ffa450edef68
2016-01-29 11:58:25 +00:00
Ruediger Pluem
90bd586745 * Transform the buckets to the correct lifetime of the brigade, connection and filter stack that processes it.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1726787 13f79535-47bb-0310-9956-ffa450edef68
2016-01-26 12:57:18 +00:00
Yann Ylavic
c80e6b2a34 Use new ap_casecmpstr[n]() functions where appropriate (not exhaustive).
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1715876 13f79535-47bb-0310-9956-ffa450edef68
2015-11-23 16:46:01 +00:00