{"action":"created","comment":{"url":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments/228393811","pull_request_review_id":168657483,"id":228393811,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyODM5MzgxMQ==","diff_hunk":"@@ -3847,13 +3875,41 @@ language from Section 3 of {{!TLS13=RFC8446}}.\n {: #figure-transport-parameters title=\"Definition of TransportParameters\"}\n \n The `extension_data` field of the quic_transport_parameters extension defined in\n-{{QUIC-TLS}} contains a TransportParameters value.  TLS encoding rules are\n-therefore used to describe the encoding of transport parameters.\n+{{QUIC-TLS}} contains a TransportParameters value.\n \n QUIC encodes transport parameters into a sequence of octets, which are then\n included in the cryptographic handshake.\n \n \n+## Version Validation Fields {#transport-parameter-versions}\n+\n+Client and server exchange information about versions along with transport\n+parameters in order to protect against version downgrade attacks (see\n+{{version-validation}}).\n+\n+The `supported_versions` field is a list of the versions the client supports.\n+This field enables upgrade to compatible versions (see {{version-upgrade}}).  A\n+client MAY omit versions from this list if they appear in the\n+`unsupported_versions` field.\n+\n+The `unsupported_versions` field is a list of the versions the client supports,\n+but which the client believes that the server does not support.  This list MUST\n+be empty unless the client has received and processed a Version Negotiation\n+packet.  A client MUST NOT omit a version that it supports from\n+`unsupported_versions`, unless the Version Negotiation packet it processed\n+listed that version.","path":"draft-ietf-quic-transport.md","position":393,"original_position":387,"commit_id":"a2c5c6adf56c764c8843ae7010b724b415268645","original_commit_id":"34b19daf3aa8921fe0f59358eb5b9c9f5d81316c","user":{"login":"martinthomson","id":67641,"node_id":"MDQ6VXNlcjY3NjQx","avatar_url":"https://avatars1.githubusercontent.com/u/67641?v=4","gravatar_id":"","url":"https://api.github.com/users/martinthomson","html_url":"https://github.com/martinthomson","followers_url":"https://api.github.com/users/martinthomson/followers","following_url":"https://api.github.com/users/martinthomson/following{/other_user}","gists_url":"https://api.github.com/users/martinthomson/gists{/gist_id}","starred_url":"https://api.github.com/users/martinthomson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martinthomson/subscriptions","organizations_url":"https://api.github.com/users/martinthomson/orgs","repos_url":"https://api.github.com/users/martinthomson/repos","events_url":"https://api.github.com/users/martinthomson/events{/privacy}","received_events_url":"https://api.github.com/users/martinthomson/received_events","type":"User","site_admin":false},"body":"Hmm, the text isn't *wrong*, but I'm not sure how to fix it.  The set of versions that a client claims to support is the union of `supported_versions` and `unsupported_versions`.  I've said that, but I think that there's a better way to structure the text to avoid having to say that.","created_at":"2018-10-26T03:02:53Z","updated_at":"2018-10-26T03:02:53Z","html_url":"https://github.com/quicwg/base-drafts/pull/1901#discussion_r228393811","pull_request_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments/228393811"},"html":{"href":"https://github.com/quicwg/base-drafts/pull/1901#discussion_r228393811"},"pull_request":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901"}},"in_reply_to_id":228392714},"pull_request":{"url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901","id":225290555,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI1MjkwNTU1","html_url":"https://github.com/quicwg/base-drafts/pull/1901","diff_url":"https://github.com/quicwg/base-drafts/pull/1901.diff","patch_url":"https://github.com/quicwg/base-drafts/pull/1901.patch","issue_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1901","number":1901,"state":"open","locked":false,"title":"Compatible version upgrade","user":{"login":"martinthomson","id":67641,"node_id":"MDQ6VXNlcjY3NjQx","avatar_url":"https://avatars1.githubusercontent.com/u/67641?v=4","gravatar_id":"","url":"https://api.github.com/users/martinthomson","html_url":"https://github.com/martinthomson","followers_url":"https://api.github.com/users/martinthomson/followers","following_url":"https://api.github.com/users/martinthomson/following{/other_user}","gists_url":"https://api.github.com/users/martinthomson/gists{/gist_id}","starred_url":"https://api.github.com/users/martinthomson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martinthomson/subscriptions","organizations_url":"https://api.github.com/users/martinthomson/orgs","repos_url":"https://api.github.com/users/martinthomson/repos","events_url":"https://api.github.com/users/martinthomson/events{/privacy}","received_events_url":"https://api.github.com/users/martinthomson/received_events","type":"User","site_admin":false},"body":"This introduces the design that proposed by ekr prior to the NY interim.\r\nIn this design, the client advertises the list of versions it supports\r\nin its transport parameters.  The server is permitted to select a\r\n\"compatible\" version and proceed as though the client selected that\r\nversion.\r\n\r\nThe main advantage of this approach is seamless upgrade between\r\ncompatible versions without the extra round-trip imposed by Version\r\nNegotiation.  This will be especially useful when we move from\r\npre-release versions (0xff0000xx) to the final version.\r\n\r\nCloses #1773, #1755.","created_at":"2018-10-24T07:19:26Z","updated_at":"2018-10-26T03:02:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"338eb3de0f51a7a31f91b2d1351f7aba7fccaad4","assignee":null,"assignees":[],"requested_reviewers":[{"login":"ekr","id":1111457,"node_id":"MDQ6VXNlcjExMTE0NTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1111457?v=4","gravatar_id":"","url":"https://api.github.com/users/ekr","html_url":"https://github.com/ekr","followers_url":"https://api.github.com/users/ekr/followers","following_url":"https://api.github.com/users/ekr/following{/other_user}","gists_url":"https://api.github.com/users/ekr/gists{/gist_id}","starred_url":"https://api.github.com/users/ekr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekr/subscriptions","organizations_url":"https://api.github.com/users/ekr/orgs","repos_url":"https://api.github.com/users/ekr/repos","events_url":"https://api.github.com/users/ekr/events{/privacy}","received_events_url":"https://api.github.com/users/ekr/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":481871399,"node_id":"MDU6TGFiZWw0ODE4NzEzOTk=","url":"https://api.github.com/repos/quicwg/base-drafts/labels/-transport","name":"-transport","color":"fbca04","default":false},{"id":481871361,"node_id":"MDU6TGFiZWw0ODE4NzEzNjE=","url":"https://api.github.com/repos/quicwg/base-drafts/labels/design","name":"design","color":"1d76db","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901/commits","review_comments_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901/comments","review_comment_url":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments{/number}","comments_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1901/comments","statuses_url":"https://api.github.com/repos/quicwg/base-drafts/statuses/a2c5c6adf56c764c8843ae7010b724b415268645","head":{"label":"quicwg:vn-mkII","ref":"vn-mkII","sha":"a2c5c6adf56c764c8843ae7010b724b415268645","user":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"repo":{"id":73779599,"node_id":"MDEwOlJlcG9zaXRvcnk3Mzc3OTU5OQ==","name":"base-drafts","full_name":"quicwg/base-drafts","private":false,"owner":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/quicwg/base-drafts","description":" Internet-Drafts that make up the base QUIC specification","fork":false,"url":"https://api.github.com/repos/quicwg/base-drafts","forks_url":"https://api.github.com/repos/quicwg/base-drafts/forks","keys_url":"https://api.github.com/repos/quicwg/base-drafts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quicwg/base-drafts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quicwg/base-drafts/teams","hooks_url":"https://api.github.com/repos/quicwg/base-drafts/hooks","issue_events_url":"https://api.github.com/repos/quicwg/base-drafts/issues/events{/number}","events_url":"https://api.github.com/repos/quicwg/base-drafts/events","assignees_url":"https://api.github.com/repos/quicwg/base-drafts/assignees{/user}","branches_url":"https://api.github.com/repos/quicwg/base-drafts/branches{/branch}","tags_url":"https://api.github.com/repos/quicwg/base-drafts/tags","blobs_url":"https://api.github.com/repos/quicwg/base-drafts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quicwg/base-drafts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quicwg/base-drafts/git/refs{/sha}","trees_url":"https://api.github.com/repos/quicwg/base-drafts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quicwg/base-drafts/statuses/{sha}","languages_url":"https://api.github.com/repos/quicwg/base-drafts/languages","stargazers_url":"https://api.github.com/repos/quicwg/base-drafts/stargazers","contributors_url":"https://api.github.com/repos/quicwg/base-drafts/contributors","subscribers_url":"https://api.github.com/repos/quicwg/base-drafts/subscribers","subscription_url":"https://api.github.com/repos/quicwg/base-drafts/subscription","commits_url":"https://api.github.com/repos/quicwg/base-drafts/commits{/sha}","git_commits_url":"https://api.github.com/repos/quicwg/base-drafts/git/commits{/sha}","comments_url":"https://api.github.com/repos/quicwg/base-drafts/comments{/number}","issue_comment_url":"https://api.github.com/repos/quicwg/base-drafts/issues/comments{/number}","contents_url":"https://api.github.com/repos/quicwg/base-drafts/contents/{+path}","compare_url":"https://api.github.com/repos/quicwg/base-drafts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quicwg/base-drafts/merges","archive_url":"https://api.github.com/repos/quicwg/base-drafts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quicwg/base-drafts/downloads","issues_url":"https://api.github.com/repos/quicwg/base-drafts/issues{/number}","pulls_url":"https://api.github.com/repos/quicwg/base-drafts/pulls{/number}","milestones_url":"https://api.github.com/repos/quicwg/base-drafts/milestones{/number}","notifications_url":"https://api.github.com/repos/quicwg/base-drafts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quicwg/base-drafts/labels{/name}","releases_url":"https://api.github.com/repos/quicwg/base-drafts/releases{/id}","deployments_url":"https://api.github.com/repos/quicwg/base-drafts/deployments","created_at":"2016-11-15T05:30:30Z","updated_at":"2018-10-26T00:22:21Z","pushed_at":"2018-10-26T03:02:31Z","git_url":"git://github.com/quicwg/base-drafts.git","ssh_url":"git@github.com:quicwg/base-drafts.git","clone_url":"https://github.com/quicwg/base-drafts.git","svn_url":"https://github.com/quicwg/base-drafts","homepage":"https://quicwg.github.io/","size":72999,"stargazers_count":372,"watchers_count":372,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":77,"mirror_url":null,"archived":false,"open_issues_count":103,"license":null,"forks":77,"open_issues":103,"watchers":372,"default_branch":"master"}},"base":{"label":"quicwg:master","ref":"master","sha":"7dc459666227592cdebcc163f3e54b647e147ec2","user":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"repo":{"id":73779599,"node_id":"MDEwOlJlcG9zaXRvcnk3Mzc3OTU5OQ==","name":"base-drafts","full_name":"quicwg/base-drafts","private":false,"owner":{"login":"quicwg","id":22631371,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjMxMzcx","avatar_url":"https://avatars3.githubusercontent.com/u/22631371?v=4","gravatar_id":"","url":"https://api.github.com/users/quicwg","html_url":"https://github.com/quicwg","followers_url":"https://api.github.com/users/quicwg/followers","following_url":"https://api.github.com/users/quicwg/following{/other_user}","gists_url":"https://api.github.com/users/quicwg/gists{/gist_id}","starred_url":"https://api.github.com/users/quicwg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quicwg/subscriptions","organizations_url":"https://api.github.com/users/quicwg/orgs","repos_url":"https://api.github.com/users/quicwg/repos","events_url":"https://api.github.com/users/quicwg/events{/privacy}","received_events_url":"https://api.github.com/users/quicwg/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/quicwg/base-drafts","description":" Internet-Drafts that make up the base QUIC specification","fork":false,"url":"https://api.github.com/repos/quicwg/base-drafts","forks_url":"https://api.github.com/repos/quicwg/base-drafts/forks","keys_url":"https://api.github.com/repos/quicwg/base-drafts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quicwg/base-drafts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quicwg/base-drafts/teams","hooks_url":"https://api.github.com/repos/quicwg/base-drafts/hooks","issue_events_url":"https://api.github.com/repos/quicwg/base-drafts/issues/events{/number}","events_url":"https://api.github.com/repos/quicwg/base-drafts/events","assignees_url":"https://api.github.com/repos/quicwg/base-drafts/assignees{/user}","branches_url":"https://api.github.com/repos/quicwg/base-drafts/branches{/branch}","tags_url":"https://api.github.com/repos/quicwg/base-drafts/tags","blobs_url":"https://api.github.com/repos/quicwg/base-drafts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quicwg/base-drafts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quicwg/base-drafts/git/refs{/sha}","trees_url":"https://api.github.com/repos/quicwg/base-drafts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quicwg/base-drafts/statuses/{sha}","languages_url":"https://api.github.com/repos/quicwg/base-drafts/languages","stargazers_url":"https://api.github.com/repos/quicwg/base-drafts/stargazers","contributors_url":"https://api.github.com/repos/quicwg/base-drafts/contributors","subscribers_url":"https://api.github.com/repos/quicwg/base-drafts/subscribers","subscription_url":"https://api.github.com/repos/quicwg/base-drafts/subscription","commits_url":"https://api.github.com/repos/quicwg/base-drafts/commits{/sha}","git_commits_url":"https://api.github.com/repos/quicwg/base-drafts/git/commits{/sha}","comments_url":"https://api.github.com/repos/quicwg/base-drafts/comments{/number}","issue_comment_url":"https://api.github.com/repos/quicwg/base-drafts/issues/comments{/number}","contents_url":"https://api.github.com/repos/quicwg/base-drafts/contents/{+path}","compare_url":"https://api.github.com/repos/quicwg/base-drafts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quicwg/base-drafts/merges","archive_url":"https://api.github.com/repos/quicwg/base-drafts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quicwg/base-drafts/downloads","issues_url":"https://api.github.com/repos/quicwg/base-drafts/issues{/number}","pulls_url":"https://api.github.com/repos/quicwg/base-drafts/pulls{/number}","milestones_url":"https://api.github.com/repos/quicwg/base-drafts/milestones{/number}","notifications_url":"https://api.github.com/repos/quicwg/base-drafts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quicwg/base-drafts/labels{/name}","releases_url":"https://api.github.com/repos/quicwg/base-drafts/releases{/id}","deployments_url":"https://api.github.com/repos/quicwg/base-drafts/deployments","created_at":"2016-11-15T05:30:30Z","updated_at":"2018-10-26T00:22:21Z","pushed_at":"2018-10-26T03:02:31Z","git_url":"git://github.com/quicwg/base-drafts.git","ssh_url":"git@github.com:quicwg/base-drafts.git","clone_url":"https://github.com/quicwg/base-drafts.git","svn_url":"https://github.com/quicwg/base-drafts","homepage":"https://quicwg.github.io/","size":72999,"stargazers_count":372,"watchers_count":372,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":77,"mirror_url":null,"archived":false,"open_issues_count":103,"license":null,"forks":77,"open_issues":103,"watchers":372,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901"},"html":{"href":"https://github.com/quicwg/base-drafts/pull/1901"},"issue":{"href":"https://api.github.com/repos/quicwg/base-drafts/issues/1901"},"comments":{"href":"https://api.github.com/repos/quicwg/base-drafts/issues/1901/comments"},"review_comments":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901/comments"},"review_comment":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/quicwg/base-drafts/pulls/1901/commits"},"statuses":{"href":"https://api.github.com/repos/quicwg/base-drafts/statuses/a2c5c6adf56c764c8843ae7010b724b415268645"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"martinthomson"}}