commited, thanks
2005/11/1, [EMAIL PROTECTED] <[EMAIL PROTECTED]>: > Hi, > > We ran into an issue were our client application using XMLRpcClientLite > hangs if the maximum number of concurrent requests on the server is > exceeded, i.e. runners.activeCount() > XmlRpc.getMaxThreads(). I found > that a socket is not closed in those circumstances and therefore the > client keeps waiting for the response. The proposed patch below would > take care of this issue. > > Thanks, > Elias Zaretsky. > > > Index: WebServer.java > =================================================================== > RCS file: > /home/cvspublic/ws-xmlrpc/src/java/org/apache/xmlrpc/WebServer.java,v > retrieving revision 1.28 > diff -u -r1.28 WebServer.java > --- WebServer.java 22 Apr 2005 10:25:57 -0000 1.28 > +++ WebServer.java 31 Oct 2005 22:48:56 -0000 > @@ -445,9 +445,11 @@ > { > while (listener != null) > { > + Socket socket = null; > + Runner runner = null; > try > { > - Socket socket = serverSocket.accept(); > + socket = serverSocket.accept(); > try > { > socket.setTcpNoDelay(true); > @@ -459,7 +461,7 @@ > > if (allowConnection(socket)) > { > - Runner runner = getRunner(); > + runner = getRunner(); > runner.handle(socket); > } > else > @@ -487,6 +489,19 @@ > + err + ")."); > err.printStackTrace(); > } > + finally > + { > + if (runner == null && socket != null) > + { > + try > + { > + socket.close(); > + } > + catch (Throwable e) > + { > + } > + } > + } > } > } > catch (Exception exception) >