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

This commit is contained in:
Fedor Indutny 2010-09-15 14:19:10 +07:00
parent 7249ef3ee7
commit cd78af5fea

View File

@ -315,19 +315,33 @@ HttpProxy.prototype = {
sdata = sdata
.replace(remote_host, host)
.replace(remote_host, host);
try {
// Write printable
socket.write(sdata);
// 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
try {
request.write(head);
} catch(e) {
request.end();
socket.end();
}
self.unwatch(socket);
});
@ -340,14 +354,23 @@ HttpProxy.prototype = {
reverse_proxy.on('data', listeners._r_data = function(data) {
// Pass data to client
if (socket.writable) {
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
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();
});