diff options
author | Hiroshi Ichikawa <gimite@gmail.com> | 2010-08-31 20:13:27 +0900 |
---|---|---|
committer | Hiroshi Ichikawa <gimite@gmail.com> | 2010-08-31 20:13:27 +0900 |
commit | 1d0df76b4da4ba4071879e435a4de3512fd3853e (patch) | |
tree | 59f0e49104b6c7d7a8157154e14b0b6c426abb7f | |
parent | 29e7ed395724953f827a18ac582ac562e99e4920 (diff) | |
download | web-socket-js-1d0df76b4da4ba4071879e435a4de3512fd3853e.tar.gz |
Fixing a bug that it is case sensitive for some header keys/values where it must not be.
-rw-r--r-- | WebSocketMain.swf | bin | 180127 -> 180177 bytes | |||
-rw-r--r-- | flash-src/WebSocket.as | 18 |
2 files changed, 10 insertions, 8 deletions
diff --git a/WebSocketMain.swf b/WebSocketMain.swf Binary files differindex 0bec17c..cadefcf 100644 --- a/WebSocketMain.swf +++ b/WebSocketMain.swf diff --git a/flash-src/WebSocket.as b/flash-src/WebSocket.as index ef82b8f..260454a 100644 --- a/flash-src/WebSocket.as +++ b/flash-src/WebSocket.as @@ -309,6 +309,7 @@ public class WebSocket extends EventDispatcher { return false; } var header:Object = {}; + var lowerHeader:Object = {}; for (var i:int = 1; i < lines.length; ++i) { if (lines[i].length == 0) continue; var m:Array = lines[i].match(/^(\S+): (.*)$/); @@ -316,18 +317,19 @@ public class WebSocket extends EventDispatcher { onError("failed to parse response header line: " + lines[i]); return false; } - header[m[1]] = m[2]; + header[m[1].toLowerCase()] = m[2]; + lowerHeader[m[1].toLowerCase()] = m[2].toLowerCase(); } - if (header["Upgrade"] != "WebSocket") { + if (lowerHeader["upgrade"] != "websocket") { onError("invalid Upgrade: " + header["Upgrade"]); return false; } - if (header["Connection"] != "Upgrade") { + if (lowerHeader["connection"] != "upgrade") { onError("invalid Connection: " + header["Connection"]); return false; } - if (!header["Sec-WebSocket-Origin"]) { - if (header["WebSocket-Origin"]) { + if (!lowerHeader["sec-websocket-origin"]) { + if (lowerHeader["websocket-origin"]) { onError( "The WebSocket server speaks old WebSocket protocol, " + "which is not supported by web-socket-js. " + @@ -338,14 +340,14 @@ public class WebSocket extends EventDispatcher { } return false; } - var resOrigin:String = header["Sec-WebSocket-Origin"].toLowerCase(); + var resOrigin:String = lowerHeader["sec-websocket-origin"]; if (resOrigin != origin) { onError("origin doesn't match: '" + resOrigin + "' != '" + origin + "'"); return false; } - if (protocol && header["Sec-WebSocket-Protocol"] != protocol) { + if (protocol && header["sec-websocket-protocol"] != protocol) { onError("protocol doesn't match: '" + - header["WebSocket-Protocol"] + "' != '" + protocol + "'"); + header["websocket-protocol"] + "' != '" + protocol + "'"); return false; } return true; |