Skip to content

Commit

Permalink
'end' event becomes 'close', added more try-catch handling
Browse files Browse the repository at this point in the history
  • Loading branch information
indutny committed Sep 15, 2010
1 parent 7249ef3 commit cd78af5
Showing 1 changed file with 36 additions and 13 deletions.
49 changes: 36 additions & 13 deletions lib/node-http-proxy.js
Expand Up @@ -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) {
Expand All @@ -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
Expand All @@ -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();
});
Expand Down

0 comments on commit cd78af5

Please sign in to comment.