Emit close code 1000 if the closing frame does not contain one.

This commit is contained in:
James Coglan
2015-07-15 18:04:02 +01:00
parent c84cce9a1f
commit 70ef5440c4
2 changed files with 18 additions and 3 deletions
+4 -3
View File
@@ -94,6 +94,7 @@ var instance = {
},
ERROR_CODES: [1000, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011],
DEFAULT_ERROR_CODE: 1000,
MIN_RESERVED_ERROR: 3000,
MAX_RESERVED_ERROR: 4999,
@@ -403,8 +404,8 @@ var instance = {
return this._emitMessage(this._message);
if (opcode === this.OPCODES.close) {
code = (payload.length >= 2) ? 256 * payload[0] + payload[1] : null;
reason = (payload.length > 2) ? this._encode(payload.slice(2)) : null;
code = (payload.length >= 2) ? 256 * payload[0] + payload[1] : this.DEFAULT_ERROR_CODE;
reason = (payload.length > 2) ? this._encode(payload.slice(2)) : '';
if (!(payload.length === 0) &&
!(code !== null && code >= this.MIN_RESERVED_ERROR && code <= this.MAX_RESERVED_ERROR) &&
@@ -414,7 +415,7 @@ var instance = {
if (payload.length > 125 || (payload.length > 2 && !reason))
code = this.ERRORS.protocol_error;
this._shutdown(code, reason || '');
this._shutdown(code, reason);
}
if (opcode === this.OPCODES.ping) {
+14
View File
@@ -595,6 +595,20 @@ test.describe("Hybi", function() { with(this) {
this.driver().parse([0x88, 0x04, 0x03, 0xe9, 0x4f, 0x4b])
}})
}})
describe("receiving a close frame with no code", function() { with(this) {
before(function() { with(this) {
this.driver().parse([0x88, 0x00])
}})
it("triggers the onclose event with code 1000", function() { with(this) {
assertEqual( [1000, ""], close )
}})
it("changes the state to closed", function() { with(this) {
assertEqual( "closed", driver().getState() )
}})
}})
}})
describe("in the closed state", function() { with(this) {