[prev in list] [next in list] [prev in thread] [next in thread]
List: xmlrpc-dev
Subject: Re: [PATCH] Socket not closed when exception caught in listener loop
From: Henri Gomez <henri.gomez () gmail ! com>
Date: 2005-11-18 7:17:06
Message-ID: 6291fc850511172317o20943833h () mail ! gmail ! com
[Download RAW message or body]
commited, thanks
2005/11/1, Elias.Zaretsky@nokia.com <Elias.Zaretsky@nokia.com>:
> 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)
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic