running-process 4.6.0__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.
Files changed (442) hide show
  1. {running_process-4.6.0 → running_process-4.6.2}/Cargo.lock +12 -11
  2. {running_process-4.6.0 → running_process-4.6.2}/Cargo.toml +1 -1
  3. {running_process-4.6.0 → running_process-4.6.2}/PKG-INFO +1 -1
  4. running_process-4.6.2/crates/running-process/src/README.md +16 -0
  5. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/bin/running-process-broker-v2.rs +46 -8
  6. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lib/mod.rs +3 -1
  7. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lib/wire.rs +61 -1
  8. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/admin.rs +4 -1
  9. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/connection.rs +16 -14
  10. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/control_socket.rs +1 -88
  11. running_process-4.6.2/crates/running-process/src/broker/server/deadline_stream.rs +242 -0
  12. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/orchestrate_unix.rs +2 -1
  13. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/unix.rs +186 -4
  14. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/wire.rs +114 -14
  15. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff_serve.rs +9 -8
  16. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/mod.rs +2 -0
  17. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/observer_registry.rs +138 -19
  18. running_process-4.6.2/crates/running-process/src/environment.rs +302 -0
  19. running_process-4.6.2/crates/running-process/src/helpers.rs +260 -0
  20. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/lib.rs +322 -83
  21. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/observer/descendants_linux.rs +181 -9
  22. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/observer/descendants_macos.rs +225 -46
  23. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/observer/mod.rs +117 -3
  24. running_process-4.6.2/crates/running-process/src/observer/pid_identity.rs +18 -0
  25. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/observer/tests.rs +57 -1
  26. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/backend.rs +6 -0
  27. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/native_pty_process.rs +77 -39
  28. running_process-4.6.2/crates/running-process/src/pty/pty_posix.rs +449 -0
  29. running_process-4.6.2/crates/running-process/src/public_symbols.rs +263 -0
  30. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/spawn.rs +5 -2
  31. running_process-4.6.2/crates/running-process/src/spawn_imp_unix.rs +505 -0
  32. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/tests.rs +194 -1
  33. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/admin.rs +53 -3
  34. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/connection.rs +32 -3
  35. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_serve_e2e.rs +93 -9
  36. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_wire.rs +204 -16
  37. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/main.rs +25 -0
  38. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker_v2_scaffold_accepts_connection.rs +234 -0
  39. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/process_core_test.rs +93 -26
  40. running_process-4.6.2/crates/running-process/tests/pty_unix_teardown_test.rs +154 -0
  41. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/unsafe_inventory.rs +1 -1
  42. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/Cargo.toml +1 -1
  43. {running_process-4.6.0 → running_process-4.6.2}/pyproject.toml +1 -1
  44. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/__init__.py +1 -1
  45. running_process-4.6.0/crates/running-process/src/environment.rs +0 -142
  46. running_process-4.6.0/crates/running-process/src/helpers.rs +0 -74
  47. running_process-4.6.0/crates/running-process/src/pty/pty_posix.rs +0 -121
  48. running_process-4.6.0/crates/running-process/src/public_symbols.rs +0 -90
  49. running_process-4.6.0/crates/running-process/src/spawn_imp_unix.rs +0 -267
  50. {running_process-4.6.0 → running_process-4.6.2}/LICENSE +0 -0
  51. {running_process-4.6.0 → running_process-4.6.2}/README.md +0 -0
  52. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/Cargo.toml +0 -0
  53. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/README.md +0 -0
  54. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/build.rs +0 -0
  55. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/examples/handoff_rollout_evidence.rs +0 -0
  56. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_admin.proto +0 -0
  57. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_envelope.proto +0 -0
  58. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_manifest.proto +0 -0
  59. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v1/broker_v1_service_def.proto +0 -0
  60. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v1/buf.yaml +0 -0
  61. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v2/broker_v2_control.proto +0 -0
  62. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v2/broker_v2_manifest.proto +0 -0
  63. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/broker_v2/broker_v2_service_def.proto +0 -0
  64. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/proto/daemon.proto +0 -0
  65. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/bin/README.md +0 -0
  66. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/bin/daemon.rs +0 -0
  67. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/bin/running-process-broker-v1.rs +0 -0
  68. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/bin/running-process-cleanup.rs +0 -0
  69. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/bin/runpm.rs +0 -0
  70. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/bin/trampoline.rs +0 -0
  71. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/boot_autostart/linux.rs +0 -0
  72. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/boot_autostart/macos.rs +0 -0
  73. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/boot_autostart/mod.rs +0 -0
  74. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/boot_autostart/windows.rs +0 -0
  75. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/README.md +0 -0
  76. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/adopt.rs +0 -0
  77. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_handle.rs +0 -0
  78. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lib/accept_handed_off.rs +0 -0
  79. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/identity.rs +0 -0
  80. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/mod.rs +0 -0
  81. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/probe.rs +0 -0
  82. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/probe_async.rs +0 -0
  83. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_lifecycle/verify_pid.rs +0 -0
  84. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/frame_client.rs +0 -0
  85. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/frame_client_async.rs +0 -0
  86. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/identity_file.rs +0 -0
  87. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/mod.rs +0 -0
  88. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/backend_sdk/mux.rs +0 -0
  89. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/broker_http_port.rs +0 -0
  90. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/broker_http_server.rs +0 -0
  91. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/brokered_backend.rs +0 -0
  92. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/builders.rs +0 -0
  93. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/capabilities.rs +0 -0
  94. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/client.rs +0 -0
  95. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/client_v2.rs +0 -0
  96. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/doctor.rs +0 -0
  97. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/fs_health.rs +0 -0
  98. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/get_http_endpoint_dispatch.rs +0 -0
  99. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/host_identity.rs +0 -0
  100. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/http_endpoint_registry.rs +0 -0
  101. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/crash_dump.rs +0 -0
  102. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/mod.rs +0 -0
  103. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/names.rs +0 -0
  104. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/names_v2.rs +0 -0
  105. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/privilege.rs +0 -0
  106. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/process_tree.rs +0 -0
  107. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/lifecycle/sid.rs +0 -0
  108. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/manifest.rs +0 -0
  109. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/mod.rs +0 -0
  110. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol/frame_ext.rs +0 -0
  111. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol/framing.rs +0 -0
  112. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol/mod.rs +0 -0
  113. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol/registry.rs +0 -0
  114. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol/validate.rs +0 -0
  115. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/README.md +0 -0
  116. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/backend_handle.rs +0 -0
  117. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/client_compat.rs +0 -0
  118. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/io.rs +0 -0
  119. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/loader.rs +0 -0
  120. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/manifest_io.rs +0 -0
  121. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/protocol_v2/mod.rs +0 -0
  122. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/secure_dir.rs +0 -0
  123. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/backend_endpoint_allocator.rs +0 -0
  124. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/backend_launcher.rs +0 -0
  125. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/backend_registry.rs +0 -0
  126. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/broadcast.rs +0 -0
  127. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/fd_pressure.rs +0 -0
  128. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/ack.rs +0 -0
  129. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/fallback.rs +0 -0
  130. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/handoff_token.rs +0 -0
  131. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/latency.rs +0 -0
  132. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/mod.rs +0 -0
  133. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/orchestrate.rs +0 -0
  134. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/pending.rs +0 -0
  135. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/handoff/windows.rs +0 -0
  136. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/hello_handler.rs +0 -0
  137. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/hello_router.rs +0 -0
  138. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/idle_coord.rs +0 -0
  139. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/instance.rs +0 -0
  140. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/metrics.rs +0 -0
  141. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/perf_guard.rs +0 -0
  142. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/recovery.rs +0 -0
  143. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/serve.rs +0 -0
  144. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/service_def_loader.rs +0 -0
  145. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/spawn_coordinator.rs +0 -0
  146. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/spawn_wait.rs +0 -0
  147. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/trace_context.rs +0 -0
  148. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/broker/server/version_allow_list.rs +0 -0
  149. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/cleanup/instances.rs +0 -0
  150. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/cleanup/list.rs +0 -0
  151. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/cleanup/mod.rs +0 -0
  152. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/cleanup/prune.rs +0 -0
  153. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/cleanup/uninstall.rs +0 -0
  154. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/cleanup/verify_artifacts.rs +0 -0
  155. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/cleanup/verify_basic.rs +0 -0
  156. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/client.rs +0 -0
  157. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/deadline_io.rs +0 -0
  158. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/mod.rs +0 -0
  159. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/observer.rs +0 -0
  160. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/paths.rs +0 -0
  161. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/pipe_session.rs +0 -0
  162. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/pty_session.rs +0 -0
  163. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/client/telemetry.rs +0 -0
  164. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/console_detect.rs +0 -0
  165. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/containment.rs +0 -0
  166. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/attach_stream.rs +0 -0
  167. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/config.rs +0 -0
  168. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/emergency_reserve.rs +0 -0
  169. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/core.rs +0 -0
  170. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/kill.rs +0 -0
  171. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/maintenance.rs +0 -0
  172. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/mod.rs +0 -0
  173. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/observer.rs +0 -0
  174. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/pipe_sessions_handlers.rs +0 -0
  175. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/process_tree.rs +0 -0
  176. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/pty_sessions_handlers.rs +0 -0
  177. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/registry_handlers.rs +0 -0
  178. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/services.rs +0 -0
  179. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/spawn.rs +0 -0
  180. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/telemetry.rs +0 -0
  181. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers/util.rs +0 -0
  182. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/handlers_tests.rs +0 -0
  183. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/idle.rs +0 -0
  184. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/mod.rs +0 -0
  185. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/pipe_attach_stream.rs +0 -0
  186. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/pipe_sessions.rs +0 -0
  187. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/platform/mod.rs +0 -0
  188. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/platform/unix.rs +0 -0
  189. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/platform/windows.rs +0 -0
  190. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/pty_sessions.rs +0 -0
  191. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/reaper.rs +0 -0
  192. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/registry.rs +0 -0
  193. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/runtime_gc.rs +0 -0
  194. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/server.rs +0 -0
  195. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/services.rs +0 -0
  196. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/services_snapshot.rs +0 -0
  197. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/shadow.rs +0 -0
  198. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/daemon/telemetry.rs +0 -0
  199. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/maintenance/mod.rs +0 -0
  200. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/maintenance/release_handles.rs +0 -0
  201. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/observer/cmdline.rs +0 -0
  202. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/observer/file_handles.rs +0 -0
  203. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/originator.rs +0 -0
  204. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/process_tree.rs +0 -0
  205. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/child.rs +0 -0
  206. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/conpty_acquire.rs +0 -0
  207. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/conpty_api.rs +0 -0
  208. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/conpty_sidecar_hashes.rs +0 -0
  209. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/mod.rs +0 -0
  210. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/pipes.rs +0 -0
  211. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/proc_thread_attr.rs +0 -0
  212. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/pseudoconsole.rs +0 -0
  213. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/conpty_passthrough/win_version.rs +0 -0
  214. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/mod.rs +0 -0
  215. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/pty_windows.rs +0 -0
  216. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/pty/terminal_input.rs +0 -0
  217. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/runpm_config.rs +0 -0
  218. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/rust_debug.rs +0 -0
  219. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/spawn_imp_windows.rs +0 -0
  220. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/systemd_killmode.rs +0 -0
  221. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/terminal_graphics.rs +0 -0
  222. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/test_support/conformance.rs +0 -0
  223. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/test_support/mod.rs +0 -0
  224. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/types.rs +0 -0
  225. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/unix.rs +0 -0
  226. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/src/windows.rs +0 -0
  227. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/README.md +0 -0
  228. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_endpoint_allocator.rs +0 -0
  229. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_boot_id.rs +0 -0
  230. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_common.rs +0 -0
  231. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_dead.rs +0 -0
  232. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_probe.rs +0 -0
  233. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_handle_recycled.rs +0 -0
  234. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_registry.rs +0 -0
  235. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_sdk.rs +0 -0
  236. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/backend_sdk_async.rs +0 -0
  237. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/broadcast_release_handles.rs +0 -0
  238. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/builders.rs +0 -0
  239. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/client.rs +0 -0
  240. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/conformance_kit.rs +0 -0
  241. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/contrib_templates.rs +0 -0
  242. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/docs_escape_hatch.rs +0 -0
  243. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/docs_index.rs +0 -0
  244. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/doctor.rs +0 -0
  245. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/fd_pressure.rs +0 -0
  246. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/framing.rs +0 -0
  247. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/golden_bytes.rs +0 -0
  248. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_ack_deadline.rs +0 -0
  249. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_adopted_backend.rs +0 -0
  250. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_adoption.rs +0 -0
  251. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_backend_lib.rs +0 -0
  252. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_capability.rs +0 -0
  253. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_cross_os_acceptance.rs +0 -0
  254. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_end_to_end_acceptance.rs +0 -0
  255. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_fallback_perm_denied.rs +0 -0
  256. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_latency.rs +0 -0
  257. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_latency_e2e.rs +0 -0
  258. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_orchestrate.rs +0 -0
  259. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_serve_latency.rs +0 -0
  260. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_token_mismatch.rs +0 -0
  261. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_transport.rs +0 -0
  262. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_under_load.rs +0 -0
  263. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_unix_e2e_orchestrate.rs +0 -0
  264. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_unix_orchestrate.rs +0 -0
  265. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_windows_duplicate_handle.rs +0 -0
  266. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/handoff_windows_orchestrate.rs +0 -0
  267. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/hello_concurrent.rs +0 -0
  268. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/hello_handler.rs +0 -0
  269. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/hello_rate_limit.rs +0 -0
  270. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/hello_router.rs +0 -0
  271. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/hello_service_unknown.rs +0 -0
  272. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/hello_skip.rs +0 -0
  273. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/hello_version_blocked.rs +0 -0
  274. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/idle_coord.rs +0 -0
  275. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/instance.rs +0 -0
  276. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/instance_isolation.rs +0 -0
  277. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/into_backend_io.rs +0 -0
  278. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/lifecycle_event_size.rs +0 -0
  279. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_atomic.rs +0 -0
  280. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_boot_id.rs +0 -0
  281. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_corruption.rs +0 -0
  282. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/manifest_roundtrip.rs +0 -0
  283. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/metrics_names_frozen.rs +0 -0
  284. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/names.rs +0 -0
  285. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/peer_creds_drop.rs +0 -0
  286. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/perf_guard.rs +0 -0
  287. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/process_tree_lifecycle.rs +0 -0
  288. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/proto_field_numbers.rs +0 -0
  289. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/proto_roundtrip.rs +0 -0
  290. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/recovery_one_retry.rs +0 -0
  291. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/serve.rs +0 -0
  292. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/service_def_loader.rs +0 -0
  293. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/servicedef_cli.rs +0 -0
  294. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/socket_common.rs +0 -0
  295. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/spawn_coordinator.rs +0 -0
  296. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/spawn_wait.rs +0 -0
  297. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/toy_three_party.rs +0 -0
  298. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/trace_propagation.rs +0 -0
  299. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/linux.rs +0 -0
  300. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/macos.rs +0 -0
  301. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/mod.rs +0 -0
  302. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/broker/verify_pid/windows.rs +0 -0
  303. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/brokered_backend_ui.rs +0 -0
  304. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_list.rs +0 -0
  305. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_prune_confirm.rs +0 -0
  306. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_prune_dryrun.rs +0 -0
  307. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_uninstall.rs +0 -0
  308. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/cleanup/cleanup_verify_artifacts.rs +0 -0
  309. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/cleanup/common.rs +0 -0
  310. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/cleanup/main.rs +0 -0
  311. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/common/mitm_stdin.rs +0 -0
  312. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/common/mod.rs +0 -0
  313. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/containment_test.rs +0 -0
  314. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_autostart_test.rs +0 -0
  315. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_backlog_accumulation_test.rs +0 -0
  316. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_cross_process_pty_attach_test.rs +0 -0
  317. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_fast_ctrl_c_handoff_test.rs +0 -0
  318. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/compiler_wrap_seam_test.rs +0 -0
  319. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/env_replace_test.rs +0 -0
  320. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/main.rs +0 -0
  321. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/more_tests.rs +0 -0
  322. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_integration/stdout_seam_test.rs +0 -0
  323. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_non_tty_attach_test.rs +0 -0
  324. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_pipe_session_attach_test.rs +0 -0
  325. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_pty_session_attach_test.rs +0 -0
  326. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_resize_rpc_test.rs +0 -0
  327. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_runpm_save_resurrect.rs +0 -0
  328. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_runpm_service_stubs.rs +0 -0
  329. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_sessions_bulk_ops_test.rs +0 -0
  330. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_sessions_log_test.rs +0 -0
  331. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_tee_ring_test.rs +0 -0
  332. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_termination_outcome_test.rs +0 -0
  333. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_tree_kill_test.rs +0 -0
  334. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/daemon_tui_repaint_test.rs +0 -0
  335. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/fs_adversarial_test.rs +0 -0
  336. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/interactive_pty_session_test.rs +0 -0
  337. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/maintenance/main.rs +0 -0
  338. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/maintenance/release_handles_unix.rs +0 -0
  339. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/maintenance/release_handles_windows.rs +0 -0
  340. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/originator_test.rs +0 -0
  341. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/pty_conhost_job_test.rs +0 -0
  342. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/pty_master_public_api_test.rs +0 -0
  343. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/pty_mitm_paste_test.rs +0 -0
  344. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/pty_mitm_stdin_test.rs +0 -0
  345. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/runpm_boot_autostart_fixtures.rs +0 -0
  346. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/runpm_toml_config.rs +0 -0
  347. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/cross_user_release_handles.rs +0 -0
  348. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/cve_dbus_2014_3639.rs +0 -0
  349. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/cve_dbus_2023_34969.rs +0 -0
  350. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/cve_sccache_2023_1521.rs +0 -0
  351. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/deferred_runtime_surfaces.rs +0 -0
  352. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/dependency_surface.rs +0 -0
  353. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/fuzz_campaign_signoff.rs +0 -0
  354. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/main.rs +0 -0
  355. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/manifest_tamper_detection.rs +0 -0
  356. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/no_network_dependencies.rs +0 -0
  357. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/pipe_name_validation.rs +0 -0
  358. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/pipe_squatting.rs +0 -0
  359. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/security_audit_workflow.rs +0 -0
  360. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/security_fuzz_workflow.rs +0 -0
  361. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/service_name_validation.rs +0 -0
  362. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/wanted_version_shell_injection.rs +0 -0
  363. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/security/wanted_version_traversal.rs +0 -0
  364. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/spawn_test.rs +0 -0
  365. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/terminal_graphics_capabilities_test.rs +0 -0
  366. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/ui/brokered_backend_state_in_bind.rs +0 -0
  367. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process/tests/ui/brokered_backend_state_in_bind.stderr +0 -0
  368. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/containment.rs +0 -0
  369. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/daemon_client.rs +0 -0
  370. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/debug_traces.rs +0 -0
  371. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/helpers.rs +0 -0
  372. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/idle_detector.rs +0 -0
  373. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/lib.rs +0 -0
  374. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/metrics.rs +0 -0
  375. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/originator.rs +0 -0
  376. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/pid_tracking.rs +0 -0
  377. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/priority.rs +0 -0
  378. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/process.rs +0 -0
  379. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/process_tree.rs +0 -0
  380. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/pty_buffer.rs +0 -0
  381. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/pty_process.rs +0 -0
  382. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/public_symbols.rs +0 -0
  383. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/py_native_process.rs +0 -0
  384. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/registry.rs +0 -0
  385. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/signal_bool.rs +0 -0
  386. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/terminal_input.rs +0 -0
  387. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/control_churn.rs +0 -0
  388. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/expect_match.rs +0 -0
  389. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/idle_detector.rs +0 -0
  390. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/mod.rs +0 -0
  391. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/parse_command.rs +0 -0
  392. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/process_tree.rs +0 -0
  393. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/pty_buffer.rs +0 -0
  394. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/pty_process.rs +0 -0
  395. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/registry.rs +0 -0
  396. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/signal_bool.rs +0 -0
  397. {running_process-4.6.0 → running_process-4.6.2}/crates/running-process-py/src/tests/terminal_input.rs +0 -0
  398. {running_process-4.6.0 → running_process-4.6.2}/crates/test-watchdog/Cargo.toml +0 -0
  399. {running_process-4.6.0 → running_process-4.6.2}/crates/test-watchdog/src/lib.rs +0 -0
  400. {running_process-4.6.0 → running_process-4.6.2}/crates/test-watchdog/tests/hang_dump.rs +0 -0
  401. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/assets/example.txt +0 -0
  402. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/cli.py +0 -0
  403. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/command_render.py +0 -0
  404. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/compat.py +0 -0
  405. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/console_encoding.py +0 -0
  406. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/daemon.py +0 -0
  407. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/dashboard.py +0 -0
  408. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/exit_status.py +0 -0
  409. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/expect.py +0 -0
  410. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/interrupt_handler.py +0 -0
  411. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/launch.py +0 -0
  412. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/line_iterator.py +0 -0
  413. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/output_formatter.py +0 -0
  414. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/priority.py +0 -0
  415. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/process_utils.py +0 -0
  416. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/processor_cli.py +0 -0
  417. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/__init__.py +0 -0
  418. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_command.py +0 -0
  419. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_console_io.py +0 -0
  420. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_errors.py +0 -0
  421. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_idle_helpers.py +0 -0
  422. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_idle_state.py +0 -0
  423. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_interactive.py +0 -0
  424. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_process_helpers.py +0 -0
  425. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_pseudo_terminal.py +0 -0
  426. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_pty_expect.py +0 -0
  427. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_pty_idle_waiter.py +0 -0
  428. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_pty_input_relay.py +0 -0
  429. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_pty_reader.py +0 -0
  430. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_pty_wait_for.py +0 -0
  431. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_terminal_strip.py +0 -0
  432. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_types.py +0 -0
  433. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/pty/_wait_input.py +0 -0
  434. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/__init__.py +0 -0
  435. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/_classmethod_api.py +0 -0
  436. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/_core.py +0 -0
  437. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/_helpers.py +0 -0
  438. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/_iter.py +0 -0
  439. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/_subprocess.py +0 -0
  440. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/_types.py +0 -0
  441. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process/_wait_methods.py +0 -0
  442. {running_process-4.6.0 → running_process-4.6.2}/src/running_process/running_process_manager.py +0 -0
