@@ -453,10 +453,7 @@ static void dd_activate_once(void) {
453453 }
454454
455455 // if we're to enable appsec, we need to enable sidecar
456- bool enable_sidecar = ddtrace_sidecar_maybe_enable_appsec (& appsec_activation , & appsec_config );
457- if (!enable_sidecar ) {
458- enable_sidecar = get_global_DD_INSTRUMENTATION_TELEMETRY_ENABLED () || get_global_DD_TRACE_SIDECAR_TRACE_SENDER ();
459- }
456+ bool enable_sidecar = ddtrace_sidecar_should_enable (& appsec_activation , & appsec_config );
460457
461458 if (enable_sidecar )
462459#endif
@@ -1615,11 +1612,7 @@ static PHP_MSHUTDOWN_FUNCTION(ddtrace) {
16151612
16161613 ddtrace_user_req_shutdown ();
16171614
1618- // Only shutdown sidecar in MSHUTDOWN for non-CLI SAPIs
1619- // CLI SAPI shuts down in RSHUTDOWN to allow thread joins before ASAN checks
1620- if (strcmp (sapi_module .name , "cli" ) != 0 ) {
1621- ddtrace_sidecar_shutdown ();
1622- }
1615+ ddtrace_sidecar_shutdown ();
16231616
16241617 ddtrace_live_debugger_mshutdown ();
16251618
@@ -2639,30 +2632,9 @@ void dd_internal_handle_fork(void) {
26392632 ddtrace_coms_curl_shutdown ();
26402633 ddtrace_coms_clean_background_sender_after_fork ();
26412634 }
2642-
2643- // Handle thread mode after fork
2644- int32_t current_pid = (int32_t )getpid ();
2645- bool is_child_process = (ddtrace_sidecar_master_pid != 0 &&
2646- current_pid != ddtrace_sidecar_master_pid );
2647-
2648- if (is_child_process && ddtrace_sidecar_active_mode == DD_SIDECAR_CONNECTION_THREAD ) {
2649- // Clear inherited master listener state (child doesn't own it)
2650- ddtrace_ffi_try ("Failed clearing inherited listener state" ,
2651- ddog_sidecar_clear_inherited_listener ());
2652-
2653- // Attempt to reconnect child to parent's master listener
2654- bool appsec_activation = false;
2655- bool appsec_config = false;
2656- bool enable_sidecar = ddtrace_sidecar_maybe_enable_appsec (& appsec_activation , & appsec_config );
2657- if (!enable_sidecar ) {
2658- enable_sidecar = get_global_DD_INSTRUMENTATION_TELEMETRY_ENABLED () || get_global_DD_TRACE_SIDECAR_TRACE_SENDER ();
2659- }
2660-
2661- if (enable_sidecar && !ddtrace_sidecar_reconnect_after_fork (appsec_activation , appsec_config )) {
2662- LOG (WARN , "Child process after fork with thread mode: failed to reconnect to parent's listener" );
2663- }
2664- }
26652635#endif
2636+
2637+ ddtrace_sidecar_handle_fork ();
26662638 if (DDTRACE_G (agent_config_reader )) {
26672639 ddog_agent_remote_config_reader_drop (DDTRACE_G (agent_config_reader ));
26682640 DDTRACE_G (agent_config_reader ) = NULL ;
@@ -2677,11 +2649,6 @@ void dd_internal_handle_fork(void) {
26772649 }
26782650 ddtrace_seed_prng ();
26792651 ddtrace_generate_runtime_id ();
2680- // Thread mode already handled sidecar reconnection above (lines 2648-2664)
2681- // Only reset for subprocess mode
2682- if (ddtrace_sidecar_active_mode != DD_SIDECAR_CONNECTION_THREAD ) {
2683- ddtrace_reset_sidecar ();
2684- }
26852652 if (!get_DD_TRACE_FORKED_PROCESS ()) {
26862653 ddtrace_disable_tracing_in_current_request ();
26872654 }
0 commit comments