hotfix: clear the offline queue when once written

This commit is contained in:
Henrik Tudborg 2016-04-18 20:20:10 +02:00 committed by James E. King III
parent 79c2337705
commit c035eca3c6

View File

@ -74,10 +74,7 @@ var Connection = exports.Connection = function(stream, options) {
this.framePos = 0;
this.frame = null;
self.initialize_retry_vars();
self.offline_queue.forEach(function(data) {
self.connection.write(data);
});
self.flush_offline_queue();
self.emit("connect");
});
@ -177,6 +174,18 @@ Connection.prototype.initialize_retry_vars = function () {
this.attempts = 0;
};
Connection.prototype.flush_offline_queue = function () {
var self = this;
var offline_queue = this.offline_queue;
// Reset offline queue
this.offline_queue = [];
// Attempt to write queued items
offline_queue.forEach(function(data) {
self.write(data);
});
};
Connection.prototype.write = function(data) {
if (!this.connected) {
this.offline_queue.push(data);
@ -311,10 +320,7 @@ var StdIOConnection = exports.StdIOConnection = function(command, options) {
this.frame = null;
this.connected = true;
self.offline_queue.forEach(function(data) {
self.connection.write(data);
});
self.flush_offline_queue();
this.connection.addListener("error", function(err) {
self.emit("error", err);
@ -359,6 +365,18 @@ StdIOConnection.prototype.end = function() {
this.connection.end();
};
StdIOConnection.prototype.flush_offline_queue = function () {
var self = this;
var offline_queue = this.offline_queue;
// Reset offline queue
this.offline_queue = [];
// Attempt to write queued items
offline_queue.forEach(function(data) {
self.write(data);
});
};
StdIOConnection.prototype.write = function(data) {
if (!this.connected) {
this.offline_queue.push(data);