Issue Details (XML | Word | Printable)

Key: MODPYTHON-179
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Jim Gallacher
Reporter: Jim Gallacher
Votes: 0
Watchers: 0
Operations

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

req.readlines(sizehint) does not work correctly

Created: 08/Jul/06 08:41 AM   Updated: 01/May/07 10:36 AM
Return to search
Component/s: core
Affects Version/s: 3.2.8
Fix Version/s: 3.3.1

Time Tracking:
Not Specified

Environment: All

Resolution Date: 09/Jul/06 08:03 PM


 Description  « Hide
A bug in req_readlines(sizehint) in requestobject.c causes output to be returned prematurely for any value of the optional sizehint argument.

The faulty bit of code is:

 line = req_readline(self, rlargs);
    while (line && (PyString_Size(line)>0)) {
        PyList_Append(result, line);
        size += PyString_Size(line);
        if ((sizehint != -1) && (size >= size))
            break;
         line = req_readline(self, args);
     }

Since (size >= size) will always be true, reading the input stream will end prematurely for any value of sizehint != -1.

This code will fix the problem.

--- requestobject.c (revision 417294)
+++ requestobject.c (working copy)
@@ -1154,7 +1154,7 @@
     while (line && (PyString_Size(line)>0)) {
         PyList_Append(result, line);
         size += PyString_Size(line);
- if ((sizehint != -1) && (size >= size))
+ if ((sizehint != -1) && (size >= sizehint))
             break;
         line = req_readline(self, args);
     }

Once that is fixed the documentation needs to be revised, as it does not accurately reflect the behaviour of the code.

Currently the docs are:
"""Reads all or up to sizehint bytes of lines using readline and returns a list of the lines read."""

whereas the code can read beyond sizehint. The total read could actually be sizehint + len(line) where line is the last line read.




 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Nicolas Lehuen added a comment - 09/Jul/06 08:03 PM
Fixed and added two unit tests on the trunk. Apply revision #420288 if this needs to be backported on the 3.2 branch.