[ 
https://issues.apache.org/jira/browse/MODPYTHON-255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12717145#action_12717145
 ] 

Graham Dumpleton commented on MODPYTHON-255:
--------------------------------------------

Also blows up in odd ways when using daemon mode of mod_wsgi and in that case 
the way that mod_wsgi interacts with input filter chain is pretty well the same 
as mod_cgi and mod_cgid.

[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : 'abcd'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter write()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : 'efgh'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter write()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : 'ijkl'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter write()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : 'mnop'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter write()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : 'qrst'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter write()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : 'uvwx'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter write()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : 'yz'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter write()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : None
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter close()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter exit()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter : None
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter close()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter exit()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] inputfilter read()
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] mod_python (pid=50046, 
interpreter='home.dscpl.com.au', phase='Filter: myfilter', 
handler='/Users/grahamd/Sites/inputfilter.mpy'): Application error
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] ServerName: 
'home.dscpl.com.au'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] DocumentRoot: 
'/Library/WebServer/Documents'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] URI: 
'/~grahamd/echo.wsgi'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] Location: None
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] Directory: None
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] Filename: 
'/Users/grahamd/Sites/echo.wsgi'
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] PathInfo: ''
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] Traceback (most recent 
call last):
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5]   File 
"/Library/Python/2.5/site-packages/mod_python/importer.py", line 1386, in 
FilterDispatch\n    arg=filter, silent=0)
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5]   File 
"/Library/Python/2.5/site-packages/mod_python/importer.py", line 1229, in 
_process_target\n    result = _execute_target(config, req, object, arg)
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5]   File 
"/Library/Python/2.5/site-packages/mod_python/importer.py", line 1128, in 
_execute_target\n    result = object(arg)
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5]   File 
"/Users/grahamd/Sites/inputfilter.mpy", line 8, in inputfilter\n    s = 
filter.read(4)
[Mon Jun 08 14:32:28 2009] [error] [client 192.168.1.5] IOError: Input filter 
read error



> PythonInputFilter doesn't appear to work for chunked request content.
> ---------------------------------------------------------------------
>
>                 Key: MODPYTHON-255
>                 URL: https://issues.apache.org/jira/browse/MODPYTHON-255
>             Project: mod_python
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.3.1
>            Reporter: Graham Dumpleton
>
> If PythonInputFilter is used to create an input filter, but content handler 
> isn't actually mod_python but another module which can handle chunked request 
> content, and a request is sent with chunked request content, then things just 
> don't seem to work as one would expect.
> For example, if use:
> $ curl -d "abcdefghijklmnopqrstuvwxyz" 
> http://home.dscpl.com.au/~grahamd/echo.wsgi --header "Transfer-Encoding: 
> chunked"
> Where the .wsgi script is for mod_wsgi and is:
> import StringIO
> def application(environ, start_response):
>     headers = []
>     headers.append(('Content-type', 'text/plain'))
>     start_response('200 OK', headers)
>     input = environ['wsgi.input']
>     output = StringIO.StringIO()
>     keys = environ.keys()
>     keys.sort()
>     for key in keys:
>         print >> output, '%s: %s' % (key, repr(environ[key]))
>     print >> output
>     length = int(environ.get('CONTENT_LENGTH', '0'))
>     #output.write(input.read(length))
>     output.write(input.read())
>     return [output.getvalue()]
> and the input filter itself is:
> from mod_python import apache
> def inputfilter(filter):
>     filter.req.log_error("inputfilter")
>     filter.req.log_error("inputfilter read()")
>     s = filter.read()
>     filter.req.log_error("inputfilter : %s" % repr(s))
>     while s:
>         filter.req.log_error("inputfilter write()")
>         filter.write(s)
>         filter.req.log_error("inputfilter read()")
>         s = filter.read()
>         filter.req.log_error("inputfilter : %s" % repr(s))
>     if s is None:
>         filter.req.log_error("inputfilter close()")
>         filter.close()
>         filter.req.log_error("inputfilter exit()")
> The curl just hangs and logged output is:
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter read()
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter : 
> 'abcdefghijklmnopqrstuvwxyz'
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter write()
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter read()
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter read()
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter : '\\r\\n'
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter write()
> [Mon Jun 08 14:10:37 2009] [error] [client 192.168.1.5] inputfilter read()
> First off, a '\r\n' is coming from somewhere when it should and then it just 
> blocks on read().
> Whatever sentinel is used in input stream to indicate end of chunked request 
> content, it isn't being recognised by mod_python. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to