diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 4db7db98..1e63a78b 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -174,7 +174,7 @@ def extract_context_from_http_event_or_context(event, lambda_context): Falls back to lambda context if no trace data is found in the `headers` """ - headers = event.get("headers", {}) + headers = event.get("headers", {}) or {} lowercase_headers = {k.lower(): v for k, v in headers.items()} trace_id = lowercase_headers.get(TraceHeader.TRACE_ID) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index c578de07..7f5ba4d3 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1237,3 +1237,11 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ ) mock_submit_errors_metric.assert_called_once() self.assertEqual(1, mock_span.error) + + def test_no_error_with_nonetype_headers(self): + lambda_ctx = get_mock_context() + ctx, source = extract_dd_trace_context( + {"headers": None}, + lambda_ctx, + ) + self.assertEqual(ctx, None)