BUG/MINOR: opentracing: enable the use of http headers without a set value

In case we transfer some data that does not have a set value via the HTTP
header, adding that header in the text map was done incorrectly.

This simple patch allows the use of HTTP headers without a set value.
This commit is contained in:
Miroslav Zagorac 2021-09-09 01:23:42 +02:00 committed by Willy Tarreau
parent 4cb2c83f46
commit 71cb1ab6b9

View File

@ -139,8 +139,14 @@ struct otc_text_map *flt_ot_http_headers_get(struct channel *chn, const char *pr
*
* Before adding, the prefix is removed from the
* HTTP header name.
*
* In case the data of the HTTP header is not
* specified, v.len will be equal to 0, and
* the function otc_text_map_add() will not
* interpret this well. In this case, instead
* of v.ptr, "" is used.
*/
if (otc_text_map_add(retptr, n.ptr + prefix_len, n.len - prefix_len, v.ptr, v.len, OTC_TEXT_MAP_DUP_KEY | OTC_TEXT_MAP_DUP_VALUE) == -1) {
if (otc_text_map_add(retptr, n.ptr + prefix_len, n.len - prefix_len, (v.len > 0) ? v.ptr : "", v.len, OTC_TEXT_MAP_DUP_KEY | OTC_TEXT_MAP_DUP_VALUE) == -1) {
FLT_OT_ERR("failed to add HTTP header data");
otc_text_map_destroy(&retptr, OTC_TEXT_MAP_FREE_KEY | OTC_TEXT_MAP_FREE_VALUE);