--- a/sc2src/alsadirect.cpp
+++ b/sc2src/alsadirect.cpp
@@ -744,7 +744,10 @@
         
         if (tsk->m_bytes == 0 || tsk->m_chans == 0 || tsk->m_bits == 0) {
             LOGDEB("Zero buf\n");
-            continue;
+            if (tsk->m_halt)
+                goto put_audio_message;
+            else
+                continue;
         }
 
         // 1st time: init. We don't want to do this before we have data.
@@ -766,6 +769,7 @@
             convert_to16le(tsk);
         }
 
+put_audio_message:
         // Send data on its way
         if (!alsaqueue.put(tsk)) {
             LOGERR("alsaEater: queue put failed\n");