diff --git a/lib/connectors/hybrid/switcher.js b/lib/connectors/hybrid/switcher.js index ac6584eb5..86c6e6bde 100644 --- a/lib/connectors/hybrid/switcher.js +++ b/lib/connectors/hybrid/switcher.js @@ -51,6 +51,13 @@ Switcher.prototype.newSocket = function(socket) { return; } + function onError(error) { + logger.error('socket with remote ip: %s && port: %s has error: %s', + socket.remoteAddress, socket.remotePort, error.stack); + socket.destroy(); + } + socket.on('error', onError); + socket.setTimeout(this.timeout, function() { logger.warn('connection is timeout without communication, the remote ip is %s && port is %s', socket.remoteAddress, socket.remotePort); @@ -60,6 +67,7 @@ Switcher.prototype.newSocket = function(socket) { var self = this; socket.once('data', function(data) { + socket.removeListener('error', onError); // FIXME: handle incomplete HTTP method if(isHttp(data)) { processHttp(self, self.wsprocessor, socket, data); diff --git a/lib/connectors/hybrid/tcpsocket.js b/lib/connectors/hybrid/tcpsocket.js index bfcc9eb73..1b8b4f41f 100644 --- a/lib/connectors/hybrid/tcpsocket.js +++ b/lib/connectors/hybrid/tcpsocket.js @@ -65,6 +65,7 @@ util.inherits(Socket, Stream); module.exports = Socket; Socket.prototype.send = function(msg, encode, cb) { + if (encode && encode.binary) { encode = 'utf8'; } this._socket.write(msg, encode, cb); }; diff --git a/lib/master/starter.js b/lib/master/starter.js index f23bc3647..177b15168 100644 --- a/lib/master/starter.js +++ b/lib/master/starter.js @@ -73,7 +73,7 @@ starter.run = function(app, server, cb) { cmd = util.format('cd "%s" && "%s"', app.getBase(), process.execPath); var arg = server.args; if (arg !== undefined) { - cmd += arg; + cmd += ' ' + arg; } cmd += util.format(' "%s" env=%s ', app.get(Constants.RESERVED.MAIN), env); for(key in server) {