@@ -66,15 +66,15 @@ function constructProxyHeaderWhiteList(headers, proxyHeaderWhiteList) {
6666 } , { } )
6767}
6868
69- function constructTunnelOptions ( request ) {
69+ function constructTunnelOptions ( request , proxyHeaders ) {
7070 var proxy = request . proxy
7171
7272 var tunnelOptions = {
7373 proxy : {
7474 host : proxy . hostname ,
7575 port : + proxy . port ,
7676 proxyAuth : proxy . auth ,
77- headers : request . proxyHeaders
77+ headers : proxyHeaders
7878 } ,
7979 headers : request . headers ,
8080 ca : request . ca ,
@@ -107,6 +107,8 @@ function getTunnelFn(request) {
107107
108108function Tunnel ( request ) {
109109 this . request = request
110+ this . proxyHeaderWhiteList = defaultProxyHeaderWhiteList
111+ this . proxyHeaderExclusiveList = [ ]
110112}
111113
112114Tunnel . prototype . isEnabled = function ( options ) {
@@ -136,10 +138,12 @@ Tunnel.prototype.isEnabled = function (options) {
136138 return undefined
137139}
138140
139- Tunnel . prototype . setup = function ( ) {
141+ Tunnel . prototype . setup = function ( options ) {
140142 var self = this
141143 , request = self . request
142144
145+ options = options || { }
146+
143147 if ( typeof request . proxy === 'string' ) {
144148 request . proxy = url . parse ( request . proxy )
145149 }
@@ -149,20 +153,26 @@ Tunnel.prototype.setup = function () {
149153 }
150154
151155 // Setup Proxy Header Exclusive List and White List
152- request . proxyHeaderExclusiveList = request . proxyHeaderExclusiveList || [ ]
153- request . proxyHeaderWhiteList = request . proxyHeaderWhiteList || defaultProxyHeaderWhiteList
154- var proxyHeaderExclusiveList = request . proxyHeaderExclusiveList . concat ( defaultProxyHeaderExclusiveList )
155- var proxyHeaderWhiteList = request . proxyHeaderWhiteList . concat ( proxyHeaderExclusiveList )
156+ if ( options . proxyHeaderWhiteList ) {
157+ self . proxyHeaderWhiteList = options . proxyHeaderWhiteList
158+ }
159+ if ( options . proxyHeaderExclusiveList ) {
160+ self . proxyHeaderExclusiveList = options . proxyHeaderExclusiveList
161+ }
162+
163+ var proxyHeaderExclusiveList = self . proxyHeaderExclusiveList . concat ( defaultProxyHeaderExclusiveList )
164+ var proxyHeaderWhiteList = self . proxyHeaderWhiteList . concat ( proxyHeaderExclusiveList )
156165
157166 // Setup Proxy Headers and Proxy Headers Host
158167 // Only send the Proxy White Listed Header names
159- request . proxyHeaders = constructProxyHeaderWhiteList ( request . headers , proxyHeaderWhiteList )
160- request . proxyHeaders . host = constructProxyHost ( request . uri )
168+ var proxyHeaders = constructProxyHeaderWhiteList ( request . headers , proxyHeaderWhiteList )
169+ proxyHeaders . host = constructProxyHost ( request . uri )
170+
161171 proxyHeaderExclusiveList . forEach ( request . removeHeader , request )
162172
163173 // Set Agent from Tunnel Data
164174 var tunnelFn = getTunnelFn ( request )
165- var tunnelOptions = constructTunnelOptions ( request )
175+ var tunnelOptions = constructTunnelOptions ( request , proxyHeaders )
166176 request . agent = tunnelFn ( tunnelOptions )
167177
168178 return true
0 commit comments