<div dir="ltr">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.<div><br></div><div>The error does seem to be 100% reproducible, the command I am running is:</div><div><br></div><div>curl --http2 -k -v -X POST -H "Content-Type: application/json" -d "{}" "<a href="https://test-server_name/">https://test-server_name/</a>"<br><div><div><br></div><div>And my curl is: <span style="font-size:12.8px">curl 7.49.1 (x86_64-pc-linux-gnu) libcurl/7.49.1 OpenSSL/1.0.2h nghttp2/1.11.1</span></div></div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jun 26, 2016 at 8:55 AM, Valentin V. Bartenev <span dir="ltr"><<a href="mailto:vbart@nginx.com" target="_blank">vbart@nginx.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Saturday 25 June 2016 21:00:37 CJ Ess wrote:<br>
> I could use some help with this one - I took a big leap with enabling<br>
> http/2 support and I got knocked back really quick. There seems to be an<br>
> issue with POSTs and it seems to be more pronounced with ios devices (as<br>
> much as you can trust user agents) but there were some non-ios devices that<br>
> seemed to be having issues also. Unfortunately I had to pull the changes<br>
> quickly so I didn't get to capture too much debugging information (plus all<br>
> the connections were via tls 1.2 w/ diffie-hellman so even if I had quickly<br>
> taken a packet dump I wouldn't have been able to decrypt it).<br>
><br>
> So I built a version of curl with http/2 support to try and reproduce:<br>
><br>
> curl 7.49.1 (x86_64-pc-linux-gnu) libcurl/7.49.1 OpenSSL/1.0.2h<br>
> nghttp2/1.11.1<br>
> Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp<br>
> smb smbs smtp smtps telnet tftp<br>
> Features: IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP HTTP2 UnixSockets<br>
><br>
> I did a test POST request with http/1 and I got a 200 response.<br>
><br>
> I did the same POST request via http/2 and the tls handshake completed but<br>
> the connection was closed shortly thereafter. The error I see in the log<br>
> file is "client sent stream with data before settings were acknowledged<br>
> while processing HTTP/2 connection" I see other references to this error on<br>
> POST requests when I googled for it, but I didn't see a solution. This<br>
> sounds like an interoperability issue but I'd be shocked if I'm the first<br>
> one to find something like that.<br>
><br>
</span>[..]<br>
<br>
You're not the first one, so the problem was resolved by this change:<br>
<a href="http://hg.nginx.org/nginx/rev/ce94f07d5082" rel="noreferrer" target="_blank">http://hg.nginx.org/nginx/rev/ce94f07d5082</a> (nginx 1.11.0)<br>
<br>
wbr, Valentin V. Bartenev<br>
<br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
</blockquote></div><br></div>