You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by gl...@apache.org on 2003/01/02 13:57:53 UTC

cvs commit: jakarta-tomcat-connectors/jk/java/org/apache/ajp/tomcat4 Ajp13Processor.java

glenn       2003/01/02 04:57:53

  Modified:    jk/java/org/apache/ajp/tomcat4 Ajp13Processor.java
  Log:
  Make sure Ajp never gets hung due to an Exception
  
  Revision  Changes    Path
  1.11      +28 -11    jakarta-tomcat-connectors/jk/java/org/apache/ajp/tomcat4/Ajp13Processor.java
  
  Index: Ajp13Processor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/ajp/tomcat4/Ajp13Processor.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Ajp13Processor.java	30 Dec 2002 16:00:32 -0000	1.10
  +++ Ajp13Processor.java	2 Jan 2003 12:57:53 -0000	1.11
  @@ -462,9 +462,23 @@
                   }
   
                   if (!bad_request) {
  -                    connector.getContainer().invoke(request, response);
  +                    try {
  +                        connector.getContainer().invoke(request, response);
  +                    } catch (IOException ioe) {
  +                        // Pass the IOException through
  +                        throw ioe;
  +                    } catch (Throwable e) {
  +                        // A throwable here could be caused by a Valve,
  +                        // Filter, or other component in the chain.
  +                        // Processing of the request failed, return an
  +                        // Internal Server Error
  +                        logger.log("process: invoke", e);
  +                        response.sendError
  +                            (HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
  +                    }
                   } else {
  -                    response.sendError(400);
  +                    response.sendError
  +                        (HttpServletResponse.SC_BAD_REQUEST);
                   }
   
                   if (debug > 0) {
  @@ -480,13 +494,16 @@
   
               } catch (IOException ioe) {
                   // Normally this catches a socket Broken Pipe caused by the
  -                // remote client aborting the request. mod_jk will close the
  -                // socket on its side and the processor will get a socket EOF
  -                // when it next tries to read from mod_jk, then recycle itself
  -                // normally. Don't print the stack trace in this case.
  +                // remote client aborting the request. Don't print the stack
  +                // trace in this case. Then let the Processor recycle.
                   logger.log("process: IOException " + ioe.getMessage());
  +                moreRequests = false;
               } catch (Throwable e) {
  -                logger.log("process: invoke", e);
  +                // Processing the request and sending the response failed.
  +                // We don't know what the state of the Ajp Connector socket
  +                // is in. Bail out and recycle the Processor.
  +                logger.log("process: finish", e);
  +                moreRequests = false;
               }
   
               // Recycling the request and the response objects
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>