On Fri, 28 Mar 2014 22:38:25 +0100 (CET), Daniel Stenberg wrote:

> Google does not believe in doing plain-text http2 so I think this is on 
> purpose. They will simply require https to speak http2.
> 
> That's basically the same situation like with SPDY.

I notice with Firefox etc, Google's homepage just redirects to the
secure version, so it's odd we get a 400 here rather than a 302
redirect.

Twitter - which fully supports HTTP2 as far as I can tell from the
Curl logging - redirects to the secure version of their site rather
than throwing up a 400.

> If it isn't just an oversight or just-not-implemented-yet on their part, 
> there's nothing libcurl can do. The plain-text way to do http2 is to use 
> Upgrade: exactly like that but it of course only works if the server then 
> responds with an actual upgraded protocol...

Hmm, OK.  The more I think about this the more it seems like a server
problem.  If it isn't talking plain text HTTP2, then it ought to be
ignoring the Upgrade: header anyway?

I found another plain text http2 problem after I posted that.  On the
nghttp2 test server libcurl gets stuck requesting data.  Again, the
easy test is with the curl command line tool:
curl -v --http2 http://106.186.112.116/

The output is attached.

Thanks
Chris
* Hostname was NOT found in DNS cache
*   Trying 106.186.112.116...
* Connected to 106.186.112.116 (106.186.112.116) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.36.0
> Host: 106.186.112.116
> Accept: */*
> Connection: Upgrade, HTTP2-Settings
> Upgrade: HTTP-draft-09/2.0
> HTTP2-Settings: AAAABAAAAGQAAAAHAAD//w==
> 
< HTTP/1.1 101 Switching Protocols
< Connection: Upgrade
< Upgrade: HTTP-draft-09/2.0
* Received 101
* We have switched to HTTP2
* http2_recv: 16384 bytes buffer
* nread=3311
* nghttp2_session_mem_recv() returns 3311
* before_frame_send() was called
* on_frame_send() was called
* before_frame_send() was called
* on_frame_send() was called
* http2_recv: 16384 bytes buffer
* nread=8
* on_frame_recv() was called with header 4
* nghttp2_session_mem_recv() returns 8
* http2_recv: 16384 bytes buffer
* nread=16
* on_frame_recv() was called with header 7
* nghttp2_session_mem_recv() returns 16
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
* http2_recv: 16384 bytes buffer
* nread=0
* nghttp2_session_mem_recv() returns 0
*** BREAK
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to