@@ -30,7 +30,9 @@ const {
30
30
const Stream = require ( 'stream' ) ;
31
31
32
32
const kHeaders = Symbol ( 'kHeaders' ) ;
33
+ const kHeadersCount = Symbol ( 'kHeadersCount' ) ;
33
34
const kTrailers = Symbol ( 'kTrailers' ) ;
35
+ const kTrailersCount = Symbol ( 'kTrailersCount' ) ;
34
36
35
37
function readStart ( socket ) {
36
38
if ( socket && ! socket . _paused && socket . readable )
@@ -63,8 +65,10 @@ function IncomingMessage(socket) {
63
65
this . httpVersion = null ;
64
66
this . complete = false ;
65
67
this [ kHeaders ] = null ;
68
+ this [ kHeadersCount ] = 0 ;
66
69
this . rawHeaders = [ ] ;
67
70
this [ kTrailers ] = null ;
71
+ this [ kTrailersCount ] = 0 ;
68
72
this . rawTrailers = [ ] ;
69
73
70
74
this . aborted = false ;
@@ -105,7 +109,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'headers', {
105
109
const src = this . rawHeaders ;
106
110
const dst = this [ kHeaders ] ;
107
111
108
- for ( let n = 0 ; n < src . length ; n += 2 ) {
112
+ for ( let n = 0 ; n < this [ kHeadersCount ] ; n += 2 ) {
109
113
this . _addHeaderLine ( src [ n + 0 ] , src [ n + 1 ] , dst ) ;
110
114
}
111
115
}
@@ -124,7 +128,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'trailers', {
124
128
const src = this . rawTrailers ;
125
129
const dst = this [ kTrailers ] ;
126
130
127
- for ( let n = 0 ; n < src . length ; n += 2 ) {
131
+ for ( let n = 0 ; n < this [ kTrailersCount ] ; n += 2 ) {
128
132
this . _addHeaderLine ( src [ n + 0 ] , src [ n + 1 ] , dst ) ;
129
133
}
130
134
}
@@ -175,9 +179,11 @@ function _addHeaderLines(headers, n) {
175
179
let dest ;
176
180
if ( this . complete ) {
177
181
this . rawTrailers = headers ;
182
+ this [ kTrailersCount ] = n ;
178
183
dest = this [ kTrailers ] ;
179
184
} else {
180
185
this . rawHeaders = headers ;
186
+ this [ kHeadersCount ] = n ;
181
187
dest = this [ kHeaders ] ;
182
188
}
183
189
0 commit comments