@@ -581,11 +581,7 @@ function socketOnTimeout() {
581581
582582function  socketOnClose ( socket ,  state )  { 
583583  debug ( 'server socket close' ) ; 
584-   // Mark this parser as reusable 
585-   if  ( socket . parser )  { 
586-     freeParser ( socket . parser ,  null ,  socket ) ; 
587-   } 
588- 
584+   freeParser ( socket . parser ,  null ,  socket ) ; 
589585  abortIncoming ( state . incoming ) ; 
590586} 
591587
@@ -609,18 +605,15 @@ function socketOnEnd(server, socket, parser, state) {
609605
610606  if  ( ret  instanceof  Error )  { 
611607    debug ( 'parse error' ) ; 
608+     // socketOnError has additional logic and will call socket.destroy(err). 
612609    FunctionPrototypeCall ( socketOnError ,  socket ,  ret ) ; 
613-     return ; 
614-   } 
615- 
616-   if  ( ! server . httpAllowHalfOpen )  { 
617-     abortIncoming ( state . incoming ) ; 
618-     if  ( socket . writable )  socket . end ( ) ; 
610+   }  else  if  ( ! server . httpAllowHalfOpen )  { 
611+     socket . end ( ) ; 
619612  }  else  if  ( state . outgoing . length )  { 
620613    state . outgoing [ state . outgoing . length  -  1 ] . _last  =  true ; 
621614  }  else  if  ( socket . _httpMessage )  { 
622615    socket . _httpMessage . _last  =  true ; 
623-   }  else  if   ( socket . writable )   { 
616+   }  else  { 
624617    socket . end ( ) ; 
625618  } 
626619} 
@@ -635,6 +628,7 @@ function socketOnData(server, socket, parser, state, d) {
635628
636629function  onRequestTimeout ( socket )  { 
637630  socket [ kRequestTimeout ]  =  undefined ; 
631+   // socketOnError has additional logic and will call socket.destroy(err). 
638632  ReflectApply ( socketOnError ,  socket ,  [ new  ERR_HTTP_REQUEST_TIMEOUT ( ) ] ) ; 
639633} 
640634
0 commit comments