Skip to content

Commit 0c97366

Browse files
authored
Merge pull request webtorrent#215 from feross/upgradereq
Delete `socket.upgradeReq` when it is no longer needed to reduce memory usage
2 parents 1631f61 + a09158b commit 0c97366

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

lib/server/parse-websocket.js

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,27 @@ function parseWebSocketRequest (socket, opts, params) {
5252
throw new Error('invalid action in WS request: ' + params.action)
5353
}
5454

55-
params.ip = opts.trustProxy
56-
? socket.upgradeReq.headers['x-forwarded-for'] || socket.upgradeReq.connection.remoteAddress
57-
: socket.upgradeReq.connection.remoteAddress.replace(common.REMOVE_IPV4_MAPPED_IPV6_RE, '') // force ipv4
58-
params.port = socket.upgradeReq.connection.remotePort
59-
if (params.port) {
60-
params.addr = (common.IPV6_RE.test(params.ip) ? '[' + params.ip + ']' : params.ip) + ':' + params.port
55+
// On first parse, save important data from `socket.upgradeReq` and delete it
56+
// to reduce memory usage.
57+
if (socket.upgradeReq) {
58+
socket.ip = opts.trustProxy
59+
? socket.upgradeReq.headers['x-forwarded-for'] || socket.upgradeReq.connection.remoteAddress
60+
: socket.upgradeReq.connection.remoteAddress.replace(common.REMOVE_IPV4_MAPPED_IPV6_RE, '') // force ipv4
61+
socket.port = socket.upgradeReq.connection.remotePort
62+
if (socket.port) {
63+
socket.addr = (common.IPV6_RE.test(socket.ip) ? '[' + socket.ip + ']' : socket.ip) + ':' + socket.port
64+
}
65+
66+
socket.headers = socket.upgradeReq.headers
67+
68+
// Delete `socket.upgradeReq` when it is no longer needed to reduce memory usage
69+
socket.upgradeReq = null
6170
}
6271

63-
params.headers = socket.upgradeReq.headers
72+
params.ip = socket.ip
73+
params.port = socket.port
74+
params.addr = socket.addr
75+
params.headers = socket.headers
6476

6577
return params
6678
}

0 commit comments

Comments
 (0)