Diff between 65214a997ed4453fc99fb39b59aaddc8f758e0b2 and ab0ff42d4396fbdeacf5a6adbfaa839e6025d93f

Changed Files

File Additions Deletions Status
src/shared/mgmt.c +8 -3 modified

Full Patch

diff --git a/src/shared/mgmt.c b/src/shared/mgmt.c
index d45c1c4..2e6bb83 100644
--- a/src/shared/mgmt.c
+++ b/src/shared/mgmt.c
@@ -222,6 +222,9 @@ static void request_complete(struct mgmt *mgmt, uint8_t status,
 
 	destroy_request(request, NULL);
 
+	if (mgmt->destroyed)
+		return;
+
 	wakeup_writer(mgmt);
 }
 
@@ -259,9 +262,6 @@ static void process_notify(struct mgmt *mgmt, uint16_t event, uint16_t index,
 	g_list_free(mgmt->notify_destroyed);
 
 	mgmt->notify_destroyed = NULL;
-
-	if (mgmt->destroyed)
-		g_free(mgmt);
 }
 
 static void read_watch_destroy(gpointer user_data)
@@ -333,6 +333,11 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
 		break;
 	}
 
+	if (mgmt->destroyed) {
+		g_free(mgmt);
+		return FALSE;
+	}
+
 	return TRUE;
 }