From 0f54bc72a47728798d9e4f6f71a409a4d6df5fd3 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Mon, 12 Jun 2017 15:26:30 -0700 Subject: [PATCH] Add provisional IANA header field names fix #473 --- CHANGELOG.md | 6 ++ include/beast/http/field.hpp | 50 ++++++++++++ include/beast/http/impl/field.ipp | 54 ++++++++++++- scripts/field.txt | 130 ++++++++++++++++++------------ scripts/make_field.sh | 6 +- test/http/field.cpp | 50 ++++++++++++ 6 files changed, 238 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af4e29c5..66055a21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +Version 56: + +* Add provisional IANA header field names + +-------------------------------------------------------------------------------- + Version 55: * Don't allocate memory to handle obs-fold diff --git a/include/beast/http/field.hpp b/include/beast/http/field.hpp index 3691622f..9dfafccb 100644 --- a/include/beast/http/field.hpp +++ b/include/beast/http/field.hpp @@ -30,6 +30,14 @@ enum class field : unsigned short accept_patch, accept_post, accept_ranges, + access_control, + access_control_allow_credentials, + access_control_allow_headers, + access_control_allow_methods, + access_control_allow_origin, + access_control_max_age, + access_control_request_headers, + access_control_request_method, age, allow, alpn, @@ -38,6 +46,7 @@ enum class field : unsigned short alt_used, alternate_recipient, alternates, + apparently_to, apply_to_redirect_ref, approved, archive, @@ -61,9 +70,12 @@ enum class field : unsigned short c_pep_info, cache_control, caldav_timezones, + cancel_key, + cancel_lock, cc, close, comments, + compliance, connection, content_alternative, content_base, @@ -90,6 +102,7 @@ enum class field : unsigned short conversion_with_loss, cookie, cookie2, + cost, dasl, date, date_received, @@ -132,8 +145,11 @@ enum class field : unsigned short downgraded_return_path, downgraded_sender, downgraded_to, + ediint_features, + eesst_version, encoding, encrypted, + errors_to, etag, expect, expires, @@ -160,6 +176,7 @@ enum class field : unsigned short incomplete_copy, injection_date, injection_info, + jabber_id, keep_alive, keywords, label, @@ -185,8 +202,11 @@ enum class field : unsigned short message_id, message_type, meter, + method_check, + method_check_expires, mime_version, mmhs_acp127_message_identifier, + mmhs_authorizing_users, mmhs_codress_message_indicator, mmhs_copy_precedence, mmhs_exempted_address, @@ -205,8 +225,10 @@ enum class field : unsigned short newsgroups, nntp_posting_date, nntp_posting_host, + non_compliance, obsoletes, opt, + optional, optional_www_authenticate, ordering_type, organization, @@ -231,6 +253,7 @@ enum class field : unsigned short preference_applied, prevent_nondelivery_report, priority, + privicon, profileobject, protocol, protocol_info, @@ -251,6 +274,7 @@ enum class field : unsigned short redirect_ref, references, referer, + referer_root, relay_version, reply_by, reply_to, @@ -263,6 +287,8 @@ enum class field : unsigned short resent_reply_to, resent_sender, resent_to, + resolution_hint, + resolver_location, retry_after, return_path, safe, @@ -281,12 +307,16 @@ enum class field : unsigned short set_cookie, set_cookie2, setprofile, + sio_label, + sio_label_history, slug, soapaction, solicitation, status_uri, strict_transport_security, subject, + subok, + subst, summary, supersedes, surrogate_capability, @@ -294,11 +324,17 @@ enum class field : unsigned short tcn, te, timeout, + title, to, topic, trailer, transfer_encoding, ttl, + ua_color, + ua_media, + ua_pixels, + ua_resolution, + ua_windowpixels, upgrade, urgency, uri, @@ -306,11 +342,25 @@ enum class field : unsigned short variant_vary, vary, vbr_info, + version, via, want_digest, warning, www_authenticate, + x_archived_at, + x_device_accept, + x_device_accept_charset, + x_device_accept_encoding, + x_device_accept_language, + x_device_user_agent, x_frame_options, + x_mittente, + x_pgp_sig, + x_ricevuta, + x_riferimento_message_id, + x_tiporicevuta, + x_trasporto, + x_verificasicurezza, x400_content_identifier, x400_content_return, x400_content_type, diff --git a/include/beast/http/impl/field.ipp b/include/beast/http/impl/field.ipp index c9772f61..8b4e3ae4 100644 --- a/include/beast/http/impl/field.ipp +++ b/include/beast/http/impl/field.ipp @@ -21,7 +21,7 @@ namespace detail { class field_strings { using array_type = - std::array; + std::array; array_type v_; @@ -48,6 +48,14 @@ public: "Accept-Patch", "Accept-Post", "Accept-Ranges", + "Access-Control", + "Access-Control-Allow-Credentials", + "Access-Control-Allow-Headers", + "Access-Control-Allow-Methods", + "Access-Control-Allow-Origin", + "Access-Control-Max-Age", + "Access-Control-Request-Headers", + "Access-Control-Request-Method", "Age", "Allow", "ALPN", @@ -56,6 +64,7 @@ public: "Alt-Used", "Alternate-Recipient", "Alternates", + "Apparently-To", "Apply-To-Redirect-Ref", "Approved", "Archive", @@ -79,9 +88,12 @@ public: "C-PEP-Info", "Cache-Control", "CalDAV-Timezones", + "Cancel-Key", + "Cancel-Lock", "Cc", "Close", "Comments", + "Compliance", "Connection", "Content-Alternative", "Content-Base", @@ -108,6 +120,7 @@ public: "Conversion-With-Loss", "Cookie", "Cookie2", + "Cost", "DASL", "Date", "Date-Received", @@ -150,8 +163,11 @@ public: "Downgraded-Return-Path", "Downgraded-Sender", "Downgraded-To", + "EDIINT-Features", + "Eesst-Version", "Encoding", "Encrypted", + "Errors-To", "ETag", "Expect", "Expires", @@ -178,6 +194,7 @@ public: "Incomplete-Copy", "Injection-Date", "Injection-Info", + "Jabber-ID", "Keep-Alive", "Keywords", "Label", @@ -203,8 +220,11 @@ public: "Message-ID", "Message-Type", "Meter", + "Method-Check", + "Method-Check-Expires", "MIME-Version", "MMHS-Acp127-Message-Identifier", + "MMHS-Authorizing-Users", "MMHS-Codress-Message-Indicator", "MMHS-Copy-Precedence", "MMHS-Exempted-Address", @@ -223,8 +243,10 @@ public: "Newsgroups", "NNTP-Posting-Date", "NNTP-Posting-Host", + "Non-Compliance", "Obsoletes", "Opt", + "Optional", "Optional-WWW-Authenticate", "Ordering-Type", "Organization", @@ -249,6 +271,7 @@ public: "Preference-Applied", "Prevent-NonDelivery-Report", "Priority", + "Privicon", "ProfileObject", "Protocol", "Protocol-Info", @@ -269,6 +292,7 @@ public: "Redirect-Ref", "References", "Referer", + "Referer-Root", "Relay-Version", "Reply-By", "Reply-To", @@ -281,6 +305,8 @@ public: "Resent-Reply-To", "Resent-Sender", "Resent-To", + "Resolution-Hint", + "Resolver-Location", "Retry-After", "Return-Path", "Safe", @@ -299,12 +325,16 @@ public: "Set-Cookie", "Set-Cookie2", "SetProfile", + "SIO-Label", + "SIO-Label-History", "SLUG", "SoapAction", "Solicitation", "Status-URI", "Strict-Transport-Security", "Subject", + "SubOK", + "Subst", "Summary", "Supersedes", "Surrogate-Capability", @@ -312,11 +342,17 @@ public: "TCN", "TE", "Timeout", + "Title", "To", "Topic", "Trailer", "Transfer-Encoding", "TTL", + "UA-Color", + "UA-Media", + "UA-Pixels", + "UA-Resolution", + "UA-Windowpixels", "Upgrade", "Urgency", "URI", @@ -324,11 +360,25 @@ public: "Variant-Vary", "Vary", "VBR-Info", + "Version", "Via", "Want-Digest", "Warning", "WWW-Authenticate", + "X-Archived-At", + "X-Device-Accept", + "X-Device-Accept-Charset", + "X-Device-Accept-Encoding", + "X-Device-Accept-Language", + "X-Device-User-Agent", "X-Frame-Options", + "X-Mittente", + "X-PGP-Sig", + "X-Ricevuta", + "X-Riferimento-Message-ID", + "X-TipoRicevuta", + "X-Trasporto", + "X-VerificaSicurezza", "X400-Content-Identifier", "X400-Content-Return", "X400-Content-Type", @@ -337,7 +387,7 @@ public: "X400-Received", "X400-Recipients", "X400-Trace", - "Xref", + "Xref" }}) { } diff --git a/scripts/field.txt b/scripts/field.txt index 46cc43ae..9f15ab16 100644 --- a/scripts/field.txt +++ b/scripts/field.txt @@ -1,4 +1,3 @@ -A-IM Accept Accept-Additions Accept-Charset @@ -6,65 +5,66 @@ Accept-Datetime Accept-Encoding Accept-Features Accept-Language -Accept-Language Accept-Patch Accept-Post Accept-Ranges +Access-Control +Access-Control-Allow-Credentials +Access-Control-Allow-Headers +Access-Control-Allow-Methods +Access-Control-Allow-Origin +Access-Control-Max-Age +Access-Control-Request-Headers +Access-Control-Request-Method Age +A-IM Allow ALPN Also-Control -Alt-Svc -Alt-Used Alternate-Recipient Alternates +Alt-Svc +Alt-Used +Apparently-To Apply-To-Redirect-Ref Approved Archive Archived-At -Archived-At Article-Names Article-Updates Authentication-Control Authentication-Info Authentication-Results Authorization -Auto-Submitted Autoforwarded Autosubmitted +Auto-Submitted Base Bcc Body -C-Ext -C-Man -C-Opt -C-PEP -C-PEP-Info Cache-Control CalDAV-Timezones +Cancel-Key +Cancel-Lock Cc +C-Ext Close +C-Man Comments -Comments +Compliance Connection Content-Alternative Content-Base -Content-Base Content-Description Content-Disposition -Content-Disposition Content-Duration Content-Encoding Content-features Content-ID -Content-ID Content-Identifier Content-Language -Content-Language Content-Length Content-Location -Content-Location -Content-MD5 Content-MD5 Content-Range Content-Return @@ -72,20 +72,20 @@ Content-Script-Type Content-Style-Type Content-Transfer-Encoding Content-Type -Content-Type Content-Version Control Conversion Conversion-With-Loss Cookie Cookie2 +C-Opt +Cost +C-PEP +C-PEP-Info DASL -DAV -DL-Expansion-History -Date -Date Date Date-Received +DAV Default-Style Deferred-Delivery Delivery-Date @@ -102,6 +102,7 @@ Disposition-Notification-Options Disposition-Notification-To Distribution DKIM-Signature +DL-Expansion-History Downgraded-Bcc Downgraded-Cc Downgraded-Disposition-Notification-To @@ -123,26 +124,24 @@ Downgraded-Resent-To Downgraded-Return-Path Downgraded-Sender Downgraded-To +EDIINT-Features +Eesst-Version Encoding Encrypted +Errors-To ETag Expect Expires -Expires -Expires Expiry-Date Ext Followup-To Forwarded From -From -From Generate-Delivery-Report GetProfile Hobareg Host HTTP2-Settings -IM If If-Match If-Modified-Since @@ -150,14 +149,15 @@ If-None-Match If-Range If-Schedule-Tag-Match If-Unmodified-Since +IM Importance -In-Reply-To Incomplete-Copy Injection-Date Injection-Info +In-Reply-To +Jabber-ID Keep-Alive Keywords -Keywords Label Language Last-Modified @@ -179,51 +179,52 @@ Max-Forwards Memento-Datetime Message-Context Message-ID -Message-ID Message-Type Meter +Method-Check +Method-Check-Expires MIME-Version -MIME-Version +MMHS-Acp127-Message-Identifier +MMHS-Authorizing-Users +MMHS-Codress-Message-Indicator +MMHS-Copy-Precedence MMHS-Exempted-Address MMHS-Extended-Authorisation-Info -MMHS-Subject-Indicator-Codes MMHS-Handling-Instructions MMHS-Message-Instructions -MMHS-Codress-Message-Indicator -MMHS-Originator-Reference -MMHS-Primary-Precedence -MMHS-Copy-Precedence MMHS-Message-Type -MMHS-Other-Recipients-Indicator-To -MMHS-Other-Recipients-Indicator-CC -MMHS-Acp127-Message-Identifier MMHS-Originator-PLAD +MMHS-Originator-Reference +MMHS-Other-Recipients-Indicator-CC +MMHS-Other-Recipients-Indicator-To +MMHS-Primary-Precedence +MMHS-Subject-Indicator-Codes MT-Priority Negotiate Newsgroups NNTP-Posting-Date NNTP-Posting-Host +Non-Compliance Obsoletes Opt +Optional Optional-WWW-Authenticate Ordering-Type Organization -Organization Origin Original-Encoded-Information-Types Original-From Original-Message-ID Original-Recipient Original-Sender -Originator-Return-Address Original-Subject +Originator-Return-Address Overwrite P3P Path PEP -PICS-Label -PICS-Label Pep-Info +PICS-Label Position Posting-Version Pragma @@ -231,6 +232,7 @@ Prefer Preference-Applied Prevent-NonDelivery-Report Priority +Privicon ProfileObject Protocol Protocol-Info @@ -239,6 +241,7 @@ Protocol-Request Proxy-Authenticate Proxy-Authentication-Info Proxy-Authorization +Proxy-Connection Proxy-Features Proxy-Instruction Public @@ -249,12 +252,11 @@ Received Received-SPF Redirect-Ref References -References Referer +Referer-Root Relay-Version Reply-By Reply-To -Reply-To Require-Recipient-Valid-Since Resent-Bcc Resent-Cc @@ -264,57 +266,66 @@ Resent-Message-ID Resent-Reply-To Resent-Sender Resent-To +Resolution-Hint +Resolver-Location Retry-After Return-Path Safe Schedule-Reply Schedule-Tag +Security-Scheme Sec-WebSocket-Accept Sec-WebSocket-Extensions Sec-WebSocket-Key Sec-WebSocket-Protocol Sec-WebSocket-Version -Security-Scheme See-Also Sender -Sender Sensitivity Server Set-Cookie Set-Cookie2 SetProfile +SIO-Label +SIO-Label-History SLUG SoapAction Solicitation Status-URI Strict-Transport-Security Subject -Subject +SubOK +Subst Summary Supersedes -Supersedes Surrogate-Capability Surrogate-Control TCN TE Timeout +Title To Topic Trailer Transfer-Encoding TTL +UA-Color +UA-Media +UA-Pixels +UA-Resolution +UA-Windowpixels +Upgrade Urgency URI -Upgrade -User-Agent User-Agent Variant-Vary Vary VBR-Info +Version Via -WWW-Authenticate Want-Digest Warning +WWW-Authenticate X400-Content-Identifier X400-Content-Return X400-Content-Type @@ -323,5 +334,18 @@ X400-Originator X400-Received X400-Recipients X400-Trace +X-Archived-At +X-Device-Accept +X-Device-Accept-Charset +X-Device-Accept-Encoding +X-Device-Accept-Language +X-Device-User-Agent X-Frame-Options +X-Mittente +X-PGP-Sig Xref +X-Ricevuta +X-Riferimento-Message-ID +X-TipoRicevuta +X-Trasporto +X-VerificaSicurezza diff --git a/scripts/make_field.sh b/scripts/make_field.sh index 78773734..8e54c137 100644 --- a/scripts/make_field.sh +++ b/scripts/make_field.sh @@ -4,7 +4,7 @@ export LC_COLLATE=C echo "// string constants" echo ' "",' -cat $1 | uniq | sort -f | sed 's/^/ \"/; s/$/\",/' +cat $1 | sort -f | uniq | sed 's/^/ \"/; s/$/\",/' echo echo "enum class field : unsigned short" @@ -12,11 +12,11 @@ echo "{" echo " unknown = 0," echo #cat $1 | uniq | sort -f | sed 's/./\L&/g; s/^/\t/; s/$/,/' -cat $1 | uniq | sort -f | sed 's/\(.*\)/ \L\1,/; s/-/_/g' +cat $1 | sort -f | uniq | sed 's/\(.*\)/ \L\1,/; s/-/_/g' echo "};" echo echo "// pairs" #cat $1 | uniq | sort -f | sed 's/\(.*\)/\tmatch\(field::\L\1, \"\E\1\"\);/; s/-/_/' -cat $1 | uniq | sort -f | perl -nE 'chomp; $a=lc($_); $a=~s/-/_/g; say " match(field::$a, \"$_\");";' | tr -d "\015" +cat $1 | sort -f | uniq | perl -nE 'chomp; $a=lc($_); $a=~s/-/_/g; say " match(field::$a, \"$_\");";' | tr -d "\015" diff --git a/test/http/field.cpp b/test/http/field.cpp index 5a13e0fa..d5c3dca4 100644 --- a/test/http/field.cpp +++ b/test/http/field.cpp @@ -44,6 +44,14 @@ public: match(field::accept_patch, "Accept-Patch"); match(field::accept_post, "Accept-Post"); match(field::accept_ranges, "Accept-Ranges"); + match(field::access_control, "Access-Control"); + match(field::access_control_allow_credentials, "Access-Control-Allow-Credentials"); + match(field::access_control_allow_headers, "Access-Control-Allow-Headers"); + match(field::access_control_allow_methods, "Access-Control-Allow-Methods"); + match(field::access_control_allow_origin, "Access-Control-Allow-Origin"); + match(field::access_control_max_age, "Access-Control-Max-Age"); + match(field::access_control_request_headers, "Access-Control-Request-Headers"); + match(field::access_control_request_method, "Access-Control-Request-Method"); match(field::age, "Age"); match(field::allow, "Allow"); match(field::alpn, "ALPN"); @@ -52,6 +60,7 @@ public: match(field::alt_used, "Alt-Used"); match(field::alternate_recipient, "Alternate-Recipient"); match(field::alternates, "Alternates"); + match(field::apparently_to, "Apparently-To"); match(field::apply_to_redirect_ref, "Apply-To-Redirect-Ref"); match(field::approved, "Approved"); match(field::archive, "Archive"); @@ -75,9 +84,12 @@ public: match(field::c_pep_info, "C-PEP-Info"); match(field::cache_control, "Cache-Control"); match(field::caldav_timezones, "CalDAV-Timezones"); + match(field::cancel_key, "Cancel-Key"); + match(field::cancel_lock, "Cancel-Lock"); match(field::cc, "Cc"); match(field::close, "Close"); match(field::comments, "Comments"); + match(field::compliance, "Compliance"); match(field::connection, "Connection"); match(field::content_alternative, "Content-Alternative"); match(field::content_base, "Content-Base"); @@ -104,6 +116,7 @@ public: match(field::conversion_with_loss, "Conversion-With-Loss"); match(field::cookie, "Cookie"); match(field::cookie2, "Cookie2"); + match(field::cost, "Cost"); match(field::dasl, "DASL"); match(field::date, "Date"); match(field::date_received, "Date-Received"); @@ -146,8 +159,11 @@ public: match(field::downgraded_return_path, "Downgraded-Return-Path"); match(field::downgraded_sender, "Downgraded-Sender"); match(field::downgraded_to, "Downgraded-To"); + match(field::ediint_features, "EDIINT-Features"); + match(field::eesst_version, "Eesst-Version"); match(field::encoding, "Encoding"); match(field::encrypted, "Encrypted"); + match(field::errors_to, "Errors-To"); match(field::etag, "ETag"); match(field::expect, "Expect"); match(field::expires, "Expires"); @@ -174,6 +190,7 @@ public: match(field::incomplete_copy, "Incomplete-Copy"); match(field::injection_date, "Injection-Date"); match(field::injection_info, "Injection-Info"); + match(field::jabber_id, "Jabber-ID"); match(field::keep_alive, "Keep-Alive"); match(field::keywords, "Keywords"); match(field::label, "Label"); @@ -199,8 +216,11 @@ public: match(field::message_id, "Message-ID"); match(field::message_type, "Message-Type"); match(field::meter, "Meter"); + match(field::method_check, "Method-Check"); + match(field::method_check_expires, "Method-Check-Expires"); match(field::mime_version, "MIME-Version"); match(field::mmhs_acp127_message_identifier, "MMHS-Acp127-Message-Identifier"); + match(field::mmhs_authorizing_users, "MMHS-Authorizing-Users"); match(field::mmhs_codress_message_indicator, "MMHS-Codress-Message-Indicator"); match(field::mmhs_copy_precedence, "MMHS-Copy-Precedence"); match(field::mmhs_exempted_address, "MMHS-Exempted-Address"); @@ -219,8 +239,10 @@ public: match(field::newsgroups, "Newsgroups"); match(field::nntp_posting_date, "NNTP-Posting-Date"); match(field::nntp_posting_host, "NNTP-Posting-Host"); + match(field::non_compliance, "Non-Compliance"); match(field::obsoletes, "Obsoletes"); match(field::opt, "Opt"); + match(field::optional, "Optional"); match(field::optional_www_authenticate, "Optional-WWW-Authenticate"); match(field::ordering_type, "Ordering-Type"); match(field::organization, "Organization"); @@ -245,6 +267,7 @@ public: match(field::preference_applied, "Preference-Applied"); match(field::prevent_nondelivery_report, "Prevent-NonDelivery-Report"); match(field::priority, "Priority"); + match(field::privicon, "Privicon"); match(field::profileobject, "ProfileObject"); match(field::protocol, "Protocol"); match(field::protocol_info, "Protocol-Info"); @@ -265,6 +288,7 @@ public: match(field::redirect_ref, "Redirect-Ref"); match(field::references, "References"); match(field::referer, "Referer"); + match(field::referer_root, "Referer-Root"); match(field::relay_version, "Relay-Version"); match(field::reply_by, "Reply-By"); match(field::reply_to, "Reply-To"); @@ -277,6 +301,8 @@ public: match(field::resent_reply_to, "Resent-Reply-To"); match(field::resent_sender, "Resent-Sender"); match(field::resent_to, "Resent-To"); + match(field::resolution_hint, "Resolution-Hint"); + match(field::resolver_location, "Resolver-Location"); match(field::retry_after, "Retry-After"); match(field::return_path, "Return-Path"); match(field::safe, "Safe"); @@ -295,12 +321,16 @@ public: match(field::set_cookie, "Set-Cookie"); match(field::set_cookie2, "Set-Cookie2"); match(field::setprofile, "SetProfile"); + match(field::sio_label, "SIO-Label"); + match(field::sio_label_history, "SIO-Label-History"); match(field::slug, "SLUG"); match(field::soapaction, "SoapAction"); match(field::solicitation, "Solicitation"); match(field::status_uri, "Status-URI"); match(field::strict_transport_security, "Strict-Transport-Security"); match(field::subject, "Subject"); + match(field::subok, "SubOK"); + match(field::subst, "Subst"); match(field::summary, "Summary"); match(field::supersedes, "Supersedes"); match(field::surrogate_capability, "Surrogate-Capability"); @@ -308,11 +338,17 @@ public: match(field::tcn, "TCN"); match(field::te, "TE"); match(field::timeout, "Timeout"); + match(field::title, "Title"); match(field::to, "To"); match(field::topic, "Topic"); match(field::trailer, "Trailer"); match(field::transfer_encoding, "Transfer-Encoding"); match(field::ttl, "TTL"); + match(field::ua_color, "UA-Color"); + match(field::ua_media, "UA-Media"); + match(field::ua_pixels, "UA-Pixels"); + match(field::ua_resolution, "UA-Resolution"); + match(field::ua_windowpixels, "UA-Windowpixels"); match(field::upgrade, "Upgrade"); match(field::urgency, "Urgency"); match(field::uri, "URI"); @@ -320,11 +356,25 @@ public: match(field::variant_vary, "Variant-Vary"); match(field::vary, "Vary"); match(field::vbr_info, "VBR-Info"); + match(field::version, "Version"); match(field::via, "Via"); match(field::want_digest, "Want-Digest"); match(field::warning, "Warning"); match(field::www_authenticate, "WWW-Authenticate"); + match(field::x_archived_at, "X-Archived-At"); + match(field::x_device_accept, "X-Device-Accept"); + match(field::x_device_accept_charset, "X-Device-Accept-Charset"); + match(field::x_device_accept_encoding, "X-Device-Accept-Encoding"); + match(field::x_device_accept_language, "X-Device-Accept-Language"); + match(field::x_device_user_agent, "X-Device-User-Agent"); match(field::x_frame_options, "X-Frame-Options"); + match(field::x_mittente, "X-Mittente"); + match(field::x_pgp_sig, "X-PGP-Sig"); + match(field::x_ricevuta, "X-Ricevuta"); + match(field::x_riferimento_message_id, "X-Riferimento-Message-ID"); + match(field::x_tiporicevuta, "X-TipoRicevuta"); + match(field::x_trasporto, "X-Trasporto"); + match(field::x_verificasicurezza, "X-VerificaSicurezza"); match(field::x400_content_identifier, "X400-Content-Identifier"); match(field::x400_content_return, "X400-Content-Return"); match(field::x400_content_type, "X400-Content-Type");