tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 37794] New: - getParameter() fails on POST with transfer-encoding: chunked
Date Mon, 05 Dec 2005 17:43:35 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=37794>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=37794

           Summary: getParameter() fails on POST with transfer-encoding:
                    chunked
           Product: Tomcat 5
           Version: 5.5.12
          Platform: PC
        OS/Version: Windows 2000
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Servlet & JSP API
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: ariiber@yahoo.com


Overview: When an HTTP/1.1 client (for example J2ME) POST with
transfer-encoding: chunked to a servlet, the getParameter() family and
getQueryString() methods fail to retrieve the correct result by returning
nothing. In contrast, reading until end-of-file on the servlets input stream
produces correct result.

Steps to reproduce: Send a chunked POST request, with a=0 in the first chunk,
sleep 1 s, then send &b=0 in the next, followed by a 0-chunk and trailer. On the
receiving servlet, call getParameterNames() or getParameter().

Actual Results: null

Expected results: a=0&b=1

Build: Tomcat 5.5.12

Additional Builds and Platforms:
- getParameter() does fail on:
    Tomcat 4.1.18
    Tomcat 4.1.24
    Tomcat 5.5.12
- getParameter() doesn't fail on:
    Jetty 5.1.6

Additional Information: Please refer to the log below for Tomcat behaviour. It
is from a simple test client and servlet written to demonstrate the bug.
Tomcat 5.5.12 log:

****************************
1) Reading the body - PASS *
****************************
    [junit] // testChunked(localhost, 8080)
    [junit] // Sending request to host localhost port 8080
    [junit] POST /testchunked/EchoServlet/getBody HTTP/1.1
    [junit] User-Agent: no.riiber.net.http.test.chunked.EchoClient (chunked-test)
    [junit] content-type: application/x-www-form-urlencoded
    [junit] connection: Close
    [junit] host: localhost:8080
    [junit] transfer-encoding: chunked

    [junit] 3
    [junit] a=0
    [junit] 4
    [junit] &b=1
    [junit] // Reading response from host localhost port 8080
    [junit] HTTP/1.1 200 OK
    [junit] Server: Apache-Coyote/1.1
    [junit] Content-Type: text/plain;charset=ISO-8859-1
    [junit] Content-Length: 9
    [junit] Date: Mon, 05 Dec 2005 07:48:59 GMT
    [junit] Connection: close

    [junit] a=0&b=1
    [junit] // PASS: a=0
    [junit] // PASS: &b=1
***************************************
2) Reading using getQuerySTring: FAILS
***************************************
    [junit] // testChunked(localhost, 8080)
    [junit] // Sending request to host localhost port 8080
    [junit] POST /testchunked/EchoServlet/getQueryString HTTP/1.1
    [junit] User-Agent: no.riiber.net.http.test.chunked.EchoClient (chunked-test)
    [junit] content-type: application/x-www-form-urlencoded
    [junit] connection: Close
    [junit] host: localhost:8080
    [junit] transfer-encoding: chunked

    [junit] 3
    [junit] a=0
    [junit] 4
    [junit] &b=1
    [junit] // Reading response from host localhost port 8080
    [junit] HTTP/1.1 200 OK
    [junit] Server: Apache-Coyote/1.1
    [junit] Content-Type: text/plain;charset=ISO-8859-1
    [junit] Content-Length: 6
    [junit] Date: Mon, 05 Dec 2005 07:48:59 GMT
    [junit] Connection: close

    [junit] null
    [junit] // *** FAIL: a=0 is not present in response from
/testchunked/EchoServlet/getQueryString ***
    [junit] // *** FAIL: &b=1 is not present in response from
/testchunked/EchoServlet/getQueryString ***
********************************************
3) Reading using getParameterNames(): FAILS
*********************************************
    [junit] // testChunked(localhost, 8080)
    [junit] // Sending request to host localhost port 8080
    [junit] POST /testchunked/EchoServlet/getParameterNamesAndValues HTTP/1.1
    [junit] User-Agent: no.riiber.net.http.test.chunked.EchoClient (chunked-test)
    [junit] content-type: application/x-www-form-urlencoded
    [junit] connection: Close
    [junit] host: localhost:8080
    [junit] transfer-encoding: chunked

    [junit] 3
    [junit] a=0
    [junit] 4
    [junit] &b=1
    [junit] // Reading response from host localhost port 8080
    [junit] HTTP/1.1 200 OK
    [junit] Server: Apache-Coyote/1.1
    [junit] Content-Type: text/plain;charset=ISO-8859-1
    [junit] Content-Length: 2
    [junit] Date: Mon, 05 Dec 2005 07:49:02 GMT
    [junit] Connection: close


    [junit] // *** FAIL: a=0 is not present in response from
/testchunked/EchoServlet/getParameterNamesAndValues ***
    [junit] // *** FAIL: &b=1 is not present in response from
/testchunked/EchoServlet/getParameterNamesAndValues ***

Best regards
Arne Riiber

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Mime
View raw message