Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 805bf40

Browse filesBrowse files
szmarczakBethGriggs
authored andcommitted
http2: don't expose the original socket through the socket proxy
Refs: #22486 Backport-PR-URL: #22850 PR-URL: #22650 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 60f7bfa commit 805bf40
Copy full SHA for 805bf40

File tree

Expand file treeCollapse file tree

3 files changed

+23
-27
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+23
-27
lines changed
Open diff view settings
Collapse file

‎lib/internal/http2/core.js‎

Copy file name to clipboardExpand all lines: lib/internal/http2/core.js
+12-2Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -630,14 +630,19 @@ const proxySocketHandler = {
630630
get(session, prop) {
631631
switch (prop) {
632632
case 'setTimeout':
633-
return session.setTimeout.bind(session);
633+
case 'ref':
634+
case 'unref':
635+
return session[prop].bind(session);
634636
case 'destroy':
635637
case 'emit':
636638
case 'end':
637639
case 'pause':
638640
case 'read':
639641
case 'resume':
640642
case 'write':
643+
case 'setEncoding':
644+
case 'setKeepAlive':
645+
case 'setNoDelay':
641646
throw new errors.Error('ERR_HTTP2_NO_SOCKET_MANIPULATION');
642647
default:
643648
const socket = session[kSocket];
@@ -656,7 +661,9 @@ const proxySocketHandler = {
656661
set(session, prop, value) {
657662
switch (prop) {
658663
case 'setTimeout':
659-
session.setTimeout = value;
664+
case 'ref':
665+
case 'unref':
666+
session[prop] = value;
660667
return true;
661668
case 'destroy':
662669
case 'emit':
@@ -665,6 +672,9 @@ const proxySocketHandler = {
665672
case 'read':
666673
case 'resume':
667674
case 'write':
675+
case 'setEncoding':
676+
case 'setKeepAlive':
677+
case 'setNoDelay':
668678
throw new errors.Error('ERR_HTTP2_NO_SOCKET_MANIPULATION');
669679
default:
670680
const socket = session[kSocket];
Collapse file

‎test/parallel/test-http2-socket-proxy.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-http2-socket-proxy.js
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ server.on('stream', common.mustCall(function(stream, headers) {
3838
common.expectsError(() => socket.read, errMsg);
3939
common.expectsError(() => socket.resume, errMsg);
4040
common.expectsError(() => socket.write, errMsg);
41+
common.expectsError(() => socket.setEncoding, errMsg);
42+
common.expectsError(() => socket.setKeepAlive, errMsg);
43+
common.expectsError(() => socket.setNoDelay, errMsg);
4144

4245
common.expectsError(() => (socket.destroy = undefined), errMsg);
4346
common.expectsError(() => (socket.emit = undefined), errMsg);
@@ -46,10 +49,18 @@ server.on('stream', common.mustCall(function(stream, headers) {
4649
common.expectsError(() => (socket.read = undefined), errMsg);
4750
common.expectsError(() => (socket.resume = undefined), errMsg);
4851
common.expectsError(() => (socket.write = undefined), errMsg);
52+
common.expectsError(() => (socket.setEncoding = undefined), errMsg);
53+
common.expectsError(() => (socket.setKeepAlive = undefined), errMsg);
54+
common.expectsError(() => (socket.setNoDelay = undefined), errMsg);
4955

5056
assert.doesNotThrow(() => (socket.on = socket.on));
5157
assert.doesNotThrow(() => (socket.once = socket.once));
5258

59+
socket.unref();
60+
assert.strictEqual(socket._handle.hasRef(), false);
61+
socket.ref();
62+
assert.strictEqual(socket._handle.hasRef(), true);
63+
5364
stream.respond();
5465

5566
socket.writable = 0;
Collapse file

‎test/parallel/test-http2-unbound-socket-proxy.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-http2-unbound-socket-proxy.js
-25Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,31 +39,6 @@ server.listen(0, common.mustCall(() => {
3939
}, {
4040
code: 'ERR_HTTP2_SOCKET_UNBOUND'
4141
});
42-
common.expectsError(() => {
43-
socket.ref();
44-
}, {
45-
code: 'ERR_HTTP2_SOCKET_UNBOUND'
46-
});
47-
common.expectsError(() => {
48-
socket.unref();
49-
}, {
50-
code: 'ERR_HTTP2_SOCKET_UNBOUND'
51-
});
52-
common.expectsError(() => {
53-
socket.setEncoding();
54-
}, {
55-
code: 'ERR_HTTP2_SOCKET_UNBOUND'
56-
});
57-
common.expectsError(() => {
58-
socket.setKeepAlive();
59-
}, {
60-
code: 'ERR_HTTP2_SOCKET_UNBOUND'
61-
});
62-
common.expectsError(() => {
63-
socket.setNoDelay();
64-
}, {
65-
code: 'ERR_HTTP2_SOCKET_UNBOUND'
66-
});
6742
}));
6843
}));
6944
}));

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.