@@ -75,9 +75,9 @@ dependencies = [
75
75
 
76
76
  [[package]]
77
77
  name = "anyhow"
78
- version = "1.0.102"
78
+ version = "1.0.104"
79
79
  source = "registry+https://github.com/rust-lang/crates.io-index"
80
- checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
80
+ checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
81
81
 
82
82
  [[package]]
83
83
  name = "arrayref"
@@ -256,9 +256,9 @@ dependencies = [
256
256
 
257
257
  [[package]]
258
258
  name = "crossbeam-epoch"
259
- version = "0.9.18"
259
+ version = "0.9.20"
260
260
  source = "registry+https://github.com/rust-lang/crates.io-index"
261
- checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
261
+ checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
262
262
  dependencies = [
263
263
  "crossbeam-utils",
264
264
  ]
@@ -1351,7 +1351,7 @@ dependencies = [
1351
1351
 
1352
1352
  [[package]]
1353
1353
  name = "running-process"
1354
- version = "4.6.0"
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.0"
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.0"
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.0"
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.0"
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.0"
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.0"
1440
+ version = "4.6.2"
1440
1441
  dependencies = [
1441
1442
  "windows-sys 0.59.0",
1442
1443
  ]
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["crates/running-process", "crates/running-process-py", "crates/test-watchdog"]
4
4
 
5
5
  [workspace.package]
6
- version = "4.6.0"
6
+ version = "4.6.2"
7
7
  edition = "2021"
8
8
  rust-version = "1.85"
9
9
  license = "BSD-3-Clause"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: running_process
3
- Version: 4.6.0
3
+ Version: 4.6.2
4
4
  License-File: LICENSE
5
5
  Summary: A Rust-backed subprocess wrapper with split stdout/stderr streaming
6
6
  Home-Page: https://github.com/zackees/running-process
@@ -0,0 +1,16 @@
1
+ # running-process — crate source
2
+
3
+ Top-level modules of the published `running-process` crate. Feature gating is
4
+ described in the repo-root `CLAUDE.md` ("Rust workspace" section).
5
+
6
+ - `lib.rs` / `public_symbols.rs` — crate surface and re-exports
7
+ - `environment.rs` — user baseline environment (Windows `CreateEnvironmentBlock`, Unix snapshot)
8
+ - `spawn.rs`, `spawn_imp_unix.rs`, `spawn_imp_windows.rs` — process spawn implementations
9
+ - `process_tree.rs` — process-tree enumeration and tree kill
10
+ - `containment.rs` — Job Objects / process-group containment
11
+ - `console_detect.rs`, `terminal_graphics.rs`, `pty/` — console + PTY support
12
+ - `client/`, `daemon/`, `broker/`, `observer/` — IPC client, daemon runtime, broker tiers, observer sidecar
13
+ - `bin/` — `runpm`, `daemon`, `trampoline`, broker + cleanup binaries
14
+ - `boot_autostart/`, `maintenance/`, `cleanup/` — lifecycle helpers
15
+ - `originator.rs`, `runpm_config.rs`, `systemd_killmode.rs`, `unix.rs`, `windows.rs`, `helpers.rs`, `types.rs` — platform + config plumbing
16
+ - `test_support/`, `tests.rs`, `rust_debug.rs` — test-only support
@@ -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 >= MAX_INFLIGHT_HANDLERS {
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 ({MAX_INFLIGHT_HANDLERS}); dropping connection",
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 = handle_hello(&mut s, &loader);
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 handle_hello(&mut stream, &loader) {
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 handle_hello<S: std::io::Read + std::io::Write>(
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);
@@ -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, respond_to_handoff_offer, serve_handoff_offer, write_handoff_ack,
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
+ }
@@ -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
- handle_admin_connection(&mut stream, snapshot)
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
- handle_hello_connection_with_peer_policy(&mut stream, responder, peer, peer_policy)
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
- handle_hello_connection_with_peer_policy(
264
- &mut stream,
265
- handler.as_ref(),
266
- peer,
267
- peer_policy.as_ref(),
268
- )
269
- .map(|_| ())
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 _ = handle_hello_connection_with_peer_policy(
329
- &mut stream,
330
- responder,
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 {