On 08/11/2016 05:17 PM, Ramanand Patil wrote: > Webrev: http://cr.openjdk.java.net/~rpatil/8161016/webrev.00/ > > Fix: Instead of falling back to direct connection when last proxy > fails to open connection, re-try once with the last proxy. An > alternate solution can also be- don't try to open any connection when > all set proxies fails to open a connection.
I wonder if the code should traverse the last proxy within the loop, not trying to special-case it in the exception handler -- otherwise we would miss logging, exceptions, and ProxySelector notifications coming from the last proxy? E.g. instead of: 1116 } catch (IOException ioex) { 1117 if (p != Proxy.NO_PROXY) { 1118 sel.connectFailed(uri, p.address(), ioex); 1119 if (!it.hasNext()) { 1120 // re-try once with the last Proxy 1121 http = getNewHttpClient(url, p, connectTimeout, false); 1122 http.setReadTimeout(readTimeout); 1123 break; 1124 } 1125 } else { 1126 throw ioex; 1127 } 1128 continue; 1129 } ...do: } catch (IOException ioex) { if (p == Proxy.NO_PROXY) { throw ioex; } sel.connectFailed(uri, p.address(), ioex); if (it.hasNext()) { continue; // try the next Proxy } else { throw ioex; // that was the last Proxy, time to fail } } Thanks, -Aleksey