{"action":"created","issue":{"url":"https://api.github.com/repos/netty/netty/issues/7911","repository_url":"https://api.github.com/repos/netty/netty","labels_url":"https://api.github.com/repos/netty/netty/issues/7911/labels{/name}","comments_url":"https://api.github.com/repos/netty/netty/issues/7911/comments","events_url":"https://api.github.com/repos/netty/netty/issues/7911/events","html_url":"https://github.com/netty/netty/pull/7911","id":320623671,"number":7911,"title":"Remove HpackDecoder.maxHeaderListSizeGoAway","user":{"login":"ejona86","id":2811396,"avatar_url":"https://avatars2.githubusercontent.com/u/2811396?v=4","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars3.githubusercontent.com/u/439362?v=4","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"assignees":[{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars3.githubusercontent.com/u/439362?v=4","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false}],"milestone":null,"comments":8,"created_at":"2018-05-06T20:03:11Z","updated_at":"2018-05-15T14:30:40Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/netty/netty/pulls/7911","html_url":"https://github.com/netty/netty/pull/7911","diff_url":"https://github.com/netty/netty/pull/7911.diff","patch_url":"https://github.com/netty/netty/pull/7911.patch"},"body":"Motivation:\r\n\r\nWhen a sender sends too large of headers it should not unnecessarily\r\nkill the connection, as killing the connection is a heavy-handed\r\nsolution while SETTINGS_MAX_HEADER_LIST_SIZE is advisory and may be\r\nignored.\r\n\r\nThe maxHeaderListSizeGoAway limit in HpackDecoder is unnecessary because\r\nany headers causing the list to exceeding the max size can simply be\r\nthrown away. In addition, DefaultHttp2FrameReader.HeadersBlockBuilder\r\nlimits the entire block to maxHeaderListSizeGoAway. Thus individual\r\nliterals are limited to maxHeaderListSizeGoAway.\r\n\r\n(Technically, literals are limited to 1.6x maxHeaderListSizeGoAway,\r\nsince the canonical Huffman code has a maximum compression ratio of\r\n.625. However, the \"unnecessary\" limit in HpackDecoder was also being\r\napplied to compressed sizes.)\r\n\r\nModifications:\r\n\r\nRemove maxHeaderListSizeGoAway checking in HpackDecoder and instead\r\neagerly throw away any headers causing the list to exceed\r\nmaxHeaderListSize.\r\n\r\nResult:\r\n\r\nFewer large header cases will trigger connection-killing.\r\nDefaultHttp2FrameReader.HeadersBlockBuilder will still kill the\r\nconnection when maxHeaderListSizeGoAway is exceeded, however.\r\n\r\nFixes #7887\r\n\r\n------\r\n\r\nThe Sink interface is a step toward splitting headerList processing out of the core Hpack decoding (verification is the only thing left). I can swap to referring to Http2HeadersSink directly, but it seemed more readable to use the interface as a \"we're not assuming anything about the implementation.\"\r\n\r\nCC @Scottmitch "},"comment":{"url":"https://api.github.com/repos/netty/netty/issues/comments/389188186","html_url":"https://github.com/netty/netty/pull/7911#issuecomment-389188186","issue_url":"https://api.github.com/repos/netty/netty/issues/7911","id":389188186,"user":{"login":"ejona86","id":2811396,"avatar_url":"https://avatars2.githubusercontent.com/u/2811396?v=4","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"created_at":"2018-05-15T14:30:40Z","updated_at":"2018-05-15T14:30:40Z","author_association":"CONTRIBUTOR","body":"Rebased."}}
{"actor":{"display_login":"ejona86"}}