diff --git a/src/AudioTools/Communication/HTTP/URLStreamBufferedT.h b/src/AudioTools/Communication/HTTP/URLStreamBufferedT.h index 4eb6c5a88..e50219753 100644 --- a/src/AudioTools/Communication/HTTP/URLStreamBufferedT.h +++ b/src/AudioTools/Communication/HTTP/URLStreamBufferedT.h @@ -124,6 +124,8 @@ class BufferedTaskStream : public AudioStream { if (*(this->p_stream) && available_to_write > 0) { size_t to_read = min(available_to_write, (size_t)512); uint8_t buffer[to_read]; + while (this->p_stream->available() == 0) + delay(3); // to avoid task WDT invoked while blocking read size_t avail_read = this->p_stream->readBytes((uint8_t *)buffer, to_read); size_t written = this->buffers.writeArray(buffer, avail_read); diff --git a/src/AudioTools/Concurrency/RTOS/SynchronizedNBufferRTOS.h b/src/AudioTools/Concurrency/RTOS/SynchronizedNBufferRTOS.h index 561f94a42..9bfea9546 100644 --- a/src/AudioTools/Concurrency/RTOS/SynchronizedNBufferRTOS.h +++ b/src/AudioTools/Concurrency/RTOS/SynchronizedNBufferRTOS.h @@ -2,6 +2,8 @@ #include "AudioToolsConfig.h" #include "QueueRTOS.h" +#define DEFAULT_BUFFER_WAIT 1000 + namespace audio_tools { /** @@ -14,7 +16,7 @@ namespace audio_tools { template class SynchronizedNBufferRTOST : public NBuffer { public: - SynchronizedNBufferRTOST(int bufferSize, int bufferCount, int writeMaxWait=portMAX_DELAY, int readMaxWait=portMAX_DELAY) { + SynchronizedNBufferRTOST(int bufferSize, int bufferCount, int writeMaxWait=DEFAULT_BUFFER_WAIT, int readMaxWait=DEFAULT_BUFFER_WAIT) { TRACED(); read_max_wait = readMaxWait; write_max_wait = writeMaxWait; @@ -77,8 +79,8 @@ class SynchronizedNBufferRTOST : public NBuffer { } protected: - QueueRTOS*> available_buffers{0,portMAX_DELAY,0}; - QueueRTOS*> filled_buffers{0,portMAX_DELAY,0}; + QueueRTOS*> available_buffers{0,DEFAULT_BUFFER_WAIT,0}; + QueueRTOS*> filled_buffers{0,DEFAULT_BUFFER_WAIT,0}; size_t max_size; size_t read_max_wait, write_max_wait; int buffer_size = 0, buffer_count = 0;