lib/nfs/FileReader: set state=IDLE before invoking callback

Fixes assertion failure if the callback fails.
This commit is contained in:
Max Kellermann
2020-04-23 14:51:09 +02:00
parent 0a92fbc18e
commit 159389164a
2 changed files with 6 additions and 2 deletions

View File

@@ -186,6 +186,8 @@ NfsFileReader::OpenCallback(nfsfh *_fh) noexcept
fh = _fh;
state = State::IDLE;
try {
connection->Stat(fh, *this);
} catch (...) {
@@ -204,13 +206,13 @@ NfsFileReader::StatCallback(const struct stat *st) noexcept
assert(fh != nullptr);
assert(st != nullptr);
state = State::IDLE;
if (!S_ISREG(st->st_mode)) {
OnNfsFileError(std::make_exception_ptr(std::runtime_error("Not a regular file")));
return;
}
state = State::IDLE;
OnNfsFileOpen(st->st_size);
}