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);
|
CharSequence upgradeHeader = response.headers().get(HttpHeaderNames.UPGRADE);
|
||||||
if (upgradeHeader == null) {
|
if (upgradeHeader != null && !AsciiString.contentEqualsIgnoreCase(upgradeCodec.protocol(), upgradeHeader)) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"Switching Protocols response missing UPGRADE header");
|
"Switching Protocols response with unexpected UPGRADE protocol: " + upgradeHeader);
|
||||||
}
|
|
||||||
if (!AsciiString.contentEqualsIgnoreCase(upgradeCodec.protocol(), upgradeHeader)) {
|
|
||||||
throw new IllegalStateException(
|
|
||||||
"Switching Protocols response with unexpected UPGRADE protocol: "
|
|
||||||
+ upgradeHeader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to the new protocol.
|
// Upgrade to the new protocol.
|
||||||
|
Loading…
Reference in New Issue
Block a user