{"action":"opened","issue":{"url":"https://api.github.com/repos/carllerche/h2/issues/312","repository_url":"https://api.github.com/repos/carllerche/h2","labels_url":"https://api.github.com/repos/carllerche/h2/issues/312/labels{/name}","comments_url":"https://api.github.com/repos/carllerche/h2/issues/312/comments","events_url":"https://api.github.com/repos/carllerche/h2/issues/312/events","html_url":"https://github.com/carllerche/h2/issues/312","id":361438166,"node_id":"MDU6SXNzdWUzNjE0MzgxNjY=","number":312,"title":"Incorrect connection error on implicit stream close from window update","user":{"login":"rbtying","id":918977,"node_id":"MDQ6VXNlcjkxODk3Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/918977?v=4","gravatar_id":"","url":"https://api.github.com/users/rbtying","html_url":"https://github.com/rbtying","followers_url":"https://api.github.com/users/rbtying/followers","following_url":"https://api.github.com/users/rbtying/following{/other_user}","gists_url":"https://api.github.com/users/rbtying/gists{/gist_id}","starred_url":"https://api.github.com/users/rbtying/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rbtying/subscriptions","organizations_url":"https://api.github.com/users/rbtying/orgs","repos_url":"https://api.github.com/users/rbtying/repos","events_url":"https://api.github.com/users/rbtying/events{/privacy}","received_events_url":"https://api.github.com/users/rbtying/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-09-18T18:58:21Z","updated_at":"2018-09-18T18:58:21Z","closed_at":null,"author_association":"NONE","body":"The server is allowed to send window updates for streams which are (locally) already closed, which is handled here:\r\n\r\nhttps://github.com/carllerche/h2/blob/master/src/proto/streams/streams.rs#L398\r\n\r\nHowever, in the case where the received ID is higher than `self.next_stream_id`, this causes the connection to error with `Reason::PROTOCOL_ERROR`, rather than implicitly closing any idle streams.\r\n\r\nAccording to the HTTP/2 spec,\r\n\r\n> WINDOW_UPDATE can be sent by a peer that has sent a frame bearing the END_STREAM flag. This means that a receiver could receive a WINDOW_UPDATE frame on a \"half-closed (remote)\" or \"closed\" stream. A receiver MUST NOT treat this as an error (see Section 5.1).\r\n\r\nIn particular, treating it as a connection error causes all simultaneous requests to fail the next time we poll the connection, even if they would have succeeded."}}
{"actor":{"display_login":"rbtying"}}