Skip the network denial grace period when remote decisions drain (#59960)

## Why

Completed remote commands wait up to 100 ms for late network denials even when all execution-owned network decision callbacks and requests have finished.

## What changed

Allow deferred network approval cleanup to finish as soon as an executor-owned remote proxy's decisions drain. Retain the grace period when a shared listener could still report an untagged denial, including when that listener starts during the command. Always register the blocked-request observer when starting the session proxy.

## Testing

Extend the paused-time regression test to cover immediate completion after remote callbacks drain and propagation of a late denial from a newly registered shared listener.

GitOrigin-RevId: 41bda6504f6d97d5626beba58cf30fb4a9a2dbdd
This commit is contained in:
jif
2026-11-06 19:18:02 +00:00
committed by copyberry
parent 12dc86beb3
commit 4e688da437
5 changed files with 189 additions and 42 deletions
+1 -6
View File
@@ -1720,11 +1720,6 @@ impl Session {
} else {
None
};
let blocked_request_observer = config
.permissions
.network
.as_ref()
.map(|_| build_blocked_request_observer(Arc::clone(&network_approval)));
let network_policy_decider =
network_policy_decider_session
.as_ref()
@@ -1747,7 +1742,7 @@ impl Session {
config.permissions.permission_profile(),
config.effective_local_windows_sandbox_type(),
network_policy_decider.as_ref().map(Arc::clone),
blocked_request_observer.as_ref().map(Arc::clone),
Some(build_blocked_request_observer(Arc::clone(&network_approval))),
managed_network_requirements_configured,
network_proxy_audit_metadata.clone(),
)