Skip to content

Commit

Permalink
Merge pull request #22 from mcollina/clear-outstanding-packets
Browse files Browse the repository at this point in the history
Stop ingesting packets after the client has errored
  • Loading branch information
mcollina committed Jan 5, 2016
2 parents 1fa0d2e + 563da5b commit eeb815c
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,12 @@ Client.prototype.close = function (done) {
finish()
}

this.parser.removeAllListeners('packet')
conn.removeAllListeners('readable')

if (this._keepaliveTimer) {
this._keepaliveTimer.clear()
this._keepaliveInterval = -1
this._keepaliveTimer = null
}

Expand Down
30 changes: 30 additions & 0 deletions test/regr-21.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
'use strict'

var test = require('tape').test
var helper = require('./helper')
var setup = helper.setup
var connect = helper.connect

test('after an error, outstanding packets are discarded', function (t) {
t.plan(1)
var s = connect(setup(), {
keepalive: 1000
})
var packet = {
cmd: 'publish',
topic: 'hello',
payload: 'world'
}

s.broker.mq.on('hello', function (msg, cb) {
t.pass('first msg received')
s.inStream.emit('error', new Error('something went wrong'))
setImmediate(cb)
})

s.inStream.write(packet)
setImmediate(function () {
s.inStream.write(packet)
s.inStream.write(packet)
})
})

0 comments on commit eeb815c

Please sign in to comment.