Skip to content

Commit a9f74bd

Browse files
committed
wip
1 parent f62483e commit a9f74bd

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

ext/handlers_http.h

+24-3
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,28 @@ static inline void ddtrace_inject_distributed_headers_config(zend_array *array,
135135
bool send_b3single = zend_hash_str_exists(inject, ZEND_STRL("b3 single header"));
136136

137137
zend_long sampling_priority = ddtrace_fetch_priority_sampling_from_root();
138+
ddtrace_trace_id trace_id = ddtrace_peek_trace_id();
139+
uint64_t span_id = ddtrace_peek_span_id();
140+
141+
if (get_DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED() && !ddtrace_has_asm_avent()) {
142+
if (sampling_priority != DDTRACE_PRIORITY_SAMPLING_UNKNOWN) {
143+
if (send_datadog) {
144+
ADD_HEADER("x-datadog-sampling-priority", ZEND_LONG_FMT, sampling_priority);
145+
}
146+
if (trace_id.low || trace_id.high) {
147+
if (send_datadog) {
148+
ADD_HEADER("x-datadog-trace-id", "%" PRIu64, trace_id.low);
149+
}
150+
if (span_id) {
151+
if (send_datadog) {
152+
ADD_HEADER("x-datadog-parent-id", "%" PRIu64, span_id);
153+
}
154+
}
155+
}
156+
}
157+
goto injection_finished;
158+
}
159+
138160
if (sampling_priority != DDTRACE_PRIORITY_SAMPLING_UNKNOWN) {
139161
if (send_datadog) {
140162
ADD_HEADER("x-datadog-sampling-priority", ZEND_LONG_FMT, sampling_priority);
@@ -158,8 +180,7 @@ static inline void ddtrace_inject_distributed_headers_config(zend_array *array,
158180
ADD_HEADER("x-datadog-origin", "%s", ZSTR_VAL(origin));
159181
}
160182
}
161-
ddtrace_trace_id trace_id = ddtrace_peek_trace_id();
162-
uint64_t span_id = ddtrace_peek_span_id();
183+
163184
if (trace_id.low || trace_id.high) {
164185
if (send_datadog) {
165186
ADD_HEADER("x-datadog-trace-id", "%" PRIu64, trace_id.low);
@@ -228,7 +249,7 @@ static inline void ddtrace_inject_distributed_headers_config(zend_array *array,
228249
ADD_HEADER("b3", "%s", b3_sampling_decision);
229250
}
230251
}
231-
252+
injection_finished:
232253
if (propagated_tags) {
233254
zend_string_release(propagated_tags);
234255
}

ext/random.c

+10
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,16 @@ ddtrace_trace_id ddtrace_peek_trace_id(void) {
118118
return pspan ? SPANDATA(pspan)->root->trace_id : DDTRACE_G(distributed_trace_id);
119119
}
120120

121+
bool ddtrace_has_asm_avent(void) {
122+
ddtrace_span_properties *pspan = DDTRACE_G(active_stack) ? DDTRACE_G(active_stack)->active : NULL;
123+
if(!pspan) {
124+
return false;
125+
}
126+
zend_array *meta = ddtrace_property_array(&pspan->property_meta);
127+
128+
return zend_hash_str_exists(meta, ZEND_STRL("_dd.p.appsec"));
129+
}
130+
121131
int ddtrace_conv10_trace_id(ddtrace_trace_id id, uint8_t reverse[DD_TRACE_MAX_ID_LEN]) {
122132
reverse[0] = 0;
123133
int i = 0;

ext/random.h

+1
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ ddtrace_trace_id ddtrace_parse_hex_trace_id(char *trace_id, ssize_t trace_id_len
2121
uint64_t ddtrace_parse_hex_span_id_str(const char *id, size_t len);
2222
uint64_t ddtrace_parse_hex_span_id(zval *zid);
2323
int ddtrace_conv10_trace_id(ddtrace_trace_id id, uint8_t reverse[DD_TRACE_MAX_ID_LEN]);
24+
bool ddtrace_has_asm_avent(void);
2425

2526
#endif // DD_RANDOM_H

0 commit comments

Comments
 (0)