Do not send keep-alive in 101 (Switching Protocols) responses#709
Do not send keep-alive in 101 (Switching Protocols) responses#709rousskov wants to merge 1 commit intosquid-cache:masterfrom
Conversation
... because it breaks clients using websocket_client[1] library and is redundant in our HTTP/1.1 control messages anyway. I suspect that at least some buggy clients are confused by a multi-value Connection field rather than the redundant keep-alive signal itself, but let's try to follow RFC 7230 Upgrade example more closely this time and send no keep-alive at all. [1] https://pypi.org/project/websocket_client/
|
Folks suffering from this incompatibility problem have confirmed that the suggested change fixes it. |
|
@yadij, this PR undoes your (officially committed) suggestion so you may want to review it. |
Do we know how those folks have been testing the patch? live traffic or lab tests? FTR: Clients failing due to multi-value Connection fields will not be solved by this, only the amount of cases reduced. The cases my suggestion was for were not obeying HTTP/1.1 requirements about keep-alive based on the HTTP/1.1 label anyway, so breaking them is okay now we have a real-world traffic case needing to do so. |
keep-alive in 101 (Switching Protocols) responses
No, I do not have direct contact with those folks. My guess is that they are using live traffic at this point. |
... because it breaks clients using websocket_client[1] library and is redundant in our HTTP/1.1 control messages anyway. I suspect that at least some buggy clients are confused by a multi-value Connection field rather than the redundant keep-alive signal itself, but let's try to follow RFC 7230 Upgrade example more closely this time and send no keep-alive at all. [1] https://pypi.org/project/websocket_client/
…cache#709) ... because it breaks clients using websocket_client[1] library and is redundant in our HTTP/1.1 control messages anyway. I suspect that at least some buggy clients are confused by a multi-value Connection field rather than the redundant keep-alive signal itself, but let's try to follow RFC 7230 Upgrade example more closely this time and send no keep-alive at all. [1] https://pypi.org/project/websocket_client/
…cache#709) ... because it breaks clients using websocket_client[1] library and is redundant in our HTTP/1.1 control messages anyway. I suspect that at least some buggy clients are confused by a multi-value Connection field rather than the redundant keep-alive signal itself, but let's try to follow RFC 7230 Upgrade example more closely this time and send no keep-alive at all. [1] https://pypi.org/project/websocket_client/
... because it breaks clients using websocket_client[1] library and is redundant in our HTTP/1.1 control messages anyway. I suspect that at least some buggy clients are confused by a multi-value Connection field rather than the redundant keep-alive signal itself, but let's try to follow RFC 7230 Upgrade example more closely this time and send no keep-alive at all. [1] https://pypi.org/project/websocket_client/
|
FTR: A relatively popular service, Google Voice at web.voice.telephony.goog, responds with |
... because it breaks clients using websocket_client[1] library and is
redundant in our HTTP/1.1 control messages anyway.
I suspect that at least some buggy clients are confused by a multi-value
Connection field rather than the redundant keep-alive signal itself, but
let's try to follow RFC 7230 Upgrade example more closely this time and
send no keep-alive at all.
[1] https://pypi.org/project/websocket_client/