summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAva Hahn <a.hahn@f5.com>2024-10-23 16:30:39 -0700
committerAva Hahn <110854134+avahahn@users.noreply.github.com>2024-11-12 09:50:02 -0800
commitb9066210ac378a6255c1e3de5fc01ee29904a05c (patch)
tree9330ac9c327dde2c3920ba794b91ae2451ed424f
parent9d3dcb800aba0c036b032ccd00197712c3f5d0d9 (diff)
downloadunit-b9066210ac378a6255c1e3de5fc01ee29904a05c.tar.gz
unit-b9066210ac378a6255c1e3de5fc01ee29904a05c.tar.bz2
otel: add header parsing and test call state
Enables Unit to parse the tracestate and traceparent headers and add it to the list, as well as calls to nxt_otel_test_and_call_state. Signed-off-by: Ava Hahn <a.hahn@f5.com> Signed-off-by: Gabor Javorszky <g.javorszky@f5.com>
-rw-r--r--src/nxt_h1proto.c9
-rw-r--r--src/nxt_http_request.c4
-rw-r--r--src/nxt_otel.h7
3 files changed, 20 insertions, 0 deletions
diff --git a/src/nxt_h1proto.c b/src/nxt_h1proto.c
index 48c2697b..9a9ad553 100644
--- a/src/nxt_h1proto.c
+++ b/src/nxt_h1proto.c
@@ -178,6 +178,10 @@ static nxt_http_field_proc_t nxt_h1p_fields[] = {
{ nxt_string("Content-Length"), &nxt_http_request_content_length, 0 },
{ nxt_string("Authorization"), &nxt_http_request_field,
offsetof(nxt_http_request_t, authorization) },
+#if (NXT_HAVE_OTEL)
+ { nxt_string("Traceparent"), &nxt_otel_parse_traceparent, 0 },
+ { nxt_string("Tracestate"), &nxt_otel_parse_tracestate, 0 },
+#endif
};
@@ -518,6 +522,9 @@ nxt_h1p_conn_request_init(nxt_task_t *task, void *obj, void *data)
h1p->parser.discard_unsafe_fields = skcf->discard_unsafe_fields;
nxt_h1p_conn_request_header_parse(task, c, h1p);
+
+ NXT_OTEL_TRACE();
+
return;
}
@@ -1332,6 +1339,8 @@ nxt_h1p_request_header_send(nxt_task_t *task, nxt_http_request_t *r,
nxt_debug(task, "h1p request header send");
+ NXT_OTEL_TRACE();
+
r->header_sent = 1;
h1p = r->proto.h1;
n = r->status;
diff --git a/src/nxt_http_request.c b/src/nxt_http_request.c
index 417b5a39..722197b8 100644
--- a/src/nxt_http_request.c
+++ b/src/nxt_http_request.c
@@ -322,6 +322,8 @@ nxt_http_request_start(nxt_task_t *task, void *obj, void *data)
r = obj;
+ NXT_OTEL_TRACE();
+
r->state = &nxt_http_request_body_state;
skcf = r->conf->socket_conf;
@@ -593,6 +595,8 @@ nxt_http_request_ready(nxt_task_t *task, void *obj, void *data)
r = obj;
action = r->conf->socket_conf->action;
+ NXT_OTEL_TRACE();
+
if (r->chunked) {
ret = nxt_http_request_chunked_transform(r);
if (nxt_slow_path(ret != NXT_OK)) {
diff --git a/src/nxt_otel.h b/src/nxt_otel.h
index f5a2de8b..112f054c 100644
--- a/src/nxt_otel.h
+++ b/src/nxt_otel.h
@@ -10,6 +10,13 @@
#if (NXT_HAVE_OTEL)
+#define NXT_OTEL_TRACE() nxt_otel_test_and_call_state(task, r)
+#else
+#define NXT_OTEL_TRACE()
+#endif
+
+
+#if (NXT_HAVE_OTEL)
extern void nxt_otel_rs_send_trace(void *trace);
extern void * nxt_otel_rs_get_or_create_trace(u_char *trace_id);
extern void nxt_otel_rs_init(