On Wed, Sep 2, 2015 at 4:31 PM, Stefan Eissing <[email protected]> wrote: > >> Am 02.09.2015 um 16:19 schrieb Yann Ylavic <[email protected]>: >> >> On Wed, Sep 2, 2015 at 4:04 PM, Eric Covener <[email protected]> wrote: >>> On Wed, Sep 2, 2015 at 10:01 AM, Stefan Eissing >>> <[email protected]> wrote: >>>> Hmm. Is the >>>> ap_hook_handler(core_upgrade_handler,NULL,NULL,APR_HOOK_REALLY_FIRST); >>>> called for requests that mod_proxy_wstunnel makes against a backend? >>> >>> yes, the guts of mod_proxy is just a handler, so this would run before that. >> >> Maybe core_upgrade_handler could check if the Upgrade's protocol is in >> Protocols, and do nothing otherwise... > > It calls ap_select_protocol(...) and that one allows only selections from the > configured "Protocols" list.
Hm ok, so here (with "Upgrade: WebSocket" but no "Protocols WebSocket"), ap_select_protocol() would return "http/1.1" which is the current protocol, hence we would not enter the HTTP_SWITCHING_PROTOCOLS code. I had misread the strcmp() and thought the selected protocol was compared against the proposed one (Upgrade header). Thanks for the clarification.
