#15890 closed Bug (duplicate)
uWsgi + empty POST request causes Django to hang/crash
Reported by: | brendoncrawford | Owned by: | nobody |
---|---|---|---|
Component: | HTTP handling | Version: | 1.3 |
Severity: | Normal | Keywords: | wsgi |
Cc: | django@… | Triage Stage: | Accepted |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Tested with uWsgi 0.9.7.2, which is currently the latest stable.
Submitting a POST request with no parameters will for some reason cause django to hang and/or crash. This bug does not occur when using runserver, so it seems to be a problem with the Django WSGI handler.
Change History (4)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Keywords: | wsgi added |
---|---|
Triage Stage: | Unreviewed → Accepted |
In uWSGI, environ['wsgi.input']
is a file object.
At some point Django calls read()
on it without providing a size argument and blocks.
Here's a minimal example without uWSGI:
import sys from django.conf import settings settings.configure(DATABASES={'default': {'ENGINE': 'django.db.backends.sqlite3'}}) from django.test.client import RequestFactory extra = { 'CONTENT_LENGTH': 0, 'wsgi.input': sys.stdin, } request = RequestFactory().post('/', content_type='application/x-www-form-urlencoded', **extra) # Blocks instead of printing False: print 'a' in request.POST
This doesn't happen after applying the patch in #15785.
comment:3 by , 14 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
This appears to be a consequence of the problem described in #15785.
The latest patch on that ticket is marked as RFC and vung verified that it fixes this one too.
So I am going to close as duplicate.
I've never seen any report like this with any other WSGI server, so I think it's significantly more likely it's an issue in uWSGI, can you create some sort of reproducible test case without uWSGI?