mirror of
https://github.com/zellij-org/zellij.git
synced 2026-09-22 00:02:38 +00:00
apply_pipe_message_to_plugin sends UnblockCliPipes on every success path, including the path for old plugins that do not export `pipe`, but not when the call into the plugin fails. When a plugin traps while handling a pipe message, both call sites in wasm_bridge only log and call handle_plugin_crash, which paints a loading-indication error on the pane and does not unload the plugin. The (plugin_id, client_id) entry therefore stays in PendingPipes and the `zellij pipe` client blocks until the plugin is unloaded or the session ends. Move the body to apply_pipe_message_to_plugin_inner and have the wrapper release the pipe on any error before re-returning it, so neither call site can forget. Adds a regression test driving a fixture-plugin branch that panics while handling a pipe, asserting UnblockCliPipeInput is emitted at crash time rather than at teardown.