41 lines
861 B
JavaScript
41 lines
861 B
JavaScript
|
var Sequence = require('./Sequence');
|
||
|
var Util = require('util');
|
||
|
var Packets = require('../packets');
|
||
|
|
||
|
module.exports = Quit;
|
||
|
Util.inherits(Quit, Sequence);
|
||
|
function Quit(options, callback) {
|
||
|
if (!callback && typeof options === 'function') {
|
||
|
callback = options;
|
||
|
options = {};
|
||
|
}
|
||
|
|
||
|
Sequence.call(this, options, callback);
|
||
|
|
||
|
this._started = false;
|
||
|
}
|
||
|
|
||
|
Quit.prototype.end = function end(err) {
|
||
|
if (this._ended) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (!this._started) {
|
||
|
Sequence.prototype.end.call(this, err);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (err && err.code === 'ECONNRESET' && err.syscall === 'read') {
|
||
|
// Ignore read errors after packet sent
|
||
|
Sequence.prototype.end.call(this);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Sequence.prototype.end.call(this, err);
|
||
|
};
|
||
|
|
||
|
Quit.prototype.start = function() {
|
||
|
this._started = true;
|
||
|
this.emit('packet', new Packets.ComQuitPacket());
|
||
|
};
|