From 162500725ae1e036cb405816f867745e25458734 Mon Sep 17 00:00:00 2001 From: Kurchi Subhra Hazra Date: Mon, 13 May 2013 13:48:58 -0700 Subject: [PATCH] 8014254: Selector in HttpServer introduces a 1000 ms delay when using KeepAlive Rearrange event-handling code to remove bottle-neck. Also reviewed by mhall@mhcomputing.net. Reviewed-by: chegar, alanb --- .../classes/sun/net/httpserver/ServerImpl.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java b/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java index 69a9e6586ec..c53eede4869 100644 --- a/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java +++ b/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java @@ -321,15 +321,7 @@ class ServerImpl implements TimeSource { public void run() { while (!finished) { try { - ListIterator li = - connsToRegister.listIterator(); - for (HttpConnection c : connsToRegister) { - reRegister(c); - } - connsToRegister.clear(); - List list = null; - selector.select(1000); synchronized (lolock) { if (events.size() > 0) { list = events; @@ -343,8 +335,14 @@ class ServerImpl implements TimeSource { } } - /* process the selected list now */ + for (HttpConnection c : connsToRegister) { + reRegister(c); + } + connsToRegister.clear(); + selector.select(1000); + + /* process the selected list now */ Set selected = selector.selectedKeys(); Iterator iter = selected.iterator(); while (iter.hasNext()) {