diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 5d3e29ca3a87038e77d85c09a243d07df75a3424..43146fdc29248963bce1065b53a2939a17fd93a3 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -1521,6 +1521,8 @@ void output_thread(void* arg) sem_trywait_block(&sbbs->outbuf.highwater_sem,startup->outbuf_drain_timeout); else sem_trywait(&sbbs->outbuf.highwater_sem); + /* We (potentially) blocked, so get fill level again */ + avail=RingBufFull(&sbbs->outbuf); } /* @@ -1529,7 +1531,6 @@ void output_thread(void* arg) * passed or we've hit highwater. Read ring buffer * into linear buffer. */ - avail=RingBufFull(&sbbs->outbuf); if(avail>sizeof(buf)) { lprintf(LOG_WARNING,"!%s: Insufficient linear output buffer (%lu > %lu)" ,node, avail, sizeof(buf));