From 8019107ebf1e5dd2d3201b96f95e67ed4009361a Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Fri, 3 Apr 2026 18:35:27 -0300 Subject: [PATCH] fix: remove last remaining block_in_place in TALK TO keyword This was the only block_in_place left causing the production panic during bot compilation. Replaced with std::thread::spawn + mpsc channel pattern. --- src/basic/keywords/universal_messaging.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/basic/keywords/universal_messaging.rs b/src/basic/keywords/universal_messaging.rs index f21d6a57..02ad2704 100644 --- a/src/basic/keywords/universal_messaging.rs +++ b/src/basic/keywords/universal_messaging.rs @@ -34,13 +34,13 @@ fn register_talk_to(state: Arc, user: UserSession, engine: &mut Engine let state_for_send = Arc::clone(&state_clone); let user_for_send = user.clone(); - tokio::task::block_in_place(|| { + let (tx, rx) = std::sync::mpsc::channel(); + std::thread::spawn(move || { let rt = tokio::runtime::Builder::new_current_thread() .enable_all() - .build() - .ok(); - match rt { - Some(rt) => rt.block_on(async { + .build(); + let result: Result<(), String> = match rt { + Ok(rt) => rt.block_on(async { send_message_to_recipient( state_for_send, &user_for_send, @@ -48,11 +48,14 @@ fn register_talk_to(state: Arc, user: UserSession, engine: &mut Engine &message, ) .await + .map_err(|e| format!("{}", e)) }), - None => Err("Failed to create runtime".into()), - } - }) - .map_err(|e| format!("Failed to send message: {}", e))?; + Err(_) => Err("Failed to create runtime".into()), + }; + let _ = tx.send(result); + }); + rx.recv().unwrap_or(Err("Failed to receive result".into())) + .map_err(|e| format!("Failed to send message: {}", e))?; Ok(Dynamic::UNIT) },