Skip to content

Commit

Permalink
otel: fix segfaults when otel not configured
Browse files Browse the repository at this point in the history
This commit adds NULL checks for the request->otel object that
were missed in the Traceparent and Tracestate routines.

Closes: #1523
Closes: #1526
Fixes: 9d3dcb8 ("otel: add build tooling to include otel code")
Signed-off-by: Ava Hahn <[email protected]>
  • Loading branch information
avahahn committed Jan 7, 2025
1 parent 706b994 commit aac8869
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions src/nxt_otel.c
Original file line number Diff line number Diff line change
Expand Up @@ -311,17 +311,13 @@ nxt_otel_test_and_call_state(nxt_task_t *task, nxt_http_request_t *r)
void
nxt_otel_request_error_path(nxt_task_t *task, nxt_http_request_t *r)
{
if (r->otel->trace == NULL) {
if (r->otel == NULL || r->otel->trace == NULL) {
return;
}

// response headers have been cleared
nxt_otel_propagate_header(task, r);

// collect span immediately
if (r->otel) {
nxt_otel_state_transition(r->otel, NXT_OTEL_COLLECT_STATE);
}
nxt_otel_state_transition(r->otel, NXT_OTEL_COLLECT_STATE);
nxt_otel_test_and_call_state(task, r);
}

Expand All @@ -344,6 +340,9 @@ nxt_otel_parse_traceparent(void *ctx, nxt_http_field_t *field, uintptr_t data)
*/

r = ctx;
if (r->otel == NULL) {
return NXT_OK;
}

if (field->value_length != NXT_OTEL_TRACEPARENT_LEN) {
goto error_state;
Expand Down Expand Up @@ -391,6 +390,10 @@ nxt_otel_parse_tracestate(void *ctx, nxt_http_field_t *field, uintptr_t data)
s.start = field->value;

r = ctx;
if (r->otel == NULL) {
return NXT_OK;
}

r->otel->trace_state = s;

/*
Expand Down

0 comments on commit aac8869

Please sign in to comment.