mirror of
https://github.com/unmojang/node-minecraft-protocol.git
synced 2025-10-03 07:59:50 -04:00
Improved error handling
This commit is contained in:
parent
84079bb0a8
commit
2b1a0f86cd
@ -108,11 +108,13 @@ Client.prototype.setSocket = function(socket) {
|
|||||||
this.emit('end', this._endReason);
|
this.emit('end', this._endReason);
|
||||||
};
|
};
|
||||||
|
|
||||||
var onError = (err) => {
|
var onFatalError = (err) => {
|
||||||
this.emit('error', err);
|
this.emit('error', err);
|
||||||
endSocket();
|
endSocket();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var onError = (err) => this.emit('error', err);
|
||||||
|
|
||||||
this.socket = socket;
|
this.socket = socket;
|
||||||
|
|
||||||
if(this.socket.setNoDelay)
|
if(this.socket.setNoDelay)
|
||||||
@ -120,10 +122,14 @@ Client.prototype.setSocket = function(socket) {
|
|||||||
|
|
||||||
this.socket.on('connect', () => this.emit('connect'));
|
this.socket.on('connect', () => this.emit('connect'));
|
||||||
|
|
||||||
this.socket.on('error', onError);
|
this.socket.on('error', onFatalError);
|
||||||
this.socket.on('close', endSocket);
|
this.socket.on('close', endSocket);
|
||||||
this.socket.on('end', endSocket);
|
this.socket.on('end', endSocket);
|
||||||
this.socket.on('timeout', endSocket);
|
this.socket.on('timeout', endSocket);
|
||||||
|
this.serializer.on('error', onError);
|
||||||
|
this.deserializer.on('error', onError);
|
||||||
|
this.framer.on('error', onError);
|
||||||
|
this.splitter.on('error', onError);
|
||||||
|
|
||||||
this.socket.pipe(this.splitter).pipe(this.deserializer);
|
this.socket.pipe(this.splitter).pipe(this.deserializer);
|
||||||
this.serializer.pipe(this.framer).pipe(this.socket);
|
this.serializer.pipe(this.framer).pipe(this.socket);
|
||||||
@ -147,9 +153,11 @@ Client.prototype.setEncryption = function(sharedSecret) {
|
|||||||
if (this.cipher != null)
|
if (this.cipher != null)
|
||||||
throw new Error("Set encryption twice !");
|
throw new Error("Set encryption twice !");
|
||||||
this.cipher = crypto.createCipheriv('aes-128-cfb8', sharedSecret, sharedSecret);
|
this.cipher = crypto.createCipheriv('aes-128-cfb8', sharedSecret, sharedSecret);
|
||||||
|
this.cipher.on('error', (err) => this.emit('error', err));
|
||||||
this.framer.unpipe(this.socket);
|
this.framer.unpipe(this.socket);
|
||||||
this.framer.pipe(this.cipher).pipe(this.socket);
|
this.framer.pipe(this.cipher).pipe(this.socket);
|
||||||
this.decipher = crypto.createDecipheriv('aes-128-cfb8', sharedSecret, sharedSecret);
|
this.decipher = crypto.createDecipheriv('aes-128-cfb8', sharedSecret, sharedSecret);
|
||||||
|
this.decipher.on('error', (err) => this.emit('error', err));
|
||||||
this.socket.unpipe(this.splitter);
|
this.socket.unpipe(this.splitter);
|
||||||
this.socket.pipe(this.decipher).pipe(this.splitter);
|
this.socket.pipe(this.decipher).pipe(this.splitter);
|
||||||
}
|
}
|
||||||
@ -157,9 +165,11 @@ Client.prototype.setEncryption = function(sharedSecret) {
|
|||||||
Client.prototype.setCompressionThreshold = function(threshold) {
|
Client.prototype.setCompressionThreshold = function(threshold) {
|
||||||
if (this.compressor == null) {
|
if (this.compressor == null) {
|
||||||
this.compressor = compression.createCompressor(threshold);
|
this.compressor = compression.createCompressor(threshold);
|
||||||
|
this.compressor.on('error', (err) => this.emit('error', err));
|
||||||
this.serializer.unpipe(this.framer);
|
this.serializer.unpipe(this.framer);
|
||||||
this.serializer.pipe(this.compressor).pipe(this.framer);
|
this.serializer.pipe(this.compressor).pipe(this.framer);
|
||||||
this.decompressor = compression.createDecompressor(threshold);
|
this.decompressor = compression.createDecompressor(threshold);
|
||||||
|
this.decompressor.on('error', (err) => this.emit('error', err));
|
||||||
this.splitter.unpipe(this.deserializer);
|
this.splitter.unpipe(this.deserializer);
|
||||||
this.splitter.pipe(this.decompressor).pipe(this.deserializer);
|
this.splitter.pipe(this.decompressor).pipe(this.deserializer);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user