fix(BRIDGE-256): fix reversed order of headers with multiple values.

This commit is contained in:
Xavier Michelon
2024-11-26 16:02:43 +01:00
parent 612d1054db
commit 80d556343e
3 changed files with 21 additions and 9 deletions

View File

@ -531,11 +531,12 @@ func toMessageHeader(hdr proton.Headers) message.Header {
// go-message's message.Header are in reversed order (you should only add fields at the top, so storing in reverse order offer faster performances).
for i := len(hdr.Order) - 1; i >= 0; i-- {
key := hdr.Order[i]
for _, val := range hdr.Values[key] {
values := hdr.Values[key]
for j := len(values) - 1; j >= 0; j-- {
// Using AddRaw instead of Add to save key-value pair as byte buffer within Header.
// This buffer is used latter on in message writer to construct message and avoid crash
// when key length is more than 76 characters long.
res.AddRaw([]byte(key + ": " + val + "\r\n"))
res.AddRaw([]byte(key + ": " + values[j] + "\r\n"))
}
}