diff --git a/src/router.rs b/src/router.rs index bb994d2..b142324 100644 --- a/src/router.rs +++ b/src/router.rs @@ -405,7 +405,7 @@ async fn deliver_one( )], ) .await; - + // If result is still empty, immediately request supervisor job.result if job.result.is_empty() { let sup = cache @@ -566,6 +566,28 @@ async fn deliver_one( ) .await; } + + // Mark processed and stop polling for this message + let _ = service_poll + .update_message_status( + context_id, + caller_id, + id, + MessageStatus::Processed, + ) + .await; + let _ = service_poll + .append_message_logs( + context_id, + caller_id, + id, + vec![format!( + "Terminal job {} detected; stopping transport polling", + job_id + )], + ) + .await; + break; } // Not terminal yet -> request supervisor job.status as before _ => { @@ -673,6 +695,28 @@ async fn deliver_one( }); } } + + // Mark processed and stop polling for this message + let _ = service_poll + .update_message_status( + context_id, + caller_id, + id, + MessageStatus::Processed, + ) + .await; + let _ = service_poll + .append_message_logs( + context_id, + caller_id, + id, + vec![format!( + "Terminal job {} detected from supervisor status; stopping transport polling", + job_id + )], + ) + .await; + break; } } }