File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -437,6 +437,14 @@ def extract_sentrytrace_data(
437437 if not header :
438438 return None
439439
440+ if "," in header :
441+ # Multiple headers may have been combined into one comma-separated value (RFC 7230 3.2.2); use the first non-empty one.
442+ parts = [part .strip () for part in header .split ("," )]
443+ header = next ((part for part in parts if part ), "" )
444+
445+ if not header :
446+ return None
447+
440448 if header .startswith ("00-" ) and header .endswith ("-00" ):
441449 header = header [3 :- 3 ]
442450
Original file line number Diff line number Diff line change @@ -38,6 +38,27 @@ def test_sentrytrace_extraction(sampling_decision):
3838 }
3939
4040
41+ def test_sentrytrace_extraction_multiple_headers ():
42+ sentrytrace_header = (
43+ "12312012123120121231201212312012-0415201309082013-1,"
44+ "12312012123120121231201212312012-0000000000000000-0"
45+ )
46+ assert extract_sentrytrace_data (sentrytrace_header ) == {
47+ "trace_id" : "12312012123120121231201212312012" ,
48+ "parent_span_id" : "0415201309082013" ,
49+ "parent_sampled" : True ,
50+ }
51+
52+
53+ def test_sentrytrace_extraction_leading_empty_fragment ():
54+ sentrytrace_header = ",12312012123120121231201212312012-0415201309082013-1"
55+ assert extract_sentrytrace_data (sentrytrace_header ) == {
56+ "trace_id" : "12312012123120121231201212312012" ,
57+ "parent_span_id" : "0415201309082013" ,
58+ "parent_sampled" : True ,
59+ }
60+
61+
4162def test_iter_headers (monkeypatch ):
4263 monkeypatch .setattr (
4364 Transaction ,
You can’t perform that action at this time.
0 commit comments