[ https://issues.apache.org/jira/browse/TS-3415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14339307#comment-14339307 ]
Susan Hinrichs edited comment on TS-3415 at 2/27/15 3:08 AM: ------------------------------------------------------------- ts-3415.diff fixes an incorrect assumptions that the content-length field is present. In Http2ConnectionState::send_headers_frame(), it is checking if the content_length of the response header is 0. If so, it assumes there is no body and sets the END_STREAM bit in the flag. However, if there is no content-length field in the header (i.e. the content is chunked), get_content_length() still returns 0. By adding the the field presence check, we avoid that default. was (Author: shinrich): ts-3415.diff fixes an incorrect assumptions that the content-length field is present. > H2 sending FIN stream too early > ------------------------------- > > Key: TS-3415 > URL: https://issues.apache.org/jira/browse/TS-3415 > Project: Traffic Server > Issue Type: Bug > Components: HTTP/2 > Reporter: Sudheer Vinukonda > Attachments: ts-3415-3414.diff, ts-3415.diff > > > With H2 running on the docs/jenkins server, some of us have noticed empty > pages on chrome/FF when hitting those servers. Looking at the H2 traces, it > seems that ATS is sending FIN streams (both SPDY_SESSION_RECV_HEADERS and > SPDY_SESSION_RECV_DATA with fin flag set to true) before sending the data > frames. This makes the browser display blank pages. > Example: > {code} > t=31890437 [st=140] SPDY_SESSION_RECV_DATA > --> fin = true > --> size = 0 > --> stream_id = 1 > t=31890437 [st=140] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 2591 > --> stream_id = 1 > {code} > Detailed traces below: > {code} > 1112054: SPDY_SESSION > ci.trafficserver.apache.org:443 (DIRECT) > Start Time: 2015-02-26 13:30:14.060 > t=31890297 [st= 0] +SPDY_SESSION [dt=?] > --> host = "ci.trafficserver.apache.org:443" > --> proxy = "DIRECT" > t=31890297 [st= 0] SPDY_SESSION_INITIALIZED > --> protocol = "h2-14" > --> source_dependency = 1112049 (SOCKET) > t=31890297 [st= 0] SPDY_SESSION_SEND_SETTINGS > --> settings = ["[id:3 flags:0 value:1000]","[id:4 > flags:0 value:10485760]"] > t=31890297 [st= 0] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 10420224 > --> window_size = 10485760 > t=31890297 [st= 0] SPDY_SESSION_SENT_WINDOW_UPDATE_FRAME > --> delta = 10420224 > --> stream_id = 0 > t=31890297 [st= 0] SPDY_SESSION_SYN_STREAM > --> fin = true > --> :authority: ci.trafficserver.apache.org > :method: GET > :path: /job/tsqa-master/180/consoleFull > :scheme: https > 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 > cache-control: max-age=0 > cookie: [71 bytes were stripped] > 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 = 1 > --> unidirectional = false > t=31890335 [st= 38] SPDY_SESSION_RECV_SETTINGS > --> clear_persisted = false > --> host = "ci.trafficserver.apache.org:443" > t=31890335 [st= 38] SPDY_SESSION_RECV_SETTING > --> flags = 0 > --> id = 1 > --> value = 4096 > t=31890335 [st= 38] SPDY_SESSION_RECV_SETTING > --> flags = 0 > --> id = 2 > --> value = 0 > t=31890335 [st= 38] SPDY_SESSION_RECV_SETTING > --> flags = 0 > --> id = 3 > --> value = 100 > t=31890436 [st=139] SPDY_SESSION_RECV_HEADERS > --> fin = true > --> :status: 200 > age: 1 > cache-control: no-cache,no-store,must-revalidate > content-encoding: gzip > content-type: text/html;charset=UTF-8 > date: Thu, 26 Feb 2015 21:30:14 GMT > expires: Thu, 01 Jan 1970 00:00:00 GMT > server: ATS/5.3.0 > set-cookie: [67 bytes were stripped] > strict-transport-security: max-age=86400 > via: http/1.1 ATS (ApacheTrafficServer/5.3.0 > [cMsSf ]) > x-frame-options: sameorigin > x-hudson: 1.395 > x-hudson-cli-port: 40666 > x-hudson-theme: default > x-instance-identity: > MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5JuJJnF3WReAyfHqknx9O1JV3chT6Iihwk/UIOYpZ6tLORwKrzPYVO6ho7cpwT9Jtfj91lb9Gpx0FZnhGZXsdh9SMYG8gUfGo3DRy9dLkXjNu5kYo9PQk701PvnCQJSByIpzGWTCoIwfgWTGqMEuGYZ5TvRbLnmm9j9ujo2SQpOeAUXi9f0d27wcb/MOYv8H8nICgsAcpp1AaTcboabfsJYWNodDDPYvtCjfIbQhBov5qDFnsmYXbmWavXaJ2ZGI24jSmdebFcto7NlbLLAI0JFHFualDGvfcY51NGaiK1+MNxllYsEnVSP6kSdxEtJSHOxN7z6oRVGKExh104YyDQIDAQAB > x-jenkins: 1.598 > x-jenkins-cli-port: 40666 > x-jenkins-cli2-port: 40666 > x-jenkins-session: 906fc928 > --> stream_id = 1 > t=31890437 [st=140] SPDY_SESSION_RECV_DATA > --> fin = true > --> size = 0 > --> stream_id = 1 > t=31890437 [st=140] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 2591 > --> stream_id = 1 > t=31890437 [st=140] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -2591 > --> window_size = 10483169 > t=31890437 [st=140] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 2591 > --> window_size = 10485760 > t=31890437 [st=140] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 5592 > --> stream_id = 1 > t=31890437 [st=140] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -5592 > --> window_size = 10480168 > t=31890437 [st=140] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 5592 > --> window_size = 10485760 > t=31890437 [st=140] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 2591 > --> stream_id = 1 > t=31890437 [st=140] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -2591 > --> window_size = 10483169 > t=31890437 [st=140] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 2591 > --> window_size = 10485760 > t=31890488 [st=191] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 3900 > --> stream_id = 1 > t=31890488 [st=191] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -3900 > --> window_size = 10481860 > t=31890488 [st=191] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 3900 > --> window_size = 10485760 > t=31890488 [st=191] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 1692 > --> stream_id = 1 > t=31890488 [st=191] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -1692 > --> window_size = 10484068 > t=31890488 [st=191] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 1692 > --> window_size = 10485760 > t=31890488 [st=191] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 6491 > --> stream_id = 1 > t=31890488 [st=191] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -6491 > --> window_size = 10479269 > t=31890488 [st=191] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 6491 > --> window_size = 10485760 > t=31890488 [st=191] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 1692 > --> stream_id = 1 > t=31890488 [st=191] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -1692 > --> window_size = 10484068 > t=31890488 [st=191] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 1692 > --> window_size = 10485760 > t=31890488 [st=191] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 6491 > --> stream_id = 1 > t=31890488 [st=191] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -6491 > --> window_size = 10479269 > t=31890488 [st=191] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 6491 > --> window_size = 10485760 > t=31890488 [st=191] SPDY_SESSION_RECV_DATA > --> fin = false > --> size = 647 > --> stream_id = 1 > t=31890488 [st=191] SPDY_SESSION_UPDATE_RECV_WINDOW > --> delta = -647 > --> window_size = 10485113 > t=31890488 [st=191] SPDY_STREAM_UPDATE_RECV_WINDOW > --> delta = 647 > --> window_size = 10485760 > t=31890488 [st=191] SPDY_SESSION_RECV_DATA > --> fin = true > --> size = 0 > --> stream_id = 1 > t=31890490 [st=193] SPDY_SESSION_SYN_STREAM > --> fin = true > --> :authority: ci.trafficserver.apache.org > :method: GET > :path: /favicon.ico > :scheme: https > accept: */* > accept-encoding: gzip, deflate, sdch > accept-language: en-US,en;q=0.8 > cookie: [71 bytes were stripped] > if-modified-since: Fri, 30 Jan 2015 15:31:33 GMT > 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 = 4 > --> stream_id = 3 > --> unidirectional = false > t=31890555 [st=258] SPDY_SESSION_RECV_HEADERS > --> fin = true > --> :status: 304 > date: Thu, 26 Feb 2015 21:30:14 GMT > expires: Mon, 09 Feb 2015 19:39:27 GMT > server: ATS/5.3.0 > strict-transport-security: max-age=86400 > via: http/1.1 ATS (ApacheTrafficServer/5.3.0 > [cSsNfU]) > --> stream_id = 3 > t=31890555 [st=258] SPDY_SESSION_RECV_DATA > --> fin = true > --> size = 0 > --> stream_id = 3 > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)