diff --git a/src/lib.rs b/src/lib.rs index 7fea7a2..84051f0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -54,12 +54,17 @@ where S: Service> fn call(&mut self, req: Request) -> Self::Future { let headers = req.headers(); - let parent = headers - .get(TRACEPARENT_HEADER) - .and_then(|traceparent| SpanContext::decode_w3c_traceparent(traceparent.to_str().ok()?)) - .unwrap_or(SpanContext::random()); - let root = Span::root(req.uri().to_string(), parent); - self.service.call(req).in_span(root) + let parent = headers.get(TRACEPARENT_HEADER).and_then(|traceparent| { + SpanContext::decode_w3c_traceparent(traceparent.to_str().ok()?) + }); + + let span = if let Some(parent) = &parent { + Span::root(req.method().to_string(), *parent) + } else { + Span::noop() + }; + + self.service.call(req).in_span(span) } }