lib/nfs/FileReader: update "state" in OnNfsError()

Clean up the "state" to indicate that there is no longer any
asynchronous operation.  Fixes another NFS-related crash due to
cleanup of a non-existing asynchronous operation.
This commit is contained in:
Max Kellermann 2014-11-25 13:03:09 +01:00
parent 3cef348f30
commit 40dd968f13
1 changed files with 24 additions and 0 deletions

View File

@ -246,6 +246,30 @@ NfsFileReader::OnNfsCallback(unsigned status, void *data)
void
NfsFileReader::OnNfsError(Error &&error)
{
switch (state) {
case State::INITIAL:
case State::DEFER:
case State::MOUNT:
case State::IDLE:
assert(false);
gcc_unreachable();
case State::OPEN:
connection->RemoveLease(*this);
state = State::INITIAL;
break;
case State::STAT:
connection->RemoveLease(*this);
connection->Close(fh);
state = State::INITIAL;
break;
case State::READ:
state = State::IDLE;
break;
}
OnNfsFileError(std::move(error));
}