@@ -89,23 +89,27 @@ public <T> ListenableFuture<T> sendRequest(final Request request,//
89
89
validateWebSocketRequest (request , asyncHandler );
90
90
91
91
ProxyServer proxyServer = getProxyServer (config , request );
92
- boolean connectIsDone = future != null //
93
- && future .getNettyRequest () != null //
94
- && future .getNettyRequest ().getHttpRequest ().getMethod () == HttpMethod .CONNECT //
95
- && !request .getMethod ().equals (HttpMethod .CONNECT .name ());
96
92
97
93
// websockets use connect tunnelling to work with proxies
98
- if (proxyServer != null && (request .getUri ().isSecured () || request .getUri ().isWebSocket ()) && !connectIsDone )
99
- // SSL proxy or websocket, have to handle CONNECT
94
+ if (proxyServer != null && (request .getUri ().isSecured () || request .getUri ().isWebSocket ()) && !isConnectDone (request , future ))
100
95
if (future != null && future .isConnectAllowed ())
101
- // CONNECT forced
96
+ // SSL proxy or websocket: CONNECT for sure
102
97
return sendRequestWithCertainForceConnect (request , asyncHandler , future , reclaimCache , proxyServer , true );
103
98
else
99
+ // CONNECT will depend if we can pool or connection or if we have to open a new one
104
100
return sendRequestThroughSslProxy (request , asyncHandler , future , reclaimCache , proxyServer );
105
101
else
102
+ // no CONNECT for sure
106
103
return sendRequestWithCertainForceConnect (request , asyncHandler , future , reclaimCache , proxyServer , false );
107
104
}
108
105
106
+ private boolean isConnectDone (Request request ,NettyResponseFuture <?> future ) {
107
+ return future != null //
108
+ && future .getNettyRequest () != null //
109
+ && future .getNettyRequest ().getHttpRequest ().getMethod () == HttpMethod .CONNECT //
110
+ && !request .getMethod ().equals (HttpMethod .CONNECT .name ());
111
+ }
112
+
109
113
/**
110
114
* We know for sure if we have to force to connect or not, so we can build
111
115
* the HttpRequest right away This reduces the probability of having a
@@ -211,7 +215,7 @@ private <T> ListenableFuture<T> sendRequestWithOpenChannel(Request request, Prox
211
215
future .setChannelState (ChannelState .POOLED );
212
216
future .attachChannel (channel , false );
213
217
214
- LOGGER .debug ("Using cached Channel {} for {} '{}'" , channel , future .getNettyRequest ().getHttpRequest ().getMethod (), future .getNettyRequest ().getHttpRequest ().getUri ());
218
+ LOGGER .debug ("Using open Channel {} for {} '{}'" , channel , future .getNettyRequest ().getHttpRequest ().getMethod (), future .getNettyRequest ().getHttpRequest ().getUri ());
215
219
216
220
if (Channels .isChannelValid (channel )) {
217
221
Channels .setAttribute (channel , future );
@@ -452,7 +456,7 @@ private Channel pollPooledChannel(Request request, ProxyServer proxy, AsyncHandl
452
456
final Channel channel = channelManager .poll (uri , virtualHost , proxy , request .getConnectionPoolPartitioning ());
453
457
454
458
if (channel != null ) {
455
- LOGGER .debug ("Using cached Channel {}\n for uri {}\n " , channel , uri );
459
+ LOGGER .debug ("Using polled Channel {}\n for uri {}\n " , channel , uri );
456
460
}
457
461
return channel ;
458
462
}
0 commit comments