Skip to content

Commit baf5575

Browse files
authored
On unexpected connection close disallow enqueue (#79)
1 parent 7af3e3d commit baf5575

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

lib/protocol/Connection.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,12 @@ Connection.prototype.receive = function receive(buffer, cb) {
363363

364364
Connection.prototype.enqueue = function enqueue(task, cb) {
365365
var queueable;
366+
367+
if (!this._socket) {
368+
var err = new Error('Connection closed');
369+
err.code = 'EHDBCLOSE';
370+
return cb(err)
371+
}
366372
if (util.isFunction(task)) {
367373
queueable = this._queue.createTask(task, cb);
368374
queueable.name = task.name;
@@ -600,4 +606,4 @@ InitializationReply.read = function readInitializationReply(buffer) {
600606

601607
var initializationRequestBuffer = new Buffer([
602608
0xff, 0xff, 0xff, 0xff, 4, 20, 0, 4, 1, 0, 0, 1, 1, 1
603-
]);
609+
]);

test/lib.Connection.js

+12
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,9 @@ describe('Lib', function () {
324324

325325
it('should enqueue a mesage', function () {
326326
var connection = createConnection();
327+
connection._socket = {
328+
readyState: 'open'
329+
};
327330
connection._queue.pause();
328331
connection.enqueue(function firstTask() {});
329332
connection.enqueue(new lib.request.Segment(MessageType.EXECUTE));
@@ -338,6 +341,15 @@ describe('Lib', function () {
338341
taskNames.should.eql(['firstTask', 'EXECUTE', 'thirdTask']);
339342
});
340343

344+
it('should report error in enqueue when connection is invalid', function (done) {
345+
var connection = createConnection();
346+
connection._queue.pause();
347+
connection.enqueue(function firstTask() { }, function (err) {
348+
err.code.should.equal('EHDBCLOSE');
349+
done();
350+
});
351+
});
352+
341353
it('should rollback a transaction', function () {
342354
var connection = createConnection();
343355
connection.enqueue = function enqueue(msg, done) {

0 commit comments

Comments
 (0)