Skip to content

Commit

Permalink
Bug: 482187 - HTTP headers should be case-insensitive for websockets
Browse files Browse the repository at this point in the history
Optimising the WebSocket headers case insensitivity fix by hardcoding the headers as lower case and removing the need for .toLowerCase() calls

Signed-off-by: James Sutton <james.sutton@uk.ibm.com>
  • Loading branch information
jpwsutton committed Nov 17, 2015
1 parent ccdd522 commit b2ff952
Showing 1 changed file with 5 additions and 5 deletions.
Expand Up @@ -34,8 +34,8 @@ public class WebSocketHandshake {
// Do not change: https://tools.ietf.org/html/rfc6455#section-1.3
private static final String ACCEPT_SALT = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
private static final String SHA1_PROTOCOL = "SHA1";
private static final String HTTP_HEADER_SEC_WEBSOCKET_ACCEPT = "Sec-WebSocket-Accept";
private static final String HTTP_HEADER_UPGRADE = "Upgrade";
private static final String HTTP_HEADER_SEC_WEBSOCKET_ACCEPT = "sec-websocket-accept";
private static final String HTTP_HEADER_UPGRADE = "upgrade";
private static final String HTTP_HEADER_UPGRADE_WEBSOCKET = "websocket";
private static final String EMPTY = "";
private static final String LINE_SEPARATOR = "\r\n";
Expand Down Expand Up @@ -100,16 +100,16 @@ private void receiveHandshakeResponse(String key) throws IOException {
}
Map headerMap = getHeaders(responseLines);
String upgradeHeader = (String) headerMap.get(HTTP_HEADER_UPGRADE);
if(!upgradeHeader.toLowerCase().contains(HTTP_HEADER_UPGRADE_WEBSOCKET.toLowerCase())){
if(!upgradeHeader.toLowerCase().contains(HTTP_HEADER_UPGRADE_WEBSOCKET)){
throw new IOException("WebSocket Response header: Incorrect upgrade.");
}

if(!headerMap.containsKey(HTTP_HEADER_SEC_WEBSOCKET_ACCEPT.toLowerCase())){
if(!headerMap.containsKey(HTTP_HEADER_SEC_WEBSOCKET_ACCEPT)){
throw new IOException("WebSocket Response header: Missing Sec-WebSocket-Accept");
}

try {
verifyWebSocketKey(key, (String)headerMap.get(HTTP_HEADER_SEC_WEBSOCKET_ACCEPT.toLowerCase()));
verifyWebSocketKey(key, (String)headerMap.get(HTTP_HEADER_SEC_WEBSOCKET_ACCEPT));
} catch (NoSuchAlgorithmException e) {
throw new IOException(e.getMessage());
} catch (HandshakeFailedException e) {
Expand Down

0 comments on commit b2ff952

Please sign in to comment.