{"action":"created","issue":{"url":"https://api.github.com/repos/carllerche/h2/issues/83","repository_url":"https://api.github.com/repos/carllerche/h2","labels_url":"https://api.github.com/repos/carllerche/h2/issues/83/labels{/name}","comments_url":"https://api.github.com/repos/carllerche/h2/issues/83/comments","events_url":"https://api.github.com/repos/carllerche/h2/issues/83/events","html_url":"https://github.com/carllerche/h2/issues/83","id":256910223,"number":83,"title":"Current handling of GOAWAY is pretty broken","user":{"login":"carllerche","id":6180,"avatar_url":"https://avatars3.githubusercontent.com/u/6180?v=4","gravatar_id":"","url":"https://api.github.com/users/carllerche","html_url":"https://github.com/carllerche","followers_url":"https://api.github.com/users/carllerche/followers","following_url":"https://api.github.com/users/carllerche/following{/other_user}","gists_url":"https://api.github.com/users/carllerche/gists{/gist_id}","starred_url":"https://api.github.com/users/carllerche/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carllerche/subscriptions","organizations_url":"https://api.github.com/users/carllerche/orgs","repos_url":"https://api.github.com/users/carllerche/repos","events_url":"https://api.github.com/users/carllerche/events{/privacy}","received_events_url":"https://api.github.com/users/carllerche/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/carllerche/h2/milestones/1","html_url":"https://github.com/carllerche/h2/milestone/1","labels_url":"https://api.github.com/repos/carllerche/h2/milestones/1/labels","id":2775056,"number":1,"title":"v0.1","description":"Initial release of h2 0.1.","creator":{"login":"carllerche","id":6180,"avatar_url":"https://avatars3.githubusercontent.com/u/6180?v=4","gravatar_id":"","url":"https://api.github.com/users/carllerche","html_url":"https://github.com/carllerche","followers_url":"https://api.github.com/users/carllerche/followers","following_url":"https://api.github.com/users/carllerche/following{/other_user}","gists_url":"https://api.github.com/users/carllerche/gists{/gist_id}","starred_url":"https://api.github.com/users/carllerche/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carllerche/subscriptions","organizations_url":"https://api.github.com/users/carllerche/orgs","repos_url":"https://api.github.com/users/carllerche/repos","events_url":"https://api.github.com/users/carllerche/events{/privacy}","received_events_url":"https://api.github.com/users/carllerche/received_events","type":"User","site_admin":false},"open_issues":15,"closed_issues":11,"state":"open","created_at":"2017-09-18T17:41:13Z","updated_at":"2017-10-04T22:22:11Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2017-09-12T03:55:05Z","updated_at":"2017-10-05T00:33:53Z","closed_at":null,"author_association":"OWNER","body":"Right now, `GOAWAY` is interpreted as a signal to reset all streams. This, however, is not correct behavior."},"comment":{"url":"https://api.github.com/repos/carllerche/h2/issues/comments/334327224","html_url":"https://github.com/carllerche/h2/issues/83#issuecomment-334327224","issue_url":"https://api.github.com/repos/carllerche/h2/issues/83","id":334327224,"user":{"login":"seanmonstar","id":51479,"avatar_url":"https://avatars1.githubusercontent.com/u/51479?v=4","gravatar_id":"","url":"https://api.github.com/users/seanmonstar","html_url":"https://github.com/seanmonstar","followers_url":"https://api.github.com/users/seanmonstar/followers","following_url":"https://api.github.com/users/seanmonstar/following{/other_user}","gists_url":"https://api.github.com/users/seanmonstar/gists{/gist_id}","starred_url":"https://api.github.com/users/seanmonstar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seanmonstar/subscriptions","organizations_url":"https://api.github.com/users/seanmonstar/orgs","repos_url":"https://api.github.com/users/seanmonstar/repos","events_url":"https://api.github.com/users/seanmonstar/events{/privacy}","received_events_url":"https://api.github.com/users/seanmonstar/received_events","type":"User","site_admin":false},"created_at":"2017-10-05T00:33:53Z","updated_at":"2017-10-05T00:33:53Z","author_association":"COLLABORATOR","body":"So for now then, I'll assume to try for graceful shutdown no matter the error code, and allow the remote to hang up if it didn't want to shutdown gracefully. It seems that is what the spec suggests to do.\r\n\r\n-----\r\n\r\nAs I implement this, I'm left with a couple of questions due to ambiguity, so I'll air them out here:\r\n\r\n1. If both sides gracefully shutdown using `NO_ERROR`, should an `Err` really be returned from `Connection::poll`, or should it map `NO_ERROR` (assuming no other errors existed between receiving that goaway) as `Ok(())`. It feels like it should just be `Ok(())`, mimic EOF in `Read` that returns `Ok(0)`.\r\n2. If the remote sends a GOAWAY, but does allow some more processing of streams, when we send the returning GOAWAY, should it include the same reason code, or should it send `NO_ERROR` if there aren't any errors shutting down?"}}
{"actor":{"display_login":"seanmonstar"}}