Stop hiding exceptions in WebSock class
Let them application decide how to deal with such things and do not enforce this particular model, which easily hides bugs.
This commit is contained in:
parent
a49ade5fa0
commit
1678bf860f
|
@ -306,46 +306,18 @@ Websock.prototype = {
|
||||||
},
|
},
|
||||||
|
|
||||||
_recv_message: function (e) {
|
_recv_message: function (e) {
|
||||||
try {
|
this._decode_message(e.data);
|
||||||
this._decode_message(e.data);
|
if (this.rQlen() > 0) {
|
||||||
if (this.rQlen() > 0) {
|
this._eventHandlers.message();
|
||||||
this._eventHandlers.message();
|
// Compact the receive queue
|
||||||
// Compact the receive queue
|
if (this._rQlen == this._rQi) {
|
||||||
if (this._rQlen == this._rQi) {
|
this._rQlen = 0;
|
||||||
this._rQlen = 0;
|
this._rQi = 0;
|
||||||
this._rQi = 0;
|
} else if (this._rQlen > this._rQmax) {
|
||||||
} else if (this._rQlen > this._rQmax) {
|
this._expand_compact_rQ();
|
||||||
this._expand_compact_rQ();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Log.Debug("Ignoring empty message");
|
|
||||||
}
|
|
||||||
} catch (exc) {
|
|
||||||
var exception_str = "";
|
|
||||||
if (exc.name) {
|
|
||||||
exception_str += "\n name: " + exc.name + "\n";
|
|
||||||
exception_str += " message: " + exc.message + "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof exc.description !== 'undefined') {
|
|
||||||
exception_str += " description: " + exc.description + "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof exc.stack !== 'undefined') {
|
|
||||||
exception_str += exc.stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exception_str.length > 0) {
|
|
||||||
Log.Error("recv_message, caught exception: " + exception_str);
|
|
||||||
} else {
|
|
||||||
Log.Error("recv_message, caught exception: " + exc);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof exc.name !== 'undefined') {
|
|
||||||
this._eventHandlers.error(exc.name + ": " + exc.message);
|
|
||||||
} else {
|
|
||||||
this._eventHandlers.error(exc);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
Log.Debug("Ignoring empty message");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -392,15 +392,6 @@ describe('Websock', function() {
|
||||||
expect(sock.get_rQi()).to.equal(0);
|
expect(sock.get_rQi()).to.equal(0);
|
||||||
expect(sock._rQ.length).to.equal(240); // keep the invariant that rQbufferSize / 8 >= rQlen
|
expect(sock._rQ.length).to.equal(240); // keep the invariant that rQbufferSize / 8 >= rQlen
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should call the error event handler on an exception', function () {
|
|
||||||
sock._eventHandlers.error = sinon.spy();
|
|
||||||
sock._eventHandlers.message = sinon.stub().throws();
|
|
||||||
var msg = { data: new Uint8Array([1, 2, 3]).buffer };
|
|
||||||
sock._mode = 'binary';
|
|
||||||
sock._recv_message(msg);
|
|
||||||
expect(sock._eventHandlers.error).to.have.been.calledOnce;
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Data encoding', function () {
|
describe('Data encoding', function () {
|
||||||
|
|
Loading…
Reference in New Issue