Jim, My same thought.
On Windows with 2.4.6, yes according to my coworker. I want to double check it though though to confirm. I'm working on a 2.4.6 build for RHEL5 to test along side the 2.2.x back port. -- Scott Russell "The biggest human temptation is to settle for too little." -- Thomas Merton > On Oct 5, 2013, at 9:02 AM, "Jim Jagielski" <[email protected]> wrote: > > It would be useful to know if this happens with 2.4.x... > >> On Oct 4, 2013, at 8:06 PM, "Russell, Scott" <[email protected]> >> wrote: >> >> Continuing to look at this, I can show a packet trace where everything looks >> normal between the httpd and the node.js server on close. But if I do the >> same trace between the httpd and the browser I can see malformed a websocket >> packet when the stream closes. >> >> I'm not sure what (if anything) in the mod_proxy_wstunnel would be causing a >> malformed websocket packet to be sent when the connection closes. >> >> -- >> Scott Russell >> Software Architect >> Customer Success Services >> (919) 476-8813 >> >>> On Oct 4, 2013, at 6:07 PM, "Russell, Scott" <[email protected]> >>> wrote: >>> >>> I'm wondering if anyone else is seeing an frame opcode 12 on >>> socket.disconnect() when using socket.io with mod_proxy_wstunnel. I have a >>> fairly simple replication setup that I'm investigating. >>> >>> I'm using apache 2.2.25 with a backported mod_proxy_wstunnel patch from >>> 2.4.6. I'm seeing an unexpected frame opcode12 frame when the client or the >>> server drops the websocket. I can only replicate this when going through >>> the mod_http_wstunnel. If I change my client code to talk directly to the >>> websocket on port 8001 I don't see the opcode 12 frame. >>> >>> Here is what my proxy config looks like: >>> >>> <VirtualHost gnu.corp.netapp.com:80> >>> LogLevel debug >>> >>> ProxyPass /socket.io/1/websocket ws://localhost:8001/socket.io/1/websocket >>> ProxyPassReverse /socket.io/1/websocket >>> ws://localhost:8001/socket.io/1/websocket >>> >>> ProxyPass /socket.io/ http://localhost:8001/socket.io/ >>> ProxyPassReverse /socket.io/ http://localhost:8001/socket.io/ >>> >>> ProxyPass / http://localhost:8080/ >>> ProxyPassReverse / http://localhost:8080/ >>> </VirtualHost> >>> >>> # apache static content >>> <VirtualHost localhost:8080> >>> DocumentRoot /var/www/static >>> <Directory /> >>> Allow from all >>> </Directory> >>> </VirtualHost> >>> >>> Here is what it looks like in Chrome Dev Tools for the websocket connection: >>> >>> Data Length Time >>> ------------------------------------------------------------------ >>> Unrecognized frame opcode: 12 29 5:55:55 PM >>> 0:: 3 5:55:55 PM >>> Connection Close Frame (Opcode 8, mask) 0 5:55:55 PM >>> 0:: 3 5:55:55 PM >>> 5:::{"name":"news","args":[{"hello":"world"}]} 46 5:55:55 PM >>> 3:::Client connected 20 5:55:55 PM >>> 1:: 3 5:55:55 PM >>> >>> >>> >>> error_log doesn't seem to be very interesting here: >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy_http.c(56): proxy: HTTP: >>> canonicalising URL //localhost:8080/ >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(1513): [client >>> 10.63.231.202] proxy: http: found worker http://localhost:8080/ for >>> http://localhost:8080/ >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy.c(1036): Running scheme http >>> handler (attempt 0) >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy_http.c(1974): proxy: HTTP: >>> serving URL http://localhost:8080/ >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2018): proxy: HTTP: has >>> acquired connection for (localhost) >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2074): proxy: connecting >>> http://localhost:8080/ to localhost:8080 >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2200): proxy: connected / >>> to localhost:8080 >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2451): proxy: HTTP: fam 2 >>> socket created to connect to localhost >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2583): proxy: HTTP: >>> connection complete to 127.0.0.1:8080 (localhost) >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy_http.c(1744): proxy: start >>> body send >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy_http.c(1848): proxy: end body >>> send >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2036): proxy: HTTP: has >>> released connection for (localhost) >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy_http.c(56): proxy: HTTP: >>> canonicalising URL //localhost:8001/socket.io/socket.io.js >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(1513): [client >>> 10.63.231.202] proxy: http: found worker http://localhost:8001/socket.io/ >>> for http://localhost:8001/socket.io/socket.io.js, referer: >>> http://gnu.corp.netapp.com/ >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy.c(1036): Running scheme http >>> handler (attempt 0) >>> [Fri Oct 04 16:47:09 2013] [debug] mod_proxy_http.c(1974): proxy: HTTP: >>> serving URL http://localhost:8001/socket.io/socket.io.js >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2018): proxy: HTTP: has >>> acquired connection for (localhost) >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2074): proxy: connecting >>> http://localhost:8001/socket.io/socket.io.js to localhost:8001 >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2200): proxy: connected >>> /socket.io/socket.io.js to localhost:8001 >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2451): proxy: HTTP: fam 2 >>> socket created to connect to localhost >>> [Fri Oct 04 16:47:09 2013] [debug] proxy_util.c(2583): proxy: HTTP: >>> connection complete to 127.0.0.1:8001 (localhost) >>> [Fri Oct 04 16:47:10 2013] [debug] mod_proxy_http.c(1744): proxy: start >>> body send >>> [Fri Oct 04 16:47:10 2013] [debug] mod_proxy_http.c(1848): proxy: end body >>> send >>> [Fri Oct 04 16:47:10 2013] [debug] proxy_util.c(2036): proxy: HTTP: has >>> released connection for (localhost) >>> [Fri Oct 04 16:47:10 2013] [debug] mod_proxy_http.c(56): proxy: HTTP: >>> canonicalising URL //localhost:8001/socket.io/1/ >>> [Fri Oct 04 16:47:10 2013] [debug] proxy_util.c(1513): [client >>> 10.63.231.202] proxy: http: found worker http://localhost:8001/socket.io/ >>> for http://localhost:8001/socket.io/1/?t=1380923754926, referer: >>> http://gnu.corp.netapp.com/ >>> [Fri Oct 04 16:47:10 2013] [debug] mod_proxy.c(1036): Running scheme http >>> handler (attempt 0) >>> [Fri Oct 04 16:47:10 2013] [debug] mod_proxy_http.c(1974): proxy: HTTP: >>> serving URL http://localhost:8001/socket.io/1/?t=1380923754926 >>> [Fri Oct 04 16:47:10 2013] [debug] proxy_util.c(2018): proxy: HTTP: has >>> acquired connection for (localhost) >>> [Fri Oct 04 16:47:10 2013] [debug] proxy_util.c(2074): proxy: connecting >>> http://localhost:8001/socket.io/1/?t=1380923754926 to localhost:8001 >>> [Fri Oct 04 16:47:10 2013] [debug] proxy_util.c(2200): proxy: connected >>> /socket.io/1/?t=1380923754926 to localhost:8001 >>> [Fri Oct 04 16:47:10 2013] [debug] mod_proxy_http.c(1744): proxy: start >>> body send >>> [Fri Oct 04 16:47:10 2013] [debug] mod_proxy_http.c(1848): proxy: end body >>> send >>> [Fri Oct 04 16:47:10 2013] [debug] proxy_util.c(2036): proxy: HTTP: has >>> released connection for (localhost) >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(51): [client >>> 10.63.231.202] canonicalising URL >>> //localhost:8001/socket.io/1/websocket/Xjww5htx3meYyb2YMS-T >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(1513): [client >>> 10.63.231.202] proxy: ws: found worker >>> ws://localhost:8001/socket.io/1/websocket for >>> ws://localhost:8001/socket.io/1/websocket/Xjww5htx3meYyb2YMS-T >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy.c(1036): Running scheme ws >>> handler (attempt 0) >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_http.c(1964): proxy: HTTP: >>> declining URL ws://localhost:8001/socket.io/1/websocket/Xjww5htx3meYyb2YMS-T >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_scgi.c(508): [client >>> 10.63.231.202] proxy: SCGI: declining URL >>> ws://localhost:8001/socket.io/1/websocket/Xjww5htx3meYyb2YMS-T >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(331): [client >>> 10.63.231.202] AH02451: serving URL >>> ws://localhost:8001/socket.io/1/websocket/Xjww5htx3meYyb2YMS-T >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(2018): proxy: WS: has >>> acquired connection for (localhost) >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(2074): proxy: connecting >>> ws://localhost:8001/socket.io/1/websocket/Xjww5htx3meYyb2YMS-T to >>> localhost:8001 >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(2200): proxy: connected >>> /socket.io/1/websocket/Xjww5htx3meYyb2YMS-T to localhost:8001 >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(2387): proxy: WS: backend >>> socket is disconnected. >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(2451): proxy: WS: fam 2 >>> socket created to connect to localhost >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(2583): proxy: WS: >>> connection complete to 127.0.0.1:8001 (localhost) >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(192): [client >>> 10.63.231.202] sending request >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(210): [client >>> 10.63.231.202] setting up poll() >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(252): [client >>> 10.63.231.202] AH02445: woke from poll(), i=1 >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(261): [client >>> 10.63.231.202] AH02446: sock was readable >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(252): [client >>> 10.63.231.202] AH02445: woke from poll(), i=1 >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(277): [client >>> 10.63.231.202] AH02448: client was readable >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(252): [client >>> 10.63.231.202] AH02445: woke from poll(), i=1 >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(277): [client >>> 10.63.231.202] AH02448: client was readable >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(252): [client >>> 10.63.231.202] AH02445: woke from poll(), i=1 >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(261): [client >>> 10.63.231.202] AH02446: sock was readable >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(252): [client >>> 10.63.231.202] AH02445: woke from poll(), i=1 >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(261): [client >>> 10.63.231.202] AH02446: sock was readable >>> [Fri Oct 04 16:47:11 2013] [debug] mod_proxy_wstunnel.c(294): [client >>> 10.63.231.202] finished with poll() - cleaning up >>> [Fri Oct 04 16:47:11 2013] [debug] proxy_util.c(2036): proxy: WS: has >>> released connection for (localhost) >>> >>> -- >>> Scott Russell >>> Software Architect >>> Customer Success Services >>> (919) 476-8813 >>> >> >
