Issue Details (XML | Word | Printable)

Key: MODPYTHON-153
Type: New Feature New Feature
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Graham Dumpleton
Reporter: Graham Dumpleton
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
mod_python

Add req.discard_request_body().

Created: 02/Apr/06 05:21 PM   Updated: 11/Apr/07 11:39 AM
Return to search
Component/s: core
Affects Version/s: None
Fix Version/s: 3.3.1

Time Tracking:
Not Specified

Resolution Date: 02/Apr/06 06:47 PM


 Description  « Hide
In HTTP/1.1 any method may include a request body, whereas in HTTP/1.0 only POST and PUT were allowed to. To avoid any potential problems if a handler were trying to emulate in part the default Apache handler for requests, in would be appropriate for a handler to ensure that any request body is discarded. Apache provides a function specifically for this purpose which is called ap_discard_request_body(). For completeness this function should be available in the request object API as req.discard_request_body().

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Repository Revision Date User Message
ASF #390804 Sun Apr 02 10:24:21 UTC 2006 grahamd Added req.discard_request_body() function as wrapper for similar function
provided by Apache C API. The function tests for and reads any message body
in the request, simply discarding whatever it receives. (MODPYTHON-153)
Files Changed
MODIFY /httpd/mod_python/trunk/test/htdocs/tests.py
MODIFY /httpd/mod_python/trunk/Doc/modpython4.tex
MODIFY /httpd/mod_python/trunk/test/test.py
MODIFY /httpd/mod_python/trunk/src/requestobject.c
MODIFY /httpd/mod_python/trunk/lib/python/mod_python/__init__.py
MODIFY /httpd/mod_python/trunk/Doc/appendixc.tex
MODIFY /httpd/mod_python/trunk/src/include/mpversion.h

Graham Dumpleton made changes - 02/Apr/06 05:29 PM
Field Original Value New Value
Status Open [ 1 ] In Progress [ 3 ]
Graham Dumpleton added a comment - 02/Apr/06 05:32 PM
Here is the prototype and documentation:

/**
 * In HTTP/1.1, any method can have a body. However, most GET handlers
 * wouldn't know what to do with a request body if they received one.
 * This helper routine tests for and reads any message body in the request,
 * simply discarding whatever it receives. We need to do this because
 * failing to read the request body would cause it to be interpreted
 * as the next request on a persistent connection.
 * @param r The current request
 * @return error status if request is malformed, OK otherwise
 */
AP_DECLARE(int) ap_discard_request_body(request_rec *r);

Note that by rights, mod_python.publisher and mod_python.psp should both call this method for GET requests. As pointed out in documentation above, if it didn't and GET request contained content then not discarding it can stuff up a following request if a persistent connection is used and multiple requests are pipelined.

Graham Dumpleton added a comment - 02/Apr/06 06:47 PM
New function added, but decision as to whether this function should be called by mod_python.publisher and mod_python.psp for a GET request defered to another time and to be dealt with as separate issue if need be.

Graham Dumpleton made changes - 02/Apr/06 06:47 PM
Fix Version/s 3.3 [ 12310101 ]
Resolution Fixed [ 1 ]
Status In Progress [ 3 ] Resolved [ 5 ]
Graham Dumpleton made changes - 11/Apr/07 11:39 AM
Status Resolved [ 5 ] Closed [ 6 ]