diff --git a/main/manager.c b/main/manager.c
index 91fd022a36590895a60213c0c673a6bbf8235f9c..4508b33255d43d7edd986de9b6a7f2067bb31c3c 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -761,9 +761,8 @@ static void destroy_session(struct mansession *s)
 	AST_LIST_LOCK(&sessions);
 	AST_LIST_REMOVE(&sessions, s, list);
 	ast_atomic_fetchadd_int(&num_sessions, -1);
-	AST_LIST_UNLOCK(&sessions);
-
 	free_session(s);
+	AST_LIST_UNLOCK(&sessions);
 }
 
 const char *astman_get_header(const struct message *m, char *var)