mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
[fix] Memory leak hunting.
This commit is contained in:
parent
e1c41d0694
commit
ca1d12cf1b
@ -174,6 +174,14 @@ exports.buffer = function (obj) {
|
||||
obj.removeListener('data', onData);
|
||||
obj.removeListener('end', onEnd);
|
||||
},
|
||||
destroy: function () {
|
||||
this.end();
|
||||
this.resume = function () {
|
||||
console.error("Cannot resume buffer after destroying it.");
|
||||
};
|
||||
|
||||
onData = onEnd = events = obj = null;
|
||||
},
|
||||
resume: function () {
|
||||
this.end();
|
||||
for (var i = 0, len = events.length; i < len; ++i) {
|
||||
|
||||
@ -279,9 +279,13 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// If we have been passed buffered data, resume it.
|
||||
if (buffer && !errState) {
|
||||
buffer.resume();
|
||||
//
|
||||
if (buffer) {
|
||||
return !errState
|
||||
? buffer.resume()
|
||||
: buffer.destroy();
|
||||
}
|
||||
};
|
||||
|
||||
@ -419,6 +423,7 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
|
||||
reverseProxy.incoming.socket.write(data);
|
||||
}
|
||||
catch (ex) {
|
||||
detach();
|
||||
reverseProxy.incoming.socket.end();
|
||||
proxySocket.end();
|
||||
}
|
||||
@ -429,12 +434,13 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
|
||||
// Any outgoing data on this Websocket from the proxy target
|
||||
// will be written to the `proxySocket` socket.
|
||||
//
|
||||
reverseProxy.incoming.socket.on('data', listeners.onOutgoing = function(data) {
|
||||
reverseProxy.incoming.socket.on('data', listeners.onOutgoing = function (data) {
|
||||
try {
|
||||
self.emit('websocket:incoming', reverseProxy, reverseProxy.incoming, head, data);
|
||||
proxySocket.write(data);
|
||||
}
|
||||
catch (ex) {
|
||||
detach();
|
||||
proxySocket.end();
|
||||
socket.end();
|
||||
}
|
||||
@ -625,7 +631,9 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
|
||||
//
|
||||
// If we have been passed buffered data, resume it.
|
||||
//
|
||||
if (buffer && !errState) {
|
||||
buffer.resume();
|
||||
if (buffer) {
|
||||
return !errState
|
||||
? buffer.resume()
|
||||
: buffer.destroy();
|
||||
}
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user