summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi Ichikawa <gimite@gmail.com>2010-08-31 20:13:27 +0900
committerHiroshi Ichikawa <gimite@gmail.com>2010-08-31 20:13:27 +0900
commit1d0df76b4da4ba4071879e435a4de3512fd3853e (patch)
tree59f0e49104b6c7d7a8157154e14b0b6c426abb7f
parent29e7ed395724953f827a18ac582ac562e99e4920 (diff)
downloadweb-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.swfbin180127 -> 180177 bytes
-rw-r--r--flash-src/WebSocket.as18
2 files changed, 10 insertions, 8 deletions
diff --git a/WebSocketMain.swf b/WebSocketMain.swf
index 0bec17c..cadefcf 100644
--- a/WebSocketMain.swf
+++ b/WebSocketMain.swf
Binary files differ
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;