diff --git a/NEWS b/NEWS index dd8479049..ac1429960 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.23.13 (not yet released) +* input + - curl: fix busy loop after connection failed ver 0.23.12 (2023/01/17) * input diff --git a/src/input/AsyncInputStream.cxx b/src/input/AsyncInputStream.cxx index 38ae566ee..4b21f3391 100644 --- a/src/input/AsyncInputStream.cxx +++ b/src/input/AsyncInputStream.cxx @@ -101,9 +101,17 @@ AsyncInputStream::Seek(std::unique_lock &lock, assert(IsReady()); assert(seek_state == SeekState::NONE); - if (new_offset == offset) - /* no-op */ + if (new_offset == offset) { + /* no-op, but if the stream is not open anymore (maybe + because it has failed), nothing can be read, so we + should check for errors here instead of pretending + everything's fine */ + + if (!open) + Check(); + return; + } if (!IsSeekable()) throw std::runtime_error("Not seekable");