Skip to content

Commit 3f10db7

Browse files
committed
Add protobuf header check
1 parent 151f3aa commit 3f10db7

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

relay-server/src/endpoints/spans.rs

+22-17
Original file line numberDiff line numberDiff line change
@@ -25,29 +25,34 @@ where
2525
B::Data: Send + Into<Bytes>,
2626
B::Error: Into<axum::BoxError>,
2727
{
28-
let trace = if content_type.as_ref().starts_with("application/json") {
28+
let mut trace = None;
29+
if content_type.as_ref().starts_with("application/json") {
2930
let json: Json<TracesData> = request.extract().await?;
30-
json.0
31-
} else {
31+
trace = Some(json.0)
32+
} else if content_type.as_ref().starts_with("application/x-protobuf") {
3233
let protobuf: Protobuf<TracesData> = request.extract().await?;
33-
protobuf.0
34-
};
34+
trace = Some(protobuf.0)
35+
}
3536

36-
let mut envelope = Envelope::from_request(None, meta);
37-
for resource_span in trace.resource_spans {
38-
for scope_span in resource_span.scope_spans {
39-
for span in scope_span.spans {
40-
let Ok(payload) = serde_json::to_vec(&span) else {
41-
continue;
42-
};
43-
let mut item = Item::new(ItemType::OtelSpan);
44-
item.set_payload(ContentType::Json, payload);
45-
envelope.add_item(item);
37+
if let Some(trace) = trace {
38+
let mut envelope = Envelope::from_request(None, meta);
39+
for resource_span in trace.resource_spans {
40+
for scope_span in resource_span.scope_spans {
41+
for span in scope_span.spans {
42+
let Ok(payload) = serde_json::to_vec(&span) else {
43+
continue;
44+
};
45+
let mut item = Item::new(ItemType::OtelSpan);
46+
item.set_payload(ContentType::Json, payload);
47+
envelope.add_item(item);
48+
}
4649
}
4750
}
51+
common::handle_envelope(&state, envelope).await?;
52+
Ok(StatusCode::ACCEPTED)
53+
} else {
54+
Ok(StatusCode::UNSUPPORTED_MEDIA_TYPE)
4855
}
49-
common::handle_envelope(&state, envelope).await?;
50-
Ok(StatusCode::ACCEPTED)
5156
}
5257

5358
pub fn route<B>(config: &Config) -> MethodRouter<ServiceState, B>

0 commit comments

Comments
 (0)