Relax the sanity check in HttpClientUpgradeHandler
Motivation: HttpClientUpgradeHandler currently throws an IllegalStateException when the server sends a '101 Switching Protocols' response that has no 'Upgrade' header. Some servers do not send the 'Upgrade' header on a successful protocol upgrade and we could safely assume that the server accepted the requested protocol upgrade in such a case, looking from the response status code (101) Modifications: - Do not throw an IllegalStateException when the server responded 101 without a 'Upgrade' header - Note that we still check the equality of the 'Upgrade' header when it is present. Result: - Fixes #4523 - Better interoperability
This commit is contained in:
parent
0ec34b5f76
commit
ef3a9b0acd
@ -216,14 +216,9 @@ public class HttpClientUpgradeHandler extends HttpObjectAggregator implements Ch
|
||||
}
|
||||
|
||||
CharSequence upgradeHeader = response.headers().get(HttpHeaderNames.UPGRADE);
|
||||
if (upgradeHeader == null) {
|
||||
if (upgradeHeader != null && !AsciiString.contentEqualsIgnoreCase(upgradeCodec.protocol(), upgradeHeader)) {
|
||||
throw new IllegalStateException(
|
||||
"Switching Protocols response missing UPGRADE header");
|
||||
}
|
||||
if (!AsciiString.contentEqualsIgnoreCase(upgradeCodec.protocol(), upgradeHeader)) {
|
||||
throw new IllegalStateException(
|
||||
"Switching Protocols response with unexpected UPGRADE protocol: "
|
||||
+ upgradeHeader);
|
||||
"Switching Protocols response with unexpected UPGRADE protocol: " + upgradeHeader);
|
||||
}
|
||||
|
||||
// Upgrade to the new protocol.
|
||||
|
Loading…
Reference in New Issue
Block a user