Subject: [Ietf-message-headers] Permanent message header field registration for traceparent and tracestate

From: Philippe Le Hégaret <[email-masked]>
Date: Sun, 24 Nov 2019 15:27:44 -0500

I'd like to update two entries from provisional to permanent.

Header field name: traceparent
Applicable protocol: http
Status: permanent
Change Controller:
   Distributed Tracing Working Group
   https://www.w3.org/2018/distributed-tracing/
   [email-masked]
Specification:
   https://www.w3.org/TR/trace-context/#traceparent-field

Header field name: tracestate
Applicable protocol: http
Status: permanent
Change Controller:
   Distributed Tracing Working Group
   https://www.w3.org/2018/distributed-tracing/
   [email-masked]
Specification:
   https://www.w3.org/TR/trace-context/#tracestate-field

Thank you,

Philippe

---

From: Julian Reschke <[email-masked]>
Date: Sun, 24 Nov 2019 21:39:06 +0100

On 24.11.2019 21:27, Philippe Le Hégaret wrote:
> ...

The spec link's anchor doesn't work for me.
<https://www.w3.org/TR/trace-context/#traceparent-header> does, though.

Quoting:

> 3.2 Traceparent Header
>
> The traceparent HTTP header field identifies the incoming request in a tracing system. It has four fields:
>
>     version
>     trace-id
>     parent-id
>     trace-flags

So what is the actual syntax of the header field?

Best regards, Julian

---

From: Philippe Le Hégaret <[email-masked]>
Date: Sun, 24 Nov 2019 15:46:42 -0500

> <https://www.w3.org/TR/trace-context/#traceparent-header> does, though.

Didn't check and realize the links had changed. Here is an updated template:

[[
   https://www.w3.org/TR/trace-context/#traceparent-header

   https://www.w3.org/TR/trace-context/#tracestate-header
]]

> So what is the actual syntax of the header field?

It's mentioned in the section
[[
[...]
   The tracestate field value is a list of [list-members] separated by 
[commas].

[...]

list  = list-member 0*31( OWS "," OWS list-member )
list-member = key "=" value
list-member = OWS

[...]

key = lcalpha 0*255( lcalpha / DIGIT / "_" / "-"/ "*" / "/" )
key = ( lcalpha / DIGIT ) 0*240( lcalpha / DIGIT / "_" / "-"/ "*" / "/" 
) "@" lcalpha 0*13( lcalpha / DIGIT / "_" / "-"/ "*" / "/" )
lcalpha    = %x61-7A ; a-z

[...]

value    = 0*255(chr) nblk-chr
nblk-chr = %x21-2B / %x2D-3C / %x3E-7E
chr      = %x20 / nblk-chr
]]
https://www.w3.org/TR/trace-context/#tracestate-header-field-values

Philippe

---

From: Julian Reschke <[email-masked]>
Date: Mon, 25 Nov 2019 06:52:17 +0100

> https://www.w3.org/TR/trace-context/#tracestate-header-field-values

I see. I'd propose to improve the paragraph ordering :-).

> list-member = key "=" value

That's invalid, you can't define "list-member" twice; make it:

list  = list-member 0*31( OWS "," OWS list-member )
list-member = (key "=" value) / OWS

or simpler:

list  = #31 list-member

There's also a problem that the ABNF does not allow whitespace around
"=", but the prose does.

Best regards, Julian

---

From: Philippe Le Hégaret <[email-masked]>
Date: Mon, 25 Nov 2019 04:32:20 -0500

> I see. I'd propose to improve the paragraph ordering :-).

Sure. Fyi, I raised this at
  https://github.com/w3c/trace-context/issues/364

Thank you for catching this.

Philippe