Why different behaviour for proxy & no proxy?
more connections with no proxy
real-world browser users can do funny things, like start a request and then cancel/back button/new request.
You need to set a socket timeout. Unfortunately, the API documentation suggests no way to do so programmatically.
But you can set resquest & response timeouts via JVM system properties:
http://www.javaworld.com/community/node/8424
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/sun/net/httpserver/ServerConfig.java
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6563368
Set these system properties:
sun.net.httpserver.clockTick
sun.net.httpserver.timerMillis
sun.net.httpserver.maxReqTime Default value = -1 i.e. forever.
A default > 0 gives timeout = default * (either clockTick ot timerMillis) sec
sun.net.httpserver.maxRspTime
A default > 0 gives timeout = default * (either clockTick ot timerMillis) sec