{"action":"created","issue":{"url":"https://api.github.com/repos/molnarg/node-http2/issues/74","labels_url":"https://api.github.com/repos/molnarg/node-http2/issues/74/labels{/name}","comments_url":"https://api.github.com/repos/molnarg/node-http2/issues/74/comments","events_url":"https://api.github.com/repos/molnarg/node-http2/issues/74/events","html_url":"https://github.com/molnarg/node-http2/issues/74","id":38213821,"number":74,"title":"Handle socket errors in server code","user":{"login":"snorp","id":31482,"avatar_url":"https://avatars.githubusercontent.com/u/31482?v=3","gravatar_id":"","url":"https://api.github.com/users/snorp","html_url":"https://github.com/snorp","followers_url":"https://api.github.com/users/snorp/followers","following_url":"https://api.github.com/users/snorp/following{/other_user}","gists_url":"https://api.github.com/users/snorp/gists{/gist_id}","starred_url":"https://api.github.com/users/snorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snorp/subscriptions","organizations_url":"https://api.github.com/users/snorp/orgs","repos_url":"https://api.github.com/users/snorp/repos","events_url":"https://api.github.com/users/snorp/events{/privacy}","received_events_url":"https://api.github.com/users/snorp/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2014-07-18T21:29:59Z","updated_at":"2016-01-09T00:18:13Z","closed_at":null,"body":"Right now, in server code, nothing really happens if the socket goes away. All streams remain open and attempting to send data, outgoing frames are queued, etc. It is not totally clear to me from reading the spec what should happen. A few thoughts:\r\n\r\n* We could respond to the socket with a GOAWAY frame. Probably won't get there, but seems \"right\".\r\n* We need some way to close the currently open streams from the server's point of view. I think just setting their state to CLOSED is the right thing (and emitting appropriate events in the OutgoingResponse object), but the spec doesn't really say if that's valid or not.\r\n* Another option would be to not modify any of the actual HTTP state in the stream, but simply emit a 'close' or 'error' event on the OutgoingResponse object. That way we aren't faking any state changes, but applications are still able to stop sending data to a dead client."},"comment":{"url":"https://api.github.com/repos/molnarg/node-http2/issues/comments/170165563","html_url":"https://github.com/molnarg/node-http2/issues/74#issuecomment-170165563","issue_url":"https://api.github.com/repos/molnarg/node-http2/issues/74","id":170165563,"user":{"login":"snorp","id":31482,"avatar_url":"https://avatars.githubusercontent.com/u/31482?v=3","gravatar_id":"","url":"https://api.github.com/users/snorp","html_url":"https://github.com/snorp","followers_url":"https://api.github.com/users/snorp/followers","following_url":"https://api.github.com/users/snorp/following{/other_user}","gists_url":"https://api.github.com/users/snorp/gists{/gist_id}","starred_url":"https://api.github.com/users/snorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snorp/subscriptions","organizations_url":"https://api.github.com/users/snorp/orgs","repos_url":"https://api.github.com/users/snorp/repos","events_url":"https://api.github.com/users/snorp/events{/privacy}","received_events_url":"https://api.github.com/users/snorp/received_events","type":"User","site_admin":false},"created_at":"2016-01-09T00:18:13Z","updated_at":"2016-01-09T00:18:13Z","body":"It's probably still a thing, but no, I don't care :)"}}