Verify if is a websocket connection
Now, every HTTP request is handled as if it were a WebSocket connection. However, when an HTTP request is made and is expected to close the connection, an error arises because it is not supposed to receive an HTTP connection in the handler.
This PR verifies if it is actually a WebSocket connection before handling it.
I may be wrong; but according to mozilla the upgrade header can be used for http requests, not just switching to websockets, so it should be explicitly checked for the upgrade to websocket.
This feature seams to be generally unused and depreciated, so in most cases should not matter.
Yes, you are right. It must check if the header has the websocket string explicitly. I made a commit to fix right now.
Can you provide more information about what you're doing, what you're expecting, and what you're getting?
when an HTTP request is made and is expected to close the connection
In this case, the call to connection.handshake(...) — ten lines above the code that you changed — is expected to raise an exception. As a consequence, that code shouldn't be reached.
If this doesn't work as expected, the fix consists in making connection.handshake(...) raise an exception, because that's the method in charge of telling if this is a WebSocket connection or not.
We mustn't reimplement some of the protocol logic outside of the Sans-I/O layer.
(And sorry for the late answer — I haven't found time to work on this project in the recent months.)
Superseded by #1500.