Skip to content

Commit 805bf40

Browse 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

3 files changed

Lines changed: 23 additions & 27 deletions

File tree

‎lib/internal/http2/core.js‎

Lines 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-
returnsession.setTimeout.bind(session);
633+
case'ref':
634+
case'unref':
635+
returnsession[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
thrownewerrors.Error('ERR_HTTP2_NO_SOCKET_MANIPULATION');
642647
default:
643648
constsocket=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
returntrue;
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
thrownewerrors.Error('ERR_HTTP2_NO_SOCKET_MANIPULATION');
669679
default:
670680
constsocket=session[kSocket];

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

Lines 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;

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

Lines 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)