Opened 11 years ago
Closed 11 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:
events { } http { include build/conf/mime.types; default_type text/plain; server { listen 443 ssl spdy; server_name localhost; ssl_certificate server-ca.crt; ssl_certificate_key server.key; return 404 "foo bar"; } }Replying to Slava Sterling <nginx.org@ss.chernousov.net>:
Of course! It's expected behaviour. You should never do that, see: #691