mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
[fix minor] Prevent crashes from attempting to remove listeners more than once when proxying websocket requests.
This commit is contained in:
parent
2055d0c8ec
commit
a681493371
@ -472,6 +472,8 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
|
|||||||
// the appropriate events.
|
// the appropriate events.
|
||||||
//
|
//
|
||||||
function onUpgrade (reverseProxy, proxySocket) {
|
function onUpgrade (reverseProxy, proxySocket) {
|
||||||
|
var detached;
|
||||||
|
|
||||||
if (!reverseProxy) {
|
if (!reverseProxy) {
|
||||||
proxySocket.end();
|
proxySocket.end();
|
||||||
socket.end();
|
socket.end();
|
||||||
@ -543,12 +545,15 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
|
|||||||
// from `reverseProxy` and `proxySocket`.
|
// from `reverseProxy` and `proxySocket`.
|
||||||
//
|
//
|
||||||
function detach() {
|
function detach() {
|
||||||
proxySocket.destroySoon();
|
if (!detached) {
|
||||||
proxySocket.removeListener('end', listeners.onIncomingClose);
|
detached = true;
|
||||||
proxySocket.removeListener('data', listeners.onIncoming);
|
proxySocket.destroySoon();
|
||||||
reverseProxy.incoming.socket.destroySoon();
|
proxySocket.removeListener('end', listeners.onIncomingClose);
|
||||||
reverseProxy.incoming.socket.removeListener('end', listeners.onOutgoingClose);
|
proxySocket.removeListener('data', listeners.onIncoming);
|
||||||
reverseProxy.incoming.socket.removeListener('data', listeners.onOutgoing);
|
reverseProxy.incoming.socket.destroySoon();
|
||||||
|
reverseProxy.incoming.socket.removeListener('end', listeners.onOutgoingClose);
|
||||||
|
reverseProxy.incoming.socket.removeListener('data', listeners.onOutgoing);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user