aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/nfs/Connection.cxx6
-rw-r--r--src/lib/nfs/Connection.hxx5
2 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/nfs/Connection.cxx b/src/lib/nfs/Connection.cxx
index 56abf7129..4b6a6fc78 100644
--- a/src/lib/nfs/Connection.cxx
+++ b/src/lib/nfs/Connection.cxx
@@ -374,6 +374,11 @@ NfsConnection::DestroyContext()
assert(GetEventLoop().IsInside());
assert(context != nullptr);
+#ifndef NDEBUG
+ assert(!in_destroy);
+ in_destroy = true;
+#endif
+
/* cancel pending DeferredMonitor that was scheduled to notify
new leases */
DeferredMonitor::Cancel();
@@ -558,6 +563,7 @@ NfsConnection::MountInternal(Error &error)
#ifndef NDEBUG
in_service = false;
in_event = false;
+ in_destroy = false;
#endif
if (nfs_mount_async(context, server.c_str(), export_name.c_str(),
diff --git a/src/lib/nfs/Connection.hxx b/src/lib/nfs/Connection.hxx
index e47ba404b..310ccdc44 100644
--- a/src/lib/nfs/Connection.hxx
+++ b/src/lib/nfs/Connection.hxx
@@ -129,6 +129,11 @@ class NfsConnection : SocketMonitor, DeferredMonitor {
* event updates are omitted.
*/
bool in_event;
+
+ /**
+ * True when DestroyContext() is being called.
+ */
+ bool in_destroy;
#endif
bool mount_finished;