You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2001/09/28 18:57:51 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core ApplicationDispatcher.java

remm        01/09/28 09:57:51

  Modified:    catalina/src/share/org/apache/catalina/core
                        ApplicationDispatcher.java
  Log:
  - After returning from a forward, use suspend to shutdown the response,
    instead of closing it whenever possible.
  - That fixes "bug" 3704.
  
  Revision  Changes    Path
  1.26      +25 -18    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java
  
  Index: ApplicationDispatcher.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ApplicationDispatcher.java	2001/08/08 00:31:54	1.25
  +++ ApplicationDispatcher.java	2001/09/28 16:57:51	1.26
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v 1.25 2001/08/08 00:31:54 remm Exp $
  - * $Revision: 1.25 $
  - * $Date: 2001/08/08 00:31:54 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v 1.26 2001/09/28 16:57:51 remm Exp $
  + * $Revision: 1.26 $
  + * $Date: 2001/09/28 16:57:51 $
    *
    * ====================================================================
    *
  @@ -92,6 +92,7 @@
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
   import org.apache.catalina.Wrapper;
  +import org.apache.catalina.connector.ResponseFacade;
   import org.apache.catalina.core.StandardWrapper;
   import org.apache.catalina.util.InstanceSupport;
   import org.apache.catalina.util.StringManager;
  @@ -108,7 +109,7 @@
    * <code>javax.servlet.ServletResponseWrapper</code>.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.25 $ $Date: 2001/08/08 00:31:54 $
  + * @version $Revision: 1.26 $ $Date: 2001/09/28 16:57:51 $
    */
   
   final class ApplicationDispatcher
  @@ -435,23 +436,29 @@
           // Commit and close the response before we return
           if (debug >= 1)
               log(" Committing and closing response");
  -        response.flushBuffer();
  -        try {
  -            PrintWriter writer = response.getWriter();
  -            writer.flush();
  -            writer.close();
  -        } catch (IllegalStateException e) {
  +
  +        if (response instanceof ResponseFacade) {
  +            ((ResponseFacade) response).finish();
  +        } else {
  +            // Close anyway
  +            response.flushBuffer();
               try {
  -                ServletOutputStream stream = response.getOutputStream();
  -                stream.flush();
  -                stream.close();
  -            } catch (IllegalStateException f) {
  -                ;
  -            } catch (IOException f) {
  +                PrintWriter writer = response.getWriter();
  +                writer.flush();
  +                writer.close();
  +            } catch (IllegalStateException e) {
  +                try {
  +                    ServletOutputStream stream = response.getOutputStream();
  +                    stream.flush();
  +                    stream.close();
  +                } catch (IllegalStateException f) {
  +                    ;
  +                } catch (IOException f) {
  +                    ;
  +                }
  +            } catch (IOException e) {
                   ;
               }
  -        } catch (IOException e) {
  -            ;
           }
   
       }