{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc/issues/957","labels_url":"https://api.github.com/repos/grpc/grpc/issues/957/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc/issues/957/comments","events_url":"https://api.github.com/repos/grpc/grpc/issues/957/events","html_url":"https://github.com/grpc/grpc/issues/957","id":59997372,"number":957,"title":"Stream ID issue for HTTP/2","user":{"login":"vjpai","id":8864912,"avatar_url":"https://avatars.githubusercontent.com/u/8864912?v=3","gravatar_id":"","url":"https://api.github.com/users/vjpai","html_url":"https://github.com/vjpai","followers_url":"https://api.github.com/users/vjpai/followers","following_url":"https://api.github.com/users/vjpai/following{/other_user}","gists_url":"https://api.github.com/users/vjpai/gists{/gist_id}","starred_url":"https://api.github.com/users/vjpai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vjpai/subscriptions","organizations_url":"https://api.github.com/users/vjpai/orgs","repos_url":"https://api.github.com/users/vjpai/repos","events_url":"https://api.github.com/users/vjpai/events{/privacy}","received_events_url":"https://api.github.com/users/vjpai/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-03-05T18:52:00Z","updated_at":"2015-03-05T20:41:58Z","closed_at":null,"body":"Some issues that we need to support related to the HTTP/2 stream ID\r\n\r\n1. Check that the incoming stream ID follows the expected invariant of always increasing by 2 or more\r\n2. Send a go away on a transport if the stream is reaching too close to the limit (2^32)\r\n3. Write a test to confirm that the above 2 things actually happen\r\n"},"comment":{"url":"https://api.github.com/repos/grpc/grpc/issues/comments/77447362","html_url":"https://github.com/grpc/grpc/issues/957#issuecomment-77447362","issue_url":"https://api.github.com/repos/grpc/grpc/issues/957","id":77447362,"user":{"login":"vjpai","id":8864912,"avatar_url":"https://avatars.githubusercontent.com/u/8864912?v=3","gravatar_id":"","url":"https://api.github.com/users/vjpai","html_url":"https://github.com/vjpai","followers_url":"https://api.github.com/users/vjpai/followers","following_url":"https://api.github.com/users/vjpai/following{/other_user}","gists_url":"https://api.github.com/users/vjpai/gists{/gist_id}","starred_url":"https://api.github.com/users/vjpai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vjpai/subscriptions","organizations_url":"https://api.github.com/users/vjpai/orgs","repos_url":"https://api.github.com/users/vjpai/repos","events_url":"https://api.github.com/users/vjpai/events{/privacy}","received_events_url":"https://api.github.com/users/vjpai/received_events","type":"User","site_admin":false},"created_at":"2015-03-05T20:41:58Z","updated_at":"2015-03-05T20:41:58Z","body":"More details on this issue, quoted from HTTP/2 draft 17 ( https://tools.ietf.org/html/draft-ietf-httpbis-http2-17 )\r\n\r\n1. \"Streams are identified with an unsigned 31-bit integer.  Streams\r\n   initiated by a client MUST use odd-numbered stream identifiers; those\r\n   initiated by the server MUST use even-numbered stream identifiers.  \"\r\n\r\n2. \"HTTP/1.1 requests that are upgraded to HTTP/2 (see Section 3.2) are\r\n   responded to with a stream identifier of one (0x1).  After the\r\n   upgrade completes, stream 0x1 is \"half closed (local)\" to the client.\r\n   Therefore, stream 0x1 cannot be selected as a new stream identifier\r\n   by a client that upgrades from HTTP/1.1.\"\r\n\r\n3.  \"The identifier of a newly established stream MUST be numerically\r\n   greater than all streams that the initiating endpoint has opened or\r\n   reserved. \"\r\n\r\n4. \"An endpoint that receives an unexpected stream identifier MUST respond with a\r\n   connection error (Section 5.4.1) of type PROTOCOL_ERROR.\"\r\n\r\n5.  \"A peer can limit the number of concurrently active streams using the\r\n   SETTINGS_MAX_CONCURRENT_STREAMS parameter (see Section 6.5.2) within\r\n   a SETTINGS frame.  The maximum concurrent streams setting is specific\r\n   to each endpoint and applies only to the peer that receives the\r\n   setting.  That is, clients specify the maximum number of concurrent\r\n   streams the server can initiate, and servers specify the maximum\r\n   number of concurrent streams the client can initiate.\"\r\n"}}