{"action":"created","issue":{"url":"https://api.github.com/repos/apache/trafficserver/issues/3792","repository_url":"https://api.github.com/repos/apache/trafficserver","labels_url":"https://api.github.com/repos/apache/trafficserver/issues/3792/labels{/name}","comments_url":"https://api.github.com/repos/apache/trafficserver/issues/3792/comments","events_url":"https://api.github.com/repos/apache/trafficserver/issues/3792/events","html_url":"https://github.com/apache/trafficserver/pull/3792","id":329954805,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkzMDgwNTM4","number":3792,"title":"Change MIMEHdr::value_append_or_set to handle duplicate headers","user":{"login":"SolidWallOfCode","id":1545753,"node_id":"MDQ6VXNlcjE1NDU3NTM=","avatar_url":"https://avatars2.githubusercontent.com/u/1545753?v=4","gravatar_id":"","url":"https://api.github.com/users/SolidWallOfCode","html_url":"https://github.com/SolidWallOfCode","followers_url":"https://api.github.com/users/SolidWallOfCode/followers","following_url":"https://api.github.com/users/SolidWallOfCode/following{/other_user}","gists_url":"https://api.github.com/users/SolidWallOfCode/gists{/gist_id}","starred_url":"https://api.github.com/users/SolidWallOfCode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SolidWallOfCode/subscriptions","organizations_url":"https://api.github.com/users/SolidWallOfCode/orgs","repos_url":"https://api.github.com/users/SolidWallOfCode/repos","events_url":"https://api.github.com/users/SolidWallOfCode/events{/privacy}","received_events_url":"https://api.github.com/users/SolidWallOfCode/received_events","type":"User","site_admin":false},"labels":[{"id":374862708,"node_id":"MDU6TGFiZWwzNzQ4NjI3MDg=","url":"https://api.github.com/repos/apache/trafficserver/labels/HTTP","name":"HTTP","color":"1d76db","default":false}],"state":"open","locked":false,"assignee":{"login":"SolidWallOfCode","id":1545753,"node_id":"MDQ6VXNlcjE1NDU3NTM=","avatar_url":"https://avatars2.githubusercontent.com/u/1545753?v=4","gravatar_id":"","url":"https://api.github.com/users/SolidWallOfCode","html_url":"https://github.com/SolidWallOfCode","followers_url":"https://api.github.com/users/SolidWallOfCode/followers","following_url":"https://api.github.com/users/SolidWallOfCode/following{/other_user}","gists_url":"https://api.github.com/users/SolidWallOfCode/gists{/gist_id}","starred_url":"https://api.github.com/users/SolidWallOfCode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SolidWallOfCode/subscriptions","organizations_url":"https://api.github.com/users/SolidWallOfCode/orgs","repos_url":"https://api.github.com/users/SolidWallOfCode/repos","events_url":"https://api.github.com/users/SolidWallOfCode/events{/privacy}","received_events_url":"https://api.github.com/users/SolidWallOfCode/received_events","type":"User","site_admin":false},"assignees":[{"login":"SolidWallOfCode","id":1545753,"node_id":"MDQ6VXNlcjE1NDU3NTM=","avatar_url":"https://avatars2.githubusercontent.com/u/1545753?v=4","gravatar_id":"","url":"https://api.github.com/users/SolidWallOfCode","html_url":"https://github.com/SolidWallOfCode","followers_url":"https://api.github.com/users/SolidWallOfCode/followers","following_url":"https://api.github.com/users/SolidWallOfCode/following{/other_user}","gists_url":"https://api.github.com/users/SolidWallOfCode/gists{/gist_id}","starred_url":"https://api.github.com/users/SolidWallOfCode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SolidWallOfCode/subscriptions","organizations_url":"https://api.github.com/users/SolidWallOfCode/orgs","repos_url":"https://api.github.com/users/SolidWallOfCode/repos","events_url":"https://api.github.com/users/SolidWallOfCode/events{/privacy}","received_events_url":"https://api.github.com/users/SolidWallOfCode/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/apache/trafficserver/milestones/19","html_url":"https://github.com/apache/trafficserver/milestone/19","labels_url":"https://api.github.com/repos/apache/trafficserver/milestones/19/labels","id":3358032,"node_id":"MDk6TWlsZXN0b25lMzM1ODAzMg==","number":19,"title":"9.0.0","description":"","creator":{"login":"bryancall","id":216749,"node_id":"MDQ6VXNlcjIxNjc0OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/216749?v=4","gravatar_id":"","url":"https://api.github.com/users/bryancall","html_url":"https://github.com/bryancall","followers_url":"https://api.github.com/users/bryancall/followers","following_url":"https://api.github.com/users/bryancall/following{/other_user}","gists_url":"https://api.github.com/users/bryancall/gists{/gist_id}","starred_url":"https://api.github.com/users/bryancall/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bryancall/subscriptions","organizations_url":"https://api.github.com/users/bryancall/orgs","repos_url":"https://api.github.com/users/bryancall/repos","events_url":"https://api.github.com/users/bryancall/events{/privacy}","received_events_url":"https://api.github.com/users/bryancall/received_events","type":"User","site_admin":false},"open_issues":26,"closed_issues":7,"state":"open","created_at":"2018-05-18T19:12:59Z","updated_at":"2018-06-06T17:03:56Z","due_on":"2019-06-30T07:00:00Z","closed_at":null},"comments":2,"created_at":"2018-06-06T17:03:56Z","updated_at":"2018-06-06T19:18:53Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/apache/trafficserver/pulls/3792","html_url":"https://github.com/apache/trafficserver/pull/3792","diff_url":"https://github.com/apache/trafficserver/pull/3792.diff","patch_url":"https://github.com/apache/trafficserver/pull/3792.patch"},"body":"As far as I can tell from reading the HTTP specification, if there is already a header the new value should be appended to the last duplicate if the field is multi-valued (comma separated list). This would match the behavior of `MIMEHdr::value_set_xxx` methods which call `mime_hdr_prepare_for_value_set` to get to the last duplicate. The assumption is that if `value_append_or_set` is called this implies the field is expected to be multi-valued (or some `value_set_xxx` would have been called, although bizarrely that family does handle duplicates)."},"comment":{"url":"https://api.github.com/repos/apache/trafficserver/issues/comments/395183312","html_url":"https://github.com/apache/trafficserver/pull/3792#issuecomment-395183312","issue_url":"https://api.github.com/repos/apache/trafficserver/issues/3792","id":395183312,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NTE4MzMxMg==","user":{"login":"SolidWallOfCode","id":1545753,"node_id":"MDQ6VXNlcjE1NDU3NTM=","avatar_url":"https://avatars2.githubusercontent.com/u/1545753?v=4","gravatar_id":"","url":"https://api.github.com/users/SolidWallOfCode","html_url":"https://github.com/SolidWallOfCode","followers_url":"https://api.github.com/users/SolidWallOfCode/followers","following_url":"https://api.github.com/users/SolidWallOfCode/following{/other_user}","gists_url":"https://api.github.com/users/SolidWallOfCode/gists{/gist_id}","starred_url":"https://api.github.com/users/SolidWallOfCode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SolidWallOfCode/subscriptions","organizations_url":"https://api.github.com/users/SolidWallOfCode/orgs","repos_url":"https://api.github.com/users/SolidWallOfCode/repos","events_url":"https://api.github.com/users/SolidWallOfCode/events{/privacy}","received_events_url":"https://api.github.com/users/SolidWallOfCode/received_events","type":"User","site_admin":false},"created_at":"2018-06-06T19:18:53Z","updated_at":"2018-06-06T19:18:53Z","author_association":"MEMBER","body":"Wording from the [HTTP specification](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html):\r\n\r\n> Multiple message-header fields with the same field-name MAY be present in a message if and only if the entire field-value for that header field is defined as a comma-separated list i.e., #(values). It MUST be possible to combine the multiple header fields into one \"field-name: field-value\" pair, without changing the semantics of the message, by appending each subsequent field-value to the first, each separated by a comma. The order in which header fields with the same field-name are received is therefore significant to the interpretation of the combined field value, and thus a proxy MUST NOT change the order of these field values when a message is forwarded.\r\n"}}
{"actor":{"display_login":"SolidWallOfCode"}}