{"action":"created","issue":{"url":"https://api.github.com/repos/nghttp2/nghttp2/issues/535","repository_url":"https://api.github.com/repos/nghttp2/nghttp2","labels_url":"https://api.github.com/repos/nghttp2/nghttp2/issues/535/labels{/name}","comments_url":"https://api.github.com/repos/nghttp2/nghttp2/issues/535/comments","events_url":"https://api.github.com/repos/nghttp2/nghttp2/issues/535/events","html_url":"https://github.com/nghttp2/nghttp2/issues/535","id":140463128,"number":535,"title":"Implement ALT-SVC","user":{"login":"tatsuhiro-t","id":404610,"avatar_url":"https://avatars.githubusercontent.com/u/404610?v=3","gravatar_id":"","url":"https://api.github.com/users/tatsuhiro-t","html_url":"https://github.com/tatsuhiro-t","followers_url":"https://api.github.com/users/tatsuhiro-t/followers","following_url":"https://api.github.com/users/tatsuhiro-t/following{/other_user}","gists_url":"https://api.github.com/users/tatsuhiro-t/gists{/gist_id}","starred_url":"https://api.github.com/users/tatsuhiro-t/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tatsuhiro-t/subscriptions","organizations_url":"https://api.github.com/users/tatsuhiro-t/orgs","repos_url":"https://api.github.com/users/tatsuhiro-t/repos","events_url":"https://api.github.com/users/tatsuhiro-t/events{/privacy}","received_events_url":"https://api.github.com/users/tatsuhiro-t/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/nghttp2/nghttp2/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/nghttp2/nghttp2/labels/lib","name":"lib","color":"fad8c7"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/nghttp2/nghttp2/milestones/3","html_url":"https://github.com/nghttp2/nghttp2/milestones/v1.10.0","labels_url":"https://api.github.com/repos/nghttp2/nghttp2/milestones/3/labels","id":1640979,"number":3,"title":"v1.10.0","description":"","creator":{"login":"tatsuhiro-t","id":404610,"avatar_url":"https://avatars.githubusercontent.com/u/404610?v=3","gravatar_id":"","url":"https://api.github.com/users/tatsuhiro-t","html_url":"https://github.com/tatsuhiro-t","followers_url":"https://api.github.com/users/tatsuhiro-t/followers","following_url":"https://api.github.com/users/tatsuhiro-t/following{/other_user}","gists_url":"https://api.github.com/users/tatsuhiro-t/gists{/gist_id}","starred_url":"https://api.github.com/users/tatsuhiro-t/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tatsuhiro-t/subscriptions","organizations_url":"https://api.github.com/users/tatsuhiro-t/orgs","repos_url":"https://api.github.com/users/tatsuhiro-t/repos","events_url":"https://api.github.com/users/tatsuhiro-t/events{/privacy}","received_events_url":"https://api.github.com/users/tatsuhiro-t/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":0,"state":"open","created_at":"2016-03-13T08:08:09Z","updated_at":"2016-03-27T15:27:51Z","due_on":"2016-04-24T15:00:00Z","closed_at":null},"comments":4,"created_at":"2016-03-13T08:04:47Z","updated_at":"2016-04-03T09:36:08Z","closed_at":null,"body":"[ALT-SVC](http://httpwg.org/http-extensions/alt-svc.html) has been approved by IESG for publication as a Proposed Standard.\r\nnghttp2 previously implemented ALT-SVC when it was in HTTP/2 specification, but we dropped it from nghttp2 source code when it was removed from HTTP/2 spec.  Now its frame payload is quite simplified, and we don't reuse the old code.\r\n\r\nWe only support ALT-SVC via HTTP/2 frame.  We don't parse alt-svc header field.\r\n\r\nWe have enabled user-defined extension mechanism already.  Since nghttp2 has no knowledge about user-defined frame, it just calls a callback provided by application to decode the frame.  To enable this, application has to set the frame type using `nghttp2_option_set_user_recv_extension_type()`.\r\n\r\nSo if we just enable ALT-SVC, and steals its handling from application while application provides its implementation through above mechanism, it is not backward compatible.  Therefore, we disables ALT-SVC (and future extension frame) by default.  To enable them, application has to tell the library so using new option call similar to `nghttp2_option_set_user_recv_extension_type()`.  User defined extension always takes precedence.\r\n\r\nThe question is that we should parse `Alt-Svc-Field-Value` in ALTSVC frame.  It is essentially the header field value of alt-svc header field.  Currently, I'm leaning toward not to parse them because application typically has its own parser for alt-svc (since it may support HTTP/1.1 as well).\r\n"},"comment":{"url":"https://api.github.com/repos/nghttp2/nghttp2/issues/comments/204925285","html_url":"https://github.com/nghttp2/nghttp2/issues/535#issuecomment-204925285","issue_url":"https://api.github.com/repos/nghttp2/nghttp2/issues/535","id":204925285,"user":{"login":"tatsuhiro-t","id":404610,"avatar_url":"https://avatars.githubusercontent.com/u/404610?v=3","gravatar_id":"","url":"https://api.github.com/users/tatsuhiro-t","html_url":"https://github.com/tatsuhiro-t","followers_url":"https://api.github.com/users/tatsuhiro-t/followers","following_url":"https://api.github.com/users/tatsuhiro-t/following{/other_user}","gists_url":"https://api.github.com/users/tatsuhiro-t/gists{/gist_id}","starred_url":"https://api.github.com/users/tatsuhiro-t/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tatsuhiro-t/subscriptions","organizations_url":"https://api.github.com/users/tatsuhiro-t/orgs","repos_url":"https://api.github.com/users/tatsuhiro-t/repos","events_url":"https://api.github.com/users/tatsuhiro-t/events{/privacy}","received_events_url":"https://api.github.com/users/tatsuhiro-t/received_events","type":"User","site_admin":false},"created_at":"2016-04-03T09:36:08Z","updated_at":"2016-04-03T09:36:08Z","body":"I'd wait for the publication of RFC, so this might be rescheduled v1.11.0 or later.\r\nThe actual work has begun already."}}