nginx and http/2

CJ Ess zxcvbn4038 at gmail.com
Mon Jun 27 21:33:12 UTC 2016


I finally had a chance to test this, I applied ce94f07d5082 to the 1.9.15
code -- it applied cleanly and compiled cleanly. However, my test post
request over http2 with curl failed with the same "client sent stream with
data before settings were acknowledged while processing HTTP/2 connection"
error. Are there other changes in 1.11.x that I might need? Do I need to
explicitly enable the preread functionality? It looked to me as-if it was
enabled by default.

The error does seem to be 100% reproducible, the command I am running is:

curl --http2 -k -v -X POST -H "Content-Type: application/json" -d "{}" "
https://test-server_name/"

And my curl is: curl 7.49.1 (x86_64-pc-linux-gnu) libcurl/7.49.1
OpenSSL/1.0.2h nghttp2/1.11.1


On Sun, Jun 26, 2016 at 8:55 AM, Valentin V. Bartenev <vbart at nginx.com>
wrote:

> On Saturday 25 June 2016 21:00:37 CJ Ess wrote:
> > I could use some help with this one - I took a big leap with enabling
> > http/2 support and I got knocked back really quick. There seems to be an
> > issue with POSTs and it seems to be more pronounced with ios devices (as
> > much as you can trust user agents) but there were some non-ios devices
> that
> > seemed to be having issues also. Unfortunately I had to pull the changes
> > quickly so I didn't get to capture too much debugging information (plus
> all
> > the connections were via tls 1.2 w/ diffie-hellman so even if I had
> quickly
> > taken a packet dump I wouldn't have been able to decrypt it).
> >
> > So I built a version of curl with http/2 support to try and reproduce:
> >
> > curl 7.49.1 (x86_64-pc-linux-gnu) libcurl/7.49.1 OpenSSL/1.0.2h
> > nghttp2/1.11.1
> > Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s
> rtsp
> > smb smbs smtp smtps telnet tftp
> > Features: IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP HTTP2 UnixSockets
> >
> > I did a test POST request with http/1 and I got a 200 response.
> >
> > I did the same POST request via http/2 and the tls handshake completed
> but
> > the connection was closed shortly thereafter. The error I see in the log
> > file is "client sent stream with data before settings were acknowledged
> > while processing HTTP/2 connection" I see other references to this error
> on
> > POST requests when I googled for it, but I didn't see a solution. This
> > sounds like an interoperability issue but I'd be shocked if I'm the first
> > one to find something like that.
> >
> [..]
>
> You're not the first one, so the problem was resolved by this change:
> http://hg.nginx.org/nginx/rev/ce94f07d5082 (nginx 1.11.0)
>
>   wbr, Valentin V. Bartenev
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20160627/ff2ceba6/attachment.html>


More information about the nginx mailing list