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)
>

Reply via email to