Commit cd78af5f authored by Fedor Indutny's avatar Fedor Indutny

'end' event becomes 'close', added more try-catch handling

parent 7249ef3e
......@@ -315,22 +315,36 @@ HttpProxy.prototype = {
sdata = sdata
.replace(remote_host, host)
.replace(remote_host, host);
try {
// Write printable
socket.write(sdata);
// Write printable
socket.write(sdata);
// Write non-printable
socket.write(data);
// Write non-printable
socket.write(data);
} catch (e) {
request.end();
socket.end();
}
// Catch socket errors
socket.on('error', function() {
request.end();
});
// Remove data listener
request.socket.removeListener('data', t);
});
// Write upgrade-head
request.write(head);
try {
request.write(head);
} catch(e) {
request.end();
socket.end();
}
self.unwatch(socket);
});
// Request
function onUpgrade(reverse_proxy) {
......@@ -340,14 +354,23 @@ HttpProxy.prototype = {
reverse_proxy.on('data', listeners._r_data = function(data) {
// Pass data to client
if (socket.writable) {
socket.write(data);
try {
socket.write(data);
} catch (e) {
socket.end();
reverse_proxy.end();
}
}
});
socket.on('data', listeners._data = function(data){
// Pass data from client to server
// Socket thougth that it isn't writable
reverse_proxy.write(data);
try {
reverse_proxy.write(data);
} catch (e) {
reverse_proxy.end();
socket.end();
}
});
// Detach event listeners from reverse_proxy
......@@ -359,12 +382,12 @@ HttpProxy.prototype = {
}
// Hook disconnections
reverse_proxy.on('close', listeners._r_close = function() {
reverse_proxy.on('end', listeners._r_close = function() {
socket.end();
detach();
});
socket.on('close', listeners._close = function() {
socket.on('end', listeners._close = function() {
reverse_proxy.end();
detach();
});
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment