@@ -417,38 +417,45 @@ function responseOnEnd() {
417417 }
418418}
419419
420+ function tickOnSocket ( req , socket ) {
421+ var parser = parsers . alloc ( ) ;
422+ req . socket = socket ;
423+ req . connection = socket ;
424+ parser . reinitialize ( HTTPParser . RESPONSE ) ;
425+ parser . socket = socket ;
426+ parser . incoming = null ;
427+ req . parser = parser ;
428+
429+ socket . parser = parser ;
430+ socket . _httpMessage = req ;
431+
432+ // Setup "drain" propogation.
433+ httpSocketSetup ( socket ) ;
434+
435+ // Propagate headers limit from request object to parser
436+ if ( util . isNumber ( req . maxHeadersCount ) ) {
437+ parser . maxHeaderPairs = req . maxHeadersCount << 1 ;
438+ } else {
439+ // Set default value because parser may be reused from FreeList
440+ parser . maxHeaderPairs = 2000 ;
441+ }
442+
443+ parser . onIncoming = parserOnIncomingClient ;
444+ socket . on ( 'error' , socketErrorListener ) ;
445+ socket . on ( 'data' , socketOnData ) ;
446+ socket . on ( 'end' , socketOnEnd ) ;
447+ socket . on ( 'close' , socketCloseListener ) ;
448+ req . emit ( 'socket' , socket ) ;
449+ }
450+
420451ClientRequest . prototype . onSocket = function ( socket ) {
421452 var req = this ;
422453
423454 process . nextTick ( function ( ) {
424- var parser = parsers . alloc ( ) ;
425- req . socket = socket ;
426- req . connection = socket ;
427- parser . reinitialize ( HTTPParser . RESPONSE ) ;
428- parser . socket = socket ;
429- parser . incoming = null ;
430- req . parser = parser ;
431-
432- socket . parser = parser ;
433- socket . _httpMessage = req ;
434-
435- // Setup "drain" propogation.
436- httpSocketSetup ( socket ) ;
437-
438- // Propagate headers limit from request object to parser
439- if ( util . isNumber ( req . maxHeadersCount ) ) {
440- parser . maxHeaderPairs = req . maxHeadersCount << 1 ;
441- } else {
442- // Set default value because parser may be reused from FreeList
443- parser . maxHeaderPairs = 2000 ;
444- }
445-
446- parser . onIncoming = parserOnIncomingClient ;
447- socket . on ( 'error' , socketErrorListener ) ;
448- socket . on ( 'data' , socketOnData ) ;
449- socket . on ( 'end' , socketOnEnd ) ;
450- socket . on ( 'close' , socketCloseListener ) ;
451- req . emit ( 'socket' , socket ) ;
455+ // If a domain was added to the request, attach it to the socket.
456+ if ( req . domain )
457+ socket . _handle . addAsyncListener ( req . domain . _listener ) ;
458+ tickOnSocket ( req , socket ) ;
452459 } ) ;
453460
454461} ;
0 commit comments