File tree Expand file tree Collapse file tree 2 files changed +34
-1
lines changed Expand file tree Collapse file tree 2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -376,6 +376,7 @@ function socketOnData(d) {
376376 socket . removeListener ( 'data' , socketOnData ) ;
377377 socket . removeListener ( 'end' , socketOnEnd ) ;
378378 parser . finish ( ) ;
379+ freeParser ( parser , req , socket ) ;
379380
380381 var bodyHead = d . slice ( bytesParsed , d . length ) ;
381382
@@ -398,7 +399,6 @@ function socketOnData(d) {
398399 // Got Upgrade header or CONNECT method, but have no handler.
399400 socket . destroy ( ) ;
400401 }
401- freeParser ( parser , req , socket ) ;
402402 } else if ( parser . incoming && parser . incoming . complete &&
403403 // When the status code is 100 (Continue), the server will
404404 // send a final response after this client sends a request
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+
3+ const common = require ( '../common' ) ;
4+ const assert = require ( 'assert' ) ;
5+ const http = require ( 'http' ) ;
6+
7+ const server = http . createServer ( ) ;
8+
9+ server . on ( 'upgrade' , common . mustCall ( ( request , socket ) => {
10+ assert . strictEqual ( socket . parser , null ) ;
11+ socket . write ( [
12+ 'HTTP/1.1 101 Switching Protocols' ,
13+ 'Connection: Upgrade' ,
14+ 'Upgrade: WebSocket' ,
15+ '\r\n'
16+ ] . join ( '\r\n' ) ) ;
17+ } ) ) ;
18+
19+ server . listen ( common . mustCall ( ( ) => {
20+ const request = http . get ( {
21+ port : server . address ( ) . port ,
22+ headers : {
23+ Connection : 'Upgrade' ,
24+ Upgrade : 'WebSocket'
25+ }
26+ } ) ;
27+
28+ request . on ( 'upgrade' , common . mustCall ( ( response , socket ) => {
29+ assert . strictEqual ( socket . parser , null ) ;
30+ socket . destroy ( ) ;
31+ server . close ( ) ;
32+ } ) ) ;
33+ } ) ) ;
You can’t perform that action at this time.
0 commit comments