@@ -30,7 +30,9 @@ const {
3030const Stream = require ( 'stream' ) ;
3131
3232const kHeaders = Symbol ( 'kHeaders' ) ;
33+ const kHeadersCount = Symbol ( 'kHeadersCount' ) ;
3334const kTrailers = Symbol ( 'kTrailers' ) ;
35+ const kTrailersCount = Symbol ( 'kTrailersCount' ) ;
3436
3537function readStart ( socket ) {
3638 if ( socket && ! socket . _paused && socket . readable )
@@ -63,8 +65,10 @@ function IncomingMessage(socket) {
6365 this . httpVersion = null ;
6466 this . complete = false ;
6567 this [ kHeaders ] = null ;
68+ this [ kHeadersCount ] = 0 ;
6669 this . rawHeaders = [ ] ;
6770 this [ kTrailers ] = null ;
71+ this [ kTrailersCount ] = 0 ;
6872 this . rawTrailers = [ ] ;
6973
7074 this . aborted = false ;
@@ -105,7 +109,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'headers', {
105109 const src = this . rawHeaders ;
106110 const dst = this [ kHeaders ] ;
107111
108- for ( let n = 0 ; n < src . length ; n += 2 ) {
112+ for ( let n = 0 ; n < this [ kHeadersCount ] ; n += 2 ) {
109113 this . _addHeaderLine ( src [ n + 0 ] , src [ n + 1 ] , dst ) ;
110114 }
111115 }
@@ -124,7 +128,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'trailers', {
124128 const src = this . rawTrailers ;
125129 const dst = this [ kTrailers ] ;
126130
127- for ( let n = 0 ; n < src . length ; n += 2 ) {
131+ for ( let n = 0 ; n < this [ kTrailersCount ] ; n += 2 ) {
128132 this . _addHeaderLine ( src [ n + 0 ] , src [ n + 1 ] , dst ) ;
129133 }
130134 }
@@ -175,9 +179,11 @@ function _addHeaderLines(headers, n) {
175179 let dest ;
176180 if ( this . complete ) {
177181 this . rawTrailers = headers ;
182+ this [ kTrailersCount ] = n ;
178183 dest = this [ kTrailers ] ;
179184 } else {
180185 this . rawHeaders = headers ;
186+ this [ kHeadersCount ] = n ;
181187 dest = this [ kHeaders ] ;
182188 }
183189
0 commit comments