-
Notifications
You must be signed in to change notification settings - Fork 94
Open
Description
Similar bugs:
- Haproxy support for draft 76 faye/faye-websocket-node#4
- WebSocket improvements: Haproxy support for hixie76 ninenines/cowboy#73
In order to get Hixie76 through a HAProxy loadbalancer the server must send response headers before the request nonce is received. In other words: before haproxy will send the extra data from the client (nonce) it expects the server to respond to the headers. Current implementation does not support that, and hangs and waits for nonce instead of sending response headers as soon as possible.
To reproduce: https://gist.github.com/1780761
- chmod +x ./misultin_haproxy_bug.erl
./misultin_haproxy_bug.erl - node client-direct.js ## That works fine, as all ws handshake is sent in one go
- node client-haproxy.js ## That hangs for 200ms and quits, as nonce is send only once headers are received. This is wrong.
(Sorry for writing tests in node, but the logic is quite simple.)
Another way to reproduce:
- ./misultin_haproxy_bug.erl
- run
nc localhost 8000
and paste:
GET /demo HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
Result: server hangs. Expected result: response headers (without nonce yet). Response nonce should be sent once next 8 bytes are sent by the client.
Metadata
Metadata
Assignees
Labels
No labels