Opened 10 years ago
Closed 10 years ago
#725 closed defect (invalid)
spdy + return <code> "some text" = Could not parse Spdy Control Frame Header
Reported by: | Slava Sterling | Owned by: | |
---|---|---|---|
Priority: | blocker | Milestone: | 1.7.10 |
Component: | nginx-module | Version: | 1.7.x |
Keywords: | spdy | Cc: | |
uname -a: | Linux 3.17.7-gentoo #1 SMP Tue Dec 30 10:17:38 EST 2014 x86_64 Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz GenuineIntel GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.7.10
TLS SNI support enabled configure arguments: --prefix=/usr --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error_log --pid-path=/run/nginx.pid --lock-path=/run/lock/nginx.lock --with-cc-opt=-I/usr/include --with-ld-opt=-L/usr/lib64 --http-log-path=/var/log/nginx/access_log --http-client-body-temp-path=//var/lib/nginx/tmp/client --http-proxy-temp-path=//var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=//var/lib/nginx/tmp/fastcgi --http-scgi-temp-path=//var/lib/nginx/tmp/scgi --http-uwsgi-temp-path=//var/lib/nginx/tmp/uwsgi --with-pcre --without-http_browser_module --without-http_empty_gif_module --without-http_geo_module --without-http_limit_req_module --without-http_limit_conn_module --without-http_map_module --without-http_memcached_module --without-http_referer_module --without-http_scgi_module --without-http_ssi_module --without-http_split_clients_module --without-http_upstream_ip_hash_module --without-http_userid_module --without-http_uwsgi_module --with-http_flv_module --with-http_spdy_module --with-http_realip_module --with-http_ssl_module --without-mail_imap_module --without-mail_pop3_module --without-mail_smtp_module --user=nginx --group=nginx |
Description
Minimal basic configuration:
server { server_name example.com; listen ...:443 ssl spdy; ssl_certificate ...; ssl_certificate_key ...; return 404; }
Works fine when requested with SPDY.
Replacing return 404;
with
return 404 "foo bar";
Getting SPDY errors in Google Chrome and Safari (whatever supports SPDY):
t=133076 [st= 0] SPDY_SESSION_PING --> is_ack = false --> type = "sent" --> unique_id = 1 t=133076 [st= 0] SPDY_SESSION_SYN_STREAM --> fin = true --> :host: example.com :method: GET :path: /? :scheme: https :version: HTTP/1.1 accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 accept-encoding: gzip, deflate, sdch accept-language: en-US,en;q=0.8,ru;q=0.6 cache-control: max-age=0 cookie: [31 bytes were stripped] dnt: 1 user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 --> spdy_priority = 0 --> stream_id = 5 --> unidirectional = false t=133110 [st= 34] SPDY_SESSION_SEND_RST_STREAM --> description = "Could not parse Spdy Control Frame Header." --> status = 1 --> stream_id = 5 t=133110 [st= 34] SPDY_SESSION_RECV_DATA --> fin = false --> size = 1026 --> stream_id = 5 t=133110 [st= 34] SPDY_SESSION_UPDATE_RECV_WINDOW --> delta = -1026 --> window_size = 10484734 t=133110 [st= 34] SPDY_STREAM_UPDATE_RECV_WINDOW --> delta = 1026 --> window_size = 10485760 t=133110 [st= 34] SPDY_SESSION_RECV_DATA --> fin = true --> size = 0 --> stream_id = 5 t=133110 [st= 34] SPDY_SESSION_PING --> is_ack = false --> type = "received" --> unique_id = 1 t=163197 [st=30121] SPDY_SESSION_CLOSE --> description = "Connection closed" --> net_error = -100 (ERR_CONNECTION_CLOSED) t=163197 [st=30121] SPDY_SESSION_POOL_REMOVE_SESSION --> source_dependency = 56010 (SPDY_SESSION) t=163197 [st=30121] -SPDY_SESSION
Now let's do 200 instead of 404:
return 200 "foo bar";
That one works just fine.
Finally, let's add:
add_header "Content-Type" "text/html";
Boom, "Could not parse Spdy Control Frame Header" again.
Change History (2)
Note:
See TracTickets
for help on using tickets.
Could you please provide your full config or/and clear steps how to reproduce it?
The config below works just fine for me:
Replying to Slava Sterling:
Of course! It's expected behaviour. You should never do that, see: #691