running-process 4.6.1__tar.gz → 4.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {running_process-4.6.1 → running_process-4.6.2}/Cargo.lock +8 -7
- {running_process-4.6.1 → running_process-4.6.2}/Cargo.toml +1 -1
- {running_process-4.6.1 → running_process-4.6.2}/PKG-INFO +1 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/bin/running-process-broker-v2.rs +46 -8
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lib/mod.rs +3 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lib/wire.rs +61 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/admin.rs +4 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/connection.rs +16 -14
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/control_socket.rs +1 -88
- running_process-4.6.2/crates/running-process/src/broker/server/deadline_stream.rs +242 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/orchestrate_unix.rs +2 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/unix.rs +186 -4
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/wire.rs +114 -14
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff_serve.rs +9 -8
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/mod.rs +2 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/observer_registry.rs +138 -19
- running_process-4.6.2/crates/running-process/src/helpers.rs +260 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/lib.rs +322 -83
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/observer/descendants_linux.rs +181 -9
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/observer/descendants_macos.rs +225 -46
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/observer/mod.rs +117 -3
- running_process-4.6.2/crates/running-process/src/observer/pid_identity.rs +18 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/observer/tests.rs +57 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/backend.rs +6 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/native_pty_process.rs +77 -39
- running_process-4.6.2/crates/running-process/src/pty/pty_posix.rs +449 -0
- running_process-4.6.2/crates/running-process/src/public_symbols.rs +263 -0
- running_process-4.6.2/crates/running-process/src/spawn_imp_unix.rs +505 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/tests.rs +194 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/admin.rs +53 -3
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/connection.rs +32 -3
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_serve_e2e.rs +93 -9
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_wire.rs +204 -16
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/main.rs +25 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker_v2_scaffold_accepts_connection.rs +234 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/process_core_test.rs +93 -26
- running_process-4.6.2/crates/running-process/tests/pty_unix_teardown_test.rs +154 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/unsafe_inventory.rs +1 -1
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/Cargo.toml +1 -1
- {running_process-4.6.1 → running_process-4.6.2}/pyproject.toml +1 -1
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/__init__.py +1 -1
- running_process-4.6.1/crates/running-process/src/helpers.rs +0 -74
- running_process-4.6.1/crates/running-process/src/pty/pty_posix.rs +0 -121
- running_process-4.6.1/crates/running-process/src/public_symbols.rs +0 -90
- running_process-4.6.1/crates/running-process/src/spawn_imp_unix.rs +0 -267
- {running_process-4.6.1 → running_process-4.6.2}/LICENSE +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/README.md +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/Cargo.toml +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/README.md +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/build.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/examples/handoff_rollout_evidence.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_admin.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_envelope.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_manifest.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_service_def.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v1/buf.yaml +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v2/broker_v2_control.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v2/broker_v2_manifest.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/broker_v2/broker_v2_service_def.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/proto/daemon.proto +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/README.md +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/bin/README.md +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/bin/daemon.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/bin/running-process-broker-v1.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/bin/running-process-cleanup.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/bin/runpm.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/bin/trampoline.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/boot_autostart/linux.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/boot_autostart/macos.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/boot_autostart/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/boot_autostart/windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/README.md +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/adopt.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_handle.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lib/accept_handed_off.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/identity.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/probe.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/probe_async.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/verify_pid.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/frame_client.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/frame_client_async.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/identity_file.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/mux.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/broker_http_port.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/broker_http_server.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/brokered_backend.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/builders.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/capabilities.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/client.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/client_v2.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/doctor.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/fs_health.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/get_http_endpoint_dispatch.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/host_identity.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/http_endpoint_registry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/crash_dump.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/names.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/names_v2.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/privilege.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/process_tree.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/sid.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/manifest.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol/frame_ext.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol/framing.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol/registry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol/validate.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/README.md +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/backend_handle.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/client_compat.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/io.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/loader.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/manifest_io.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/secure_dir.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/backend_endpoint_allocator.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/backend_launcher.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/backend_registry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/broadcast.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/fd_pressure.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/ack.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/fallback.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/handoff_token.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/latency.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/orchestrate.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/pending.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/hello_handler.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/hello_router.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/idle_coord.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/instance.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/metrics.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/perf_guard.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/recovery.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/serve.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/service_def_loader.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/spawn_coordinator.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/spawn_wait.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/trace_context.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/version_allow_list.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/cleanup/instances.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/cleanup/list.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/cleanup/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/cleanup/prune.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/cleanup/uninstall.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/cleanup/verify_artifacts.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/cleanup/verify_basic.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/client.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/deadline_io.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/observer.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/paths.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/pipe_session.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/pty_session.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/client/telemetry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/console_detect.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/containment.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/attach_stream.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/config.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/emergency_reserve.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/core.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/kill.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/maintenance.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/observer.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/pipe_sessions_handlers.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/process_tree.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/pty_sessions_handlers.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/registry_handlers.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/services.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/spawn.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/telemetry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/util.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/handlers_tests.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/idle.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/pipe_attach_stream.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/pipe_sessions.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/platform/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/platform/unix.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/platform/windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/pty_sessions.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/reaper.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/registry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/runtime_gc.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/server.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/services.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/services_snapshot.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/shadow.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/daemon/telemetry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/environment.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/maintenance/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/maintenance/release_handles.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/observer/cmdline.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/observer/file_handles.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/originator.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/process_tree.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/child.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/conpty_acquire.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/conpty_api.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/conpty_sidecar_hashes.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/pipes.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/proc_thread_attr.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/pseudoconsole.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/win_version.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/pty_windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/pty/terminal_input.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/runpm_config.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/rust_debug.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/spawn.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/spawn_imp_windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/systemd_killmode.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/terminal_graphics.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/test_support/conformance.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/test_support/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/types.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/unix.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/README.md +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_endpoint_allocator.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_boot_id.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_common.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_dead.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_probe.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_recycled.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_registry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_sdk.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/backend_sdk_async.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/broadcast_release_handles.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/builders.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/client.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/conformance_kit.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/contrib_templates.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/docs_escape_hatch.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/docs_index.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/doctor.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/fd_pressure.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/framing.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/golden_bytes.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_ack_deadline.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_adopted_backend.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_adoption.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_backend_lib.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_capability.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_cross_os_acceptance.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_end_to_end_acceptance.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_fallback_perm_denied.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_latency.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_latency_e2e.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_orchestrate.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_serve_latency.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_token_mismatch.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_transport.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_under_load.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_unix_e2e_orchestrate.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_unix_orchestrate.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_windows_duplicate_handle.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_windows_orchestrate.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/hello_concurrent.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/hello_handler.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/hello_rate_limit.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/hello_router.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/hello_service_unknown.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/hello_skip.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/hello_version_blocked.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/idle_coord.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/instance.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/instance_isolation.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/into_backend_io.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/lifecycle_event_size.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_atomic.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_boot_id.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_corruption.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_roundtrip.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/metrics_names_frozen.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/names.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/peer_creds_drop.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/perf_guard.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/process_tree_lifecycle.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/proto_field_numbers.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/proto_roundtrip.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/recovery_one_retry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/serve.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/service_def_loader.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/servicedef_cli.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/socket_common.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/spawn_coordinator.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/spawn_wait.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/toy_three_party.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/trace_propagation.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/linux.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/macos.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/brokered_backend_ui.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_list.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_prune_confirm.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_prune_dryrun.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_uninstall.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_verify_artifacts.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/cleanup/common.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/cleanup/main.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/common/mitm_stdin.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/common/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/containment_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_autostart_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_backlog_accumulation_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_cross_process_pty_attach_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_fast_ctrl_c_handoff_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/compiler_wrap_seam_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/env_replace_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/main.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/more_tests.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/stdout_seam_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_non_tty_attach_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_pipe_session_attach_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_pty_session_attach_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_resize_rpc_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_runpm_save_resurrect.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_runpm_service_stubs.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_sessions_bulk_ops_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_sessions_log_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_tee_ring_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_termination_outcome_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_tree_kill_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/daemon_tui_repaint_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/fs_adversarial_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/interactive_pty_session_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/maintenance/main.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/maintenance/release_handles_unix.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/maintenance/release_handles_windows.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/originator_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/pty_conhost_job_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/pty_master_public_api_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/pty_mitm_paste_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/pty_mitm_stdin_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/runpm_boot_autostart_fixtures.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/runpm_toml_config.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/cross_user_release_handles.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/cve_dbus_2014_3639.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/cve_dbus_2023_34969.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/cve_sccache_2023_1521.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/deferred_runtime_surfaces.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/dependency_surface.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/fuzz_campaign_signoff.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/main.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/manifest_tamper_detection.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/no_network_dependencies.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/pipe_name_validation.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/pipe_squatting.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/security_audit_workflow.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/security_fuzz_workflow.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/service_name_validation.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/wanted_version_shell_injection.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/security/wanted_version_traversal.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/spawn_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/terminal_graphics_capabilities_test.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/ui/brokered_backend_state_in_bind.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process/tests/ui/brokered_backend_state_in_bind.stderr +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/containment.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/daemon_client.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/debug_traces.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/helpers.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/idle_detector.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/lib.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/metrics.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/originator.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/pid_tracking.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/priority.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/process.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/process_tree.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/pty_buffer.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/pty_process.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/public_symbols.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/py_native_process.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/registry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/signal_bool.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/terminal_input.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/control_churn.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/expect_match.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/idle_detector.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/mod.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/parse_command.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/process_tree.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/pty_buffer.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/pty_process.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/registry.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/signal_bool.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/running-process-py/src/tests/terminal_input.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/test-watchdog/Cargo.toml +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/test-watchdog/src/lib.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/crates/test-watchdog/tests/hang_dump.rs +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/assets/example.txt +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/cli.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/command_render.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/compat.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/console_encoding.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/daemon.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/dashboard.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/exit_status.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/expect.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/interrupt_handler.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/launch.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/line_iterator.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/output_formatter.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/priority.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/process_utils.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/processor_cli.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/__init__.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_command.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_console_io.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_errors.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_idle_helpers.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_idle_state.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_interactive.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_process_helpers.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_pseudo_terminal.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_pty_expect.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_pty_idle_waiter.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_pty_input_relay.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_pty_reader.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_pty_wait_for.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_terminal_strip.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_types.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/pty/_wait_input.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/__init__.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/_classmethod_api.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/_core.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/_helpers.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/_iter.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/_subprocess.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/_types.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process/_wait_methods.py +0 -0
- {running_process-4.6.1 → running_process-4.6.2}/src/running_process/running_process_manager.py +0 -0
|
@@ -1351,7 +1351,7 @@ dependencies = [
|
|
|
1351
1351
|
|
|
1352
1352
|
[[package]]
|
|
1353
1353
|
name = "running-process"
|
|
1354
|
-
version = "4.6.
|
|
1354
|
+
version = "4.6.2"
|
|
1355
1355
|
dependencies = [
|
|
1356
1356
|
"anyhow",
|
|
1357
1357
|
"blake3",
|
|
@@ -1390,31 +1390,32 @@ dependencies = [
|
|
|
1390
1390
|
|
|
1391
1391
|
[[package]]
|
|
1392
1392
|
name = "running-process-observer"
|
|
1393
|
-
version = "4.6.
|
|
1393
|
+
version = "4.6.2"
|
|
1394
1394
|
dependencies = [
|
|
1395
1395
|
"blake3",
|
|
1396
1396
|
"dirs",
|
|
1397
|
+
"libc",
|
|
1397
1398
|
"tempfile",
|
|
1398
1399
|
"windows-sys 0.59.0",
|
|
1399
1400
|
]
|
|
1400
1401
|
|
|
1401
1402
|
[[package]]
|
|
1402
1403
|
name = "running-process-observer-interposer-linux"
|
|
1403
|
-
version = "4.6.
|
|
1404
|
+
version = "4.6.2"
|
|
1404
1405
|
dependencies = [
|
|
1405
1406
|
"libc",
|
|
1406
1407
|
]
|
|
1407
1408
|
|
|
1408
1409
|
[[package]]
|
|
1409
1410
|
name = "running-process-observer-interposer-macos"
|
|
1410
|
-
version = "4.6.
|
|
1411
|
+
version = "4.6.2"
|
|
1411
1412
|
dependencies = [
|
|
1412
1413
|
"libc",
|
|
1413
1414
|
]
|
|
1414
1415
|
|
|
1415
1416
|
[[package]]
|
|
1416
1417
|
name = "running-process-observer-interposer-windows"
|
|
1417
|
-
version = "4.6.
|
|
1418
|
+
version = "4.6.2"
|
|
1418
1419
|
dependencies = [
|
|
1419
1420
|
"retour",
|
|
1420
1421
|
"windows-sys 0.59.0",
|
|
@@ -1422,7 +1423,7 @@ dependencies = [
|
|
|
1422
1423
|
|
|
1423
1424
|
[[package]]
|
|
1424
1425
|
name = "running-process-py"
|
|
1425
|
-
version = "4.6.
|
|
1426
|
+
version = "4.6.2"
|
|
1426
1427
|
dependencies = [
|
|
1427
1428
|
"interprocess",
|
|
1428
1429
|
"libc",
|
|
@@ -1436,7 +1437,7 @@ dependencies = [
|
|
|
1436
1437
|
|
|
1437
1438
|
[[package]]
|
|
1438
1439
|
name = "running-process-win-gnu-bridge"
|
|
1439
|
-
version = "4.6.
|
|
1440
|
+
version = "4.6.2"
|
|
1440
1441
|
dependencies = [
|
|
1441
1442
|
"windows-sys 0.59.0",
|
|
1442
1443
|
]
|
|
@@ -45,7 +45,7 @@ use std::sync::Arc;
|
|
|
45
45
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
|
46
46
|
use std::thread;
|
|
47
47
|
|
|
48
|
-
use interprocess::local_socket::traits::Listener as _;
|
|
48
|
+
use interprocess::local_socket::traits::{Listener as _, Stream as _};
|
|
49
49
|
use interprocess::local_socket::ListenerOptions;
|
|
50
50
|
use prost::Message;
|
|
51
51
|
use running_process::broker::lifecycle::names_v2::v2_program_pipe;
|
|
@@ -57,6 +57,7 @@ use running_process::broker::protocol::{
|
|
|
57
57
|
};
|
|
58
58
|
use running_process::broker::protocol_v2::ServiceDefinitionLoader;
|
|
59
59
|
use running_process::broker::server::service_def_loader::ServiceDefinitionError;
|
|
60
|
+
use running_process::broker::server::deadline_stream::{hello_read_deadline, DeadlineStream};
|
|
60
61
|
|
|
61
62
|
/// Default program name when `--program` is not passed. Matches the
|
|
62
63
|
/// slice-3c scaffold so existing integration tests keep working.
|
|
@@ -66,6 +67,23 @@ const SCAFFOLD_PIPE_IDX: u32 = 0;
|
|
|
66
67
|
/// Maximum in-flight Hello handlers. Conservative cap; the OS thread
|
|
67
68
|
/// cap is the hard upper bound but we want backpressure before that.
|
|
68
69
|
const MAX_INFLIGHT_HANDLERS: usize = 256;
|
|
70
|
+
const MAX_INFLIGHT_HANDLERS_ENV: &str = "RUNNING_PROCESS_BROKER_MAX_INFLIGHT_HANDLERS";
|
|
71
|
+
|
|
72
|
+
fn max_inflight_handlers() -> usize {
|
|
73
|
+
std::env::var(MAX_INFLIGHT_HANDLERS_ENV)
|
|
74
|
+
.ok()
|
|
75
|
+
.and_then(|raw| raw.trim().parse::<usize>().ok())
|
|
76
|
+
.filter(|&limit| limit > 0)
|
|
77
|
+
.unwrap_or(MAX_INFLIGHT_HANDLERS)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
struct InflightGuard(Arc<AtomicUsize>);
|
|
81
|
+
|
|
82
|
+
impl Drop for InflightGuard {
|
|
83
|
+
fn drop(&mut self) {
|
|
84
|
+
self.0.fetch_sub(1, Ordering::SeqCst);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
69
87
|
|
|
70
88
|
#[derive(Debug, Clone)]
|
|
71
89
|
struct CliOptions {
|
|
@@ -254,6 +272,7 @@ fn accept_loop(
|
|
|
254
272
|
loader: Arc<ServiceDefinitionLoader>,
|
|
255
273
|
inflight: Arc<AtomicUsize>,
|
|
256
274
|
) -> ExitCode {
|
|
275
|
+
let max_inflight = max_inflight_handlers();
|
|
257
276
|
loop {
|
|
258
277
|
match listener.accept() {
|
|
259
278
|
Ok(stream) => {
|
|
@@ -261,10 +280,10 @@ fn accept_loop(
|
|
|
261
280
|
// The peer's blocking read on the Hello-reply socket will
|
|
262
281
|
// see EOF when this branch closes the stream.
|
|
263
282
|
let n = inflight.fetch_add(1, Ordering::SeqCst);
|
|
264
|
-
if n >=
|
|
283
|
+
if n >= max_inflight {
|
|
265
284
|
inflight.fetch_sub(1, Ordering::SeqCst);
|
|
266
285
|
eprintln!(
|
|
267
|
-
"running-process-broker-v2: at MAX_INFLIGHT_HANDLERS ({
|
|
286
|
+
"running-process-broker-v2: at MAX_INFLIGHT_HANDLERS ({max_inflight}); dropping connection",
|
|
268
287
|
);
|
|
269
288
|
drop(stream);
|
|
270
289
|
continue;
|
|
@@ -274,8 +293,9 @@ fn accept_loop(
|
|
|
274
293
|
let spawn_result = thread::Builder::new()
|
|
275
294
|
.name("rpb-v2-handler".to_string())
|
|
276
295
|
.spawn(move || {
|
|
296
|
+
let _inflight_guard = InflightGuard(inflight_handler);
|
|
277
297
|
let mut s = stream;
|
|
278
|
-
let result =
|
|
298
|
+
let result = handle_hello_with_deadline(&mut s, &loader);
|
|
279
299
|
match result {
|
|
280
300
|
Ok(svc) => println!(
|
|
281
301
|
"running-process-broker-v2 Hello service={svc:?} negotiated",
|
|
@@ -284,7 +304,6 @@ fn accept_loop(
|
|
|
284
304
|
"running-process-broker-v2 Hello handler failed: {err}"
|
|
285
305
|
),
|
|
286
306
|
}
|
|
287
|
-
inflight_handler.fetch_sub(1, Ordering::SeqCst);
|
|
288
307
|
});
|
|
289
308
|
if let Err(err) = spawn_result {
|
|
290
309
|
eprintln!(
|
|
@@ -314,7 +333,7 @@ fn accept_one(
|
|
|
314
333
|
match listener.accept() {
|
|
315
334
|
Ok(mut stream) => {
|
|
316
335
|
println!("running-process-broker-v2 peer connected (--once)");
|
|
317
|
-
match
|
|
336
|
+
match handle_hello_with_deadline(&mut stream, &loader) {
|
|
318
337
|
Ok(svc) => {
|
|
319
338
|
println!(
|
|
320
339
|
"running-process-broker-v2 Hello for service {svc:?} negotiated; exiting"
|
|
@@ -334,17 +353,36 @@ fn accept_one(
|
|
|
334
353
|
}
|
|
335
354
|
}
|
|
336
355
|
|
|
356
|
+
fn handle_hello_with_deadline(
|
|
357
|
+
stream: &mut interprocess::local_socket::Stream,
|
|
358
|
+
loader: &ServiceDefinitionLoader,
|
|
359
|
+
) -> Result<String, String> {
|
|
360
|
+
stream
|
|
361
|
+
.set_nonblocking(true)
|
|
362
|
+
.map_err(|error| format!("set Hello stream nonblocking: {error}"))?;
|
|
363
|
+
let read_result = {
|
|
364
|
+
let mut deadline_stream = DeadlineStream::new(stream, hello_read_deadline());
|
|
365
|
+
read_frame(&mut deadline_stream).map_err(|error| format!("read Hello frame: {error}"))
|
|
366
|
+
};
|
|
367
|
+
let restore_result = stream
|
|
368
|
+
.set_nonblocking(false)
|
|
369
|
+
.map_err(|error| format!("restore Hello stream blocking mode: {error}"));
|
|
370
|
+
let bytes = read_result?;
|
|
371
|
+
restore_result?;
|
|
372
|
+
handle_hello_bytes(stream, loader, bytes)
|
|
373
|
+
}
|
|
374
|
+
|
|
337
375
|
/// Read a `Hello` frame, look up the registered service, and send
|
|
338
376
|
/// back either `Negotiated` (service found + version policy OK) or
|
|
339
377
|
/// `Refused` (unknown service or policy block).
|
|
340
378
|
///
|
|
341
379
|
/// Returns the service name on Negotiated, or the human-readable
|
|
342
380
|
/// refusal reason on Refused. Wire errors propagate as `Err`.
|
|
343
|
-
fn
|
|
381
|
+
fn handle_hello_bytes<S: std::io::Write>(
|
|
344
382
|
stream: &mut S,
|
|
345
383
|
loader: &ServiceDefinitionLoader,
|
|
384
|
+
bytes: Vec<u8>,
|
|
346
385
|
) -> Result<String, String> {
|
|
347
|
-
let bytes = read_frame(stream).map_err(|e| format!("read Hello frame: {e}"))?;
|
|
348
386
|
let hello = Hello::decode(bytes.as_slice()).map_err(|e| format!("decode Hello: {e}"))?;
|
|
349
387
|
|
|
350
388
|
let reply = build_hello_reply(&hello, loader);
|
{running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/backend_lib/mod.rs
RENAMED
|
@@ -17,7 +17,9 @@ pub use accept_handed_off::{
|
|
|
17
17
|
accept_handed_off, parse_handoff_token, AcceptedHandoff, HandedOffPayload, HandoffAcceptance,
|
|
18
18
|
HandoffRejectionReason, RejectedHandoff,
|
|
19
19
|
};
|
|
20
|
+
#[allow(deprecated)]
|
|
20
21
|
pub use wire::{
|
|
21
|
-
read_handoff_offer,
|
|
22
|
+
read_handoff_offer, read_handoff_offer_with_deadline, respond_to_handoff_offer,
|
|
23
|
+
serve_handoff_offer, serve_handoff_offer_with_deadline, write_handoff_ack,
|
|
22
24
|
BackendHandoffWireError,
|
|
23
25
|
};
|
|
@@ -27,6 +27,7 @@ use crate::broker::backend_lib::accept_handed_off::{
|
|
|
27
27
|
use crate::broker::protocol::{
|
|
28
28
|
read_frame, write_frame, Frame, FrameKind, FramingError, HandoffAck, HandoffOffer,
|
|
29
29
|
};
|
|
30
|
+
use crate::broker::server::deadline_stream::with_nonblocking_deadline;
|
|
30
31
|
use crate::broker::server::handoff::wire::{handoff_ack_frame, validate_handoff_frame};
|
|
31
32
|
use crate::broker::server::{HandoffToken, HandoffTokenStore};
|
|
32
33
|
|
|
@@ -47,6 +48,12 @@ pub enum BackendHandoffWireError {
|
|
|
47
48
|
UnexpectedFrame(&'static str),
|
|
48
49
|
}
|
|
49
50
|
|
|
51
|
+
impl From<std::io::Error> for BackendHandoffWireError {
|
|
52
|
+
fn from(error: std::io::Error) -> Self {
|
|
53
|
+
Self::Framing(FramingError::Io(error))
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
50
57
|
/// Read and validate one broker→backend [`HandoffOffer`] frame.
|
|
51
58
|
pub fn read_handoff_offer<S: Read>(
|
|
52
59
|
stream: &mut S,
|
|
@@ -65,6 +72,15 @@ pub fn read_handoff_offer<S: Read>(
|
|
|
65
72
|
Ok(offer)
|
|
66
73
|
}
|
|
67
74
|
|
|
75
|
+
/// Read one broker→backend [`HandoffOffer`] from a production local socket
|
|
76
|
+
/// with an absolute deadline, restoring blocking mode before returning.
|
|
77
|
+
pub fn read_handoff_offer_with_deadline(
|
|
78
|
+
stream: &mut interprocess::local_socket::Stream,
|
|
79
|
+
deadline: Instant,
|
|
80
|
+
) -> Result<HandoffOffer, BackendHandoffWireError> {
|
|
81
|
+
with_nonblocking_deadline(stream, deadline, |stream| read_handoff_offer(stream))
|
|
82
|
+
}
|
|
83
|
+
|
|
68
84
|
/// Validate/consume one received offer and write the matching [`HandoffAck`].
|
|
69
85
|
///
|
|
70
86
|
/// The presented token rides the offer; `expected_token` is the token the
|
|
@@ -121,13 +137,57 @@ pub fn write_handoff_ack<S: Write>(
|
|
|
121
137
|
///
|
|
122
138
|
/// Convenience composition of [`read_handoff_offer`] and
|
|
123
139
|
/// [`respond_to_handoff_offer`] for backends serving one handoff per
|
|
124
|
-
/// control exchange.
|
|
140
|
+
/// control exchange. This legacy generic entry point cannot configure bounded
|
|
141
|
+
/// I/O itself; callers must pre-bound custom streams. Production local-socket
|
|
142
|
+
/// users should call [`serve_handoff_offer_with_deadline`] instead.
|
|
143
|
+
#[deprecated(
|
|
144
|
+
since = "4.6.2",
|
|
145
|
+
note = "use serve_handoff_offer_with_deadline for production local sockets"
|
|
146
|
+
)]
|
|
125
147
|
pub fn serve_handoff_offer<S: Read + Write>(
|
|
126
148
|
stream: &mut S,
|
|
127
149
|
pending_tokens: &mut HandoffTokenStore,
|
|
128
150
|
expected_token: HandoffToken,
|
|
129
151
|
now: Instant,
|
|
152
|
+
) -> Result<HandoffAcceptance<HandoffOffer>, BackendHandoffWireError> {
|
|
153
|
+
serve_handoff_offer_inner(stream, pending_tokens, expected_token, now)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
fn serve_handoff_offer_inner<S: Read + Write>(
|
|
157
|
+
stream: &mut S,
|
|
158
|
+
pending_tokens: &mut HandoffTokenStore,
|
|
159
|
+
expected_token: HandoffToken,
|
|
160
|
+
now: Instant,
|
|
130
161
|
) -> Result<HandoffAcceptance<HandoffOffer>, BackendHandoffWireError> {
|
|
131
162
|
let offer = read_handoff_offer(stream)?;
|
|
132
163
|
respond_to_handoff_offer(stream, pending_tokens, expected_token, offer, now)
|
|
133
164
|
}
|
|
165
|
+
|
|
166
|
+
/// Serve one handoff offer over a production local socket with an absolute
|
|
167
|
+
/// read deadline.
|
|
168
|
+
///
|
|
169
|
+
/// The stream is temporarily switched to nonblocking mode so silent, partial,
|
|
170
|
+
/// and continuously trickling peers cannot extend the bound. Blocking mode is
|
|
171
|
+
/// restored before the token is consumed and the ACK is written. If both the
|
|
172
|
+
/// read and mode restoration fail, the read error takes precedence so a timeout
|
|
173
|
+
/// remains classified as [`FramingError::Io`] with
|
|
174
|
+
/// [`std::io::ErrorKind::TimedOut`].
|
|
175
|
+
///
|
|
176
|
+
/// This wire helper does not receive or acquire an out-of-band descriptor.
|
|
177
|
+
/// A consuming transport that receives an `SCM_RIGHTS` descriptor before
|
|
178
|
+
/// calling this function must retain it in an owned RAII value and drop it when
|
|
179
|
+
/// this function returns an error, including a deadline expiry.
|
|
180
|
+
///
|
|
181
|
+
/// The deprecated [`serve_handoff_offer`] remains available for compatibility
|
|
182
|
+
/// with custom `Read + Write` streams whose bounded-I/O policy is configured by
|
|
183
|
+
/// the caller.
|
|
184
|
+
pub fn serve_handoff_offer_with_deadline(
|
|
185
|
+
stream: &mut interprocess::local_socket::Stream,
|
|
186
|
+
pending_tokens: &mut HandoffTokenStore,
|
|
187
|
+
expected_token: HandoffToken,
|
|
188
|
+
now: Instant,
|
|
189
|
+
deadline: Instant,
|
|
190
|
+
) -> Result<HandoffAcceptance<HandoffOffer>, BackendHandoffWireError> {
|
|
191
|
+
let offer = read_handoff_offer_with_deadline(stream, deadline)?;
|
|
192
|
+
respond_to_handoff_offer(stream, pending_tokens, expected_token, offer, now)
|
|
193
|
+
}
|
{running_process-4.6.1 → running_process-4.6.2}/crates/running-process/src/broker/server/admin.rs
RENAMED
|
@@ -16,6 +16,7 @@ use crate::broker::protocol::{
|
|
|
16
16
|
|
|
17
17
|
use super::backend_registry::BackendRegistry;
|
|
18
18
|
use super::connection::{bind_local_socket, BrokerConnectionError, LocalSocketCleanup};
|
|
19
|
+
use super::deadline_stream::{hello_read_deadline, with_nonblocking_deadline};
|
|
19
20
|
use super::service_def_loader::{service_definition_dir, SERVICE_DEF_DIR_ENV};
|
|
20
21
|
use super::spawn_coordinator::{
|
|
21
22
|
SpawnBudgetSnapshot, DEFAULT_SPAWN_ATTEMPTS_PER_WINDOW, DEFAULT_SPAWN_BUDGET_WINDOW,
|
|
@@ -559,7 +560,9 @@ pub fn serve_one_admin_socket(
|
|
|
559
560
|
let cleanup = LocalSocketCleanup(socket_path);
|
|
560
561
|
let result = (|| {
|
|
561
562
|
let mut stream = listener.accept()?;
|
|
562
|
-
|
|
563
|
+
with_nonblocking_deadline(&mut stream, hello_read_deadline(), |stream| {
|
|
564
|
+
handle_admin_connection(stream, snapshot)
|
|
565
|
+
})
|
|
563
566
|
})();
|
|
564
567
|
drop(listener);
|
|
565
568
|
drop(cleanup);
|
|
@@ -18,6 +18,7 @@ use crate::broker::protocol::{
|
|
|
18
18
|
FrameKind, FramingError, HelloReply, PayloadEncoding, Refused, CONTROL_PAYLOAD_PROTOCOL,
|
|
19
19
|
MAX_HELLO_BYTES, PROTOCOL_VERSION,
|
|
20
20
|
};
|
|
21
|
+
use crate::broker::server::deadline_stream::{hello_read_deadline, with_nonblocking_deadline};
|
|
21
22
|
use crate::broker::server::{HelloHandler, HelloRouter, PeerIdentity};
|
|
22
23
|
|
|
23
24
|
/// Peer credential policy applied before reading a Hello frame.
|
|
@@ -212,7 +213,9 @@ where
|
|
|
212
213
|
let result = (|| {
|
|
213
214
|
let mut stream = listener.accept()?;
|
|
214
215
|
let peer = peer_identity_from_stream(&stream)?;
|
|
215
|
-
|
|
216
|
+
with_nonblocking_deadline(&mut stream, hello_read_deadline(), |stream| {
|
|
217
|
+
handle_hello_connection_with_peer_policy(stream, responder, peer, peer_policy)
|
|
218
|
+
})
|
|
216
219
|
})();
|
|
217
220
|
drop(listener);
|
|
218
221
|
drop(cleanup);
|
|
@@ -260,13 +263,15 @@ pub fn serve_local_socket_connections_with_peer_policy(
|
|
|
260
263
|
let handler = Arc::clone(&handler);
|
|
261
264
|
let peer_policy = Arc::clone(&peer_policy);
|
|
262
265
|
workers.push(thread::spawn(move || {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
266
|
+
with_nonblocking_deadline(&mut stream, hello_read_deadline(), |stream| {
|
|
267
|
+
handle_hello_connection_with_peer_policy(
|
|
268
|
+
stream,
|
|
269
|
+
handler.as_ref(),
|
|
270
|
+
peer,
|
|
271
|
+
peer_policy.as_ref(),
|
|
272
|
+
)
|
|
273
|
+
.map(|_| ())
|
|
274
|
+
})
|
|
270
275
|
}));
|
|
271
276
|
}
|
|
272
277
|
|
|
@@ -325,12 +330,9 @@ where
|
|
|
325
330
|
for _ in 0..connection_count {
|
|
326
331
|
let mut stream = listener.accept()?;
|
|
327
332
|
let peer = peer_identity_from_stream(&stream)?;
|
|
328
|
-
let _ =
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
peer,
|
|
332
|
-
peer_policy,
|
|
333
|
-
)?;
|
|
333
|
+
let _ = with_nonblocking_deadline(&mut stream, hello_read_deadline(), |stream| {
|
|
334
|
+
handle_hello_connection_with_peer_policy(stream, responder, peer, peer_policy)
|
|
335
|
+
})?;
|
|
334
336
|
}
|
|
335
337
|
Ok(())
|
|
336
338
|
})();
|
|
@@ -21,97 +21,10 @@ use super::connection::{
|
|
|
21
21
|
write_response_frame, BrokerConnectionError, HelloResponder, LocalSocketCleanup,
|
|
22
22
|
PeerCredentialPolicy,
|
|
23
23
|
};
|
|
24
|
+
use super::deadline_stream::{hello_read_deadline, DeadlineStream};
|
|
24
25
|
use super::fd_pressure::{FdPressureDecision, FdPressureGuard};
|
|
25
26
|
use super::hello_handler::PeerIdentity;
|
|
26
27
|
|
|
27
|
-
/// Poll interval for the deadline-bounded control-socket read/write.
|
|
28
|
-
const CONTROL_IO_POLL_INTERVAL: std::time::Duration = std::time::Duration::from_millis(5);
|
|
29
|
-
|
|
30
|
-
/// Default deadline for reading a peer's initial Hello/admin frame off an
|
|
31
|
-
/// accepted control-socket connection (issue #590, cluster G). The accept
|
|
32
|
-
/// loop serves each connection inline on one thread, so a peer that
|
|
33
|
-
/// connects but never sends a complete frame would otherwise stall every
|
|
34
|
-
/// other client. Override with `RUNNING_PROCESS_BROKER_HELLO_TIMEOUT_MS`.
|
|
35
|
-
const DEFAULT_HELLO_READ_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(30);
|
|
36
|
-
const HELLO_READ_TIMEOUT_ENV: &str = "RUNNING_PROCESS_BROKER_HELLO_TIMEOUT_MS";
|
|
37
|
-
|
|
38
|
-
fn hello_read_deadline() -> std::time::Instant {
|
|
39
|
-
let timeout = std::env::var(HELLO_READ_TIMEOUT_ENV)
|
|
40
|
-
.ok()
|
|
41
|
-
.and_then(|raw| raw.trim().parse::<u64>().ok())
|
|
42
|
-
.filter(|&ms| ms > 0)
|
|
43
|
-
.map(std::time::Duration::from_millis)
|
|
44
|
-
.unwrap_or(DEFAULT_HELLO_READ_TIMEOUT);
|
|
45
|
-
std::time::Instant::now() + timeout
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/// Wraps an accepted (nonblocking) control-socket stream and bounds every
|
|
49
|
-
/// read/write against a deadline, so a silent or trickle peer cannot wedge
|
|
50
|
-
/// the single-threaded accept loop (issue #590, cluster G). `Ok(0)` is
|
|
51
|
-
/// treated as "no data yet" (Windows `PIPE_NOWAIT` returns that instead of
|
|
52
|
-
/// `WouldBlock`), matching the broker probe idiom.
|
|
53
|
-
struct DeadlineStream<'a, S> {
|
|
54
|
-
inner: &'a mut S,
|
|
55
|
-
deadline: std::time::Instant,
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
impl<'a, S> DeadlineStream<'a, S> {
|
|
59
|
-
fn new(inner: &'a mut S, deadline: std::time::Instant) -> Self {
|
|
60
|
-
Self { inner, deadline }
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
fn wait(&self) -> std::io::Result<()> {
|
|
64
|
-
let now = std::time::Instant::now();
|
|
65
|
-
if now >= self.deadline {
|
|
66
|
-
return Err(std::io::Error::new(
|
|
67
|
-
std::io::ErrorKind::TimedOut,
|
|
68
|
-
"broker control-socket peer did not send a complete frame in time",
|
|
69
|
-
));
|
|
70
|
-
}
|
|
71
|
-
std::thread::sleep((self.deadline - now).min(CONTROL_IO_POLL_INTERVAL));
|
|
72
|
-
Ok(())
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
impl<S: Read> Read for DeadlineStream<'_, S> {
|
|
77
|
-
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
|
|
78
|
-
loop {
|
|
79
|
-
match self.inner.read(buf) {
|
|
80
|
-
Ok(0) => self.wait()?,
|
|
81
|
-
Ok(n) => return Ok(n),
|
|
82
|
-
Err(e) if e.kind() == std::io::ErrorKind::WouldBlock => self.wait()?,
|
|
83
|
-
Err(e) if e.kind() == std::io::ErrorKind::Interrupted => continue,
|
|
84
|
-
Err(e) => return Err(e),
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
impl<S: Write> Write for DeadlineStream<'_, S> {
|
|
91
|
-
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
|
|
92
|
-
loop {
|
|
93
|
-
match self.inner.write(buf) {
|
|
94
|
-
Ok(0) => self.wait()?,
|
|
95
|
-
Ok(n) => return Ok(n),
|
|
96
|
-
Err(e) if e.kind() == std::io::ErrorKind::WouldBlock => self.wait()?,
|
|
97
|
-
Err(e) if e.kind() == std::io::ErrorKind::Interrupted => continue,
|
|
98
|
-
Err(e) => return Err(e),
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
fn flush(&mut self) -> std::io::Result<()> {
|
|
104
|
-
loop {
|
|
105
|
-
match self.inner.flush() {
|
|
106
|
-
Ok(()) => return Ok(()),
|
|
107
|
-
Err(e) if e.kind() == std::io::ErrorKind::WouldBlock => self.wait()?,
|
|
108
|
-
Err(e) if e.kind() == std::io::ErrorKind::Interrupted => continue,
|
|
109
|
-
Err(e) => return Err(e),
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
28
|
/// Result of handling one control socket connection.
|
|
116
29
|
#[derive(Clone, Debug, PartialEq)]
|
|
117
30
|
pub enum ControlSocketReply {
|