Folks,

If anybody's running nginx with slowcgi(8) on or before OpenBSD 5.5 release, be aware that there's a subtle error (fixed after 5.5) that silently discards HTTP headers with some referrers.

Long story: I noticed that cookies POSTed by an iPhone client were lost before being passed to a slowcgi(8) script. Several other HTTP headers were also lost (Accept-Language, etc.). But they were passed through in GET calls (and in POST from other systems). Dumping the request via tcpdump(8), I saw that each of the lost headers occured after a monster User-Agent string. In this case,

User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53

For the GET calls to the CGI via slowcgi(8), this was being invoked last, so there was no loss.

I remembered seeing something in plus.html about the following:

http://www.openbsd.org/cgi-bin/cvsweb/src/usr.sbin/slowcgi/slowcgi.c?rev=1.30;content-type=text%2Fx-cvsweb-markup

florian@ saves the day! The commit message only mentions QUERY_STRING, but as it turns out, it's also relevant to other headers. And in this case, causes silent loss. So if you're using slowcgi(8), you probably want to upgrade...

Best,

Kristaps

Reply via email to