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

            Bug ID: 57638
           Summary: IllegalArgumentException in AjpNioProcessor when
                    packetSize > 8192
           Product: Tomcat 8
           Version: 8.0.20
          Hardware: PC
                OS: Mac OS X 10.1
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: ch...@christopherschultz.net

For reference: http://markmail.org/thread/vu7kgdpqxdw7tlkz

This stack trace is from 8.0.17 but I have been able to reproduce it in 8.0.20
and 7.0.56 - 7.0.59:

java.lang.IllegalArgumentException
        at java.nio.Buffer.limit(Buffer.java:275)
        at
org.apache.coyote.ajp.AjpNioProcessor.readSocket(AjpNioProcessor.java:179)
        at
org.apache.coyote.ajp.AjpNioProcessor.read(AjpNioProcessor.java:159)
        at
org.apache.coyote.ajp.AbstractAjpProcessor.readMessage(AbstractAjpProcessor.java:1067)
        at
org.apache.coyote.ajp.AbstractAjpProcessor.receive(AbstractAjpProcessor.java:1005)
        at
org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:1131)

Connector configuration:

    <Connector port="@connector-port@"
       redirectPort="443"
           protocol="org.apache.coyote.ajp.AjpNioProtocol"
        URIEncoding="UTF-8"
         packetSize="65536"
           executor="tomcatThreadPool" />

Here's what I know so far:

1. AjpNioProtocol fails under some conditions (my post-login page)
   with packetSize larger than the default (I have tried 65536, 32768,
   16184, and 8200). The failing page is ~30k in size, enough to
   exceed the default packet size but not e.g. maximum 64k

2. Using AjpProtocol (BIO) connector solves the problem

3. Using the default AJP packet size (8192) solves the problem

4. Specifying socket.appReadBufSize and socket.appWriteBufSize to be
the same as the packet size solves the problem

I'm still working on a small test case to help motivate debugging.

Wild-guessing that the root cause is mismatched buffer sizes, or lack of
checking when using a smaller protocol buffer than whatever buffer is pumping
into the protocol's buffer.

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