Hi!

I bumped - in production, alas - into an issue where certain browsers (Dolphin 
HD for Android, for instance) got an empty response from uwsgi.
Looking at the logs, this was apparently caused by the security check on 
plugins/http.c:474 (uwsgi-1.3-snapshot2):

if (c >= MAX_HTTP_VEC-4) {
  uwsgi_log("too much headers in request. skipping it.\n");
  return 0;
}

So, as an emergency patch, I changed MAX_HTTP_VEC from 128 to 512 and 
recompiled the server binary. I noticed this same constant defines the number 
of iovecs available per HTTP session as the (fairly cryptic) `uss' field in the 
http session struct. (What's that anyway?)

I'm wondering: what problems, if any, might I expect to run into due to this 
#define change?

I'm also seriously considering switching to have a "dummy" nginx in front of 
uwsgi (that proxies all requests to uwsgi) in hopes of having a more robust 
HTTP parser - would you think this would be a Good Idea? I'd like to keep the 
server architecture as light as possible. (Another thought: One could perhaps 
replace uwsgi's implementation of HTTP parsing with the seriously 
tried-and-tested Joyent parser that in turn is based on the Nginx parser: 
https://github.com/joyent/http-parser)

Thanks!
Aarni Koskela
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to