Emit close code 1000 if the closing frame does not contain one.
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user