@@ -45,6 +45,8 @@ class HTTPHandler {
4545 this . promise = new Promise ( ( resolve , reject ) => {
4646 this . callback = err => err ? reject ( err ) : resolve ( )
4747 } )
48+
49+ // TODO: req, res, .on('error)
4850 }
4951
5052 onConnect ( abort ) {
@@ -100,6 +102,8 @@ class WSHandler {
100102 this . promise = new Promise ( ( resolve , reject ) => {
101103 this . callback = err => err ? reject ( err ) : resolve ( )
102104 } )
105+
106+ // TODO: req, socket, .on('error)
103107 }
104108
105109 onConnect ( abort ) {
@@ -112,6 +116,8 @@ class WSHandler {
112116 }
113117
114118 onUpgrade ( statusCode , headers , socket ) {
119+ // TODO: Check statusCode?
120+
115121 if ( this . head && this . head . length ) {
116122 socket . unshift ( this . head )
117123 }
@@ -125,17 +131,12 @@ class WSHandler {
125131 proxyName : this . proxyName ,
126132 httpVersion : this . httpVersion
127133 } )
134+
128135 for ( let n = 0 ; n < headers . length ; n += 2 ) {
129136 const key = headers [ n + 0 ]
130137 const val = headers [ n + 1 ]
131138
132- if ( ! Array . isArray ( val ) ) {
133- head += `\r\n${ key } : ${ val } `
134- } else {
135- for ( let i = 0 ; i < val . length ; i ++ ) {
136- head += `\r\n${ key } : ${ val [ i ] } `
137- }
138- }
139+ head += `\r\n${ key } : ${ val } `
139140 }
140141 head += '\r\n\r\n'
141142
@@ -213,11 +214,12 @@ function getHeaders ({
213214 `proto=${ socket . encrypted ? 'https' : 'http' } ` ,
214215 `host=${ printIp ( authority || host || '' ) } `
215216 ] . join ( ';' ) )
216- } else {
217- result . push ( 'forwarded' , forwarded )
217+ } else if ( forwarded ) {
218+ // The forwarded header should not be included in response.
219+ throw new createError . BadGateway ( )
218220 }
219221
220- if ( httpVersion && proxyName ) {
222+ if ( proxyName ) {
221223 if ( via ) {
222224 if ( via . split ( ',' ) . some ( name => name . endsWith ( proxyName ) ) ) {
223225 throw new createError . LoopDetected ( )
0 commit comments