Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
estringana committed Nov 8, 2024
1 parent f62483e commit a9f74bd
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
27 changes: 24 additions & 3 deletions ext/handlers_http.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,28 @@ static inline void ddtrace_inject_distributed_headers_config(zend_array *array,
bool send_b3single = zend_hash_str_exists(inject, ZEND_STRL("b3 single header"));

zend_long sampling_priority = ddtrace_fetch_priority_sampling_from_root();
ddtrace_trace_id trace_id = ddtrace_peek_trace_id();
uint64_t span_id = ddtrace_peek_span_id();

if (get_DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED() && !ddtrace_has_asm_avent()) {
if (sampling_priority != DDTRACE_PRIORITY_SAMPLING_UNKNOWN) {
if (send_datadog) {
ADD_HEADER("x-datadog-sampling-priority", ZEND_LONG_FMT, sampling_priority);
}
if (trace_id.low || trace_id.high) {
if (send_datadog) {
ADD_HEADER("x-datadog-trace-id", "%" PRIu64, trace_id.low);
}
if (span_id) {
if (send_datadog) {
ADD_HEADER("x-datadog-parent-id", "%" PRIu64, span_id);
}
}
}
}
goto injection_finished;
}

if (sampling_priority != DDTRACE_PRIORITY_SAMPLING_UNKNOWN) {
if (send_datadog) {
ADD_HEADER("x-datadog-sampling-priority", ZEND_LONG_FMT, sampling_priority);
Expand All @@ -158,8 +180,7 @@ static inline void ddtrace_inject_distributed_headers_config(zend_array *array,
ADD_HEADER("x-datadog-origin", "%s", ZSTR_VAL(origin));
}
}
ddtrace_trace_id trace_id = ddtrace_peek_trace_id();
uint64_t span_id = ddtrace_peek_span_id();

if (trace_id.low || trace_id.high) {
if (send_datadog) {
ADD_HEADER("x-datadog-trace-id", "%" PRIu64, trace_id.low);
Expand Down Expand Up @@ -228,7 +249,7 @@ static inline void ddtrace_inject_distributed_headers_config(zend_array *array,
ADD_HEADER("b3", "%s", b3_sampling_decision);
}
}

injection_finished:
if (propagated_tags) {
zend_string_release(propagated_tags);
}
Expand Down
10 changes: 10 additions & 0 deletions ext/random.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,16 @@ ddtrace_trace_id ddtrace_peek_trace_id(void) {
return pspan ? SPANDATA(pspan)->root->trace_id : DDTRACE_G(distributed_trace_id);
}

bool ddtrace_has_asm_avent(void) {
ddtrace_span_properties *pspan = DDTRACE_G(active_stack) ? DDTRACE_G(active_stack)->active : NULL;
if(!pspan) {
return false;
}
zend_array *meta = ddtrace_property_array(&pspan->property_meta);

return zend_hash_str_exists(meta, ZEND_STRL("_dd.p.appsec"));
}

int ddtrace_conv10_trace_id(ddtrace_trace_id id, uint8_t reverse[DD_TRACE_MAX_ID_LEN]) {
reverse[0] = 0;
int i = 0;
Expand Down
1 change: 1 addition & 0 deletions ext/random.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ ddtrace_trace_id ddtrace_parse_hex_trace_id(char *trace_id, ssize_t trace_id_len
uint64_t ddtrace_parse_hex_span_id_str(const char *id, size_t len);
uint64_t ddtrace_parse_hex_span_id(zval *zid);
int ddtrace_conv10_trace_id(ddtrace_trace_id id, uint8_t reverse[DD_TRACE_MAX_ID_LEN]);
bool ddtrace_has_asm_avent(void);

#endif // DD_RANDOM_H

0 comments on commit a9f74bd

Please sign in to comment.