https://bz.apache.org/bugzilla/show_bug.cgi?id=63350

            Bug ID: 63350
           Summary: JSP out.print() does not rethrow IOException
           Product: Tomcat 9
           Version: 9.0.19
          Hardware: PC
                OS: Mac OS X 10.1
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Jasper
          Assignee: dev@tomcat.apache.org
          Reporter: pmd1nh...@yahoo.com
  Target Milestone: -----

Hi,

The out.print() does not rethrow IOException back to the caller JSP.  While the
PrintWriter APIs do not throw any IOException, the JSPWriter (which is the type
for the implicit "out") should throw the IOException.

Simple JSP to recreate the issue:

<%
    System.out.println("JSP start");
    try {
        for (int i=0 ; i<43490 ; i++) {
           
out.print("xyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxy");
        }
        out.print("END_OF_DATA");
    }
    catch(java.io.IOException e) {
        System.out.println("caught a IOException !!!");
        e.printStackTrace(System.out);
        throw e;
    }
    System.out.println("JSP end");
 %>

While request to the JSP, immediately cancel the connection (by ctrl-C).  That
will cause a broken pipe connection and result in the IOException.

The JSPWriterImpl's "out" is back by the ServletResponse.getWriter() which is
the PrintWriter. 


private void initOut() throws IOException {
            if (out == null) {
                out = response.getWriter();
            }
}

So I think this PrintWriter has swallowed the IOException.

Thanks,

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to