Fwd: Bug in URLConnection?

Christopher Hegarty -Sun Microsystems Ireland Christopher.Hegarty at Sun.COM
Mon Dec 7 09:39:13 PST 2009


Jean-Christophe Collet wrote:
>> [snip]
>>
> What's happening here is that the ProxySelector() is not called to check 
> whether the URLConnection should use a proxy but whether the Socket 
> should use a SOCKS proxy.

Good catch Jessie, I missed that.

I was just about to run the test, no need to now.

-Chris

> Hence the endless recursive loop.
> If you're going to make network calls from the ProxySelector 
> implementation (which is not recommended), make sure you cover your 
> bases to avoid that kind of problem.
> In your case, having select be:
>        @Override
>        public List<Proxy> select(URI uri) {
>        if (uri.getScheme().equalsIgnorCase("http")) { // Avoid the 
> "socket://" endless loop....
>             try {
>                  //bug here, the java doc say that this will bypass the 
> installed
>                  //proxyselector but it doesn't.
>                  URL u = new URL("http://www.google.com");
>                  URLConnection conn = u.openConnection(Proxy.NO_PROXY);
>                  conn.connect();
>              } catch (Exception ex) {
>                  
> Logger.getLogger(UserProxySelector.class.getName()).log(Level.SEVERE, 
> null, ex);
>              }
>          }
>            return Collections.singletonList(Proxy.NO_PROXY);
>        }
> 
> I'm not sure this should be considered a bug. But it might be worth it 
> to add a few notes in ProxySelector javadoc to warn against such problems.
> 



More information about the net-dev mailing list