diff --git a/src/agent.c b/src/agent.c
index 551a4c8b6f2fb6dffa333fd426a82791b73b660e..fce4daf4a8a9f33578a4d236fdf3e78ed62e2fab 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -5570,12 +5570,13 @@ static int agent_subscribe_for_cmdus(struct agent *a)
 			    agent_map_sub_cb,
 			    agent_map_del_cb,
 			    &a->subscriber);
-	if (ret) {
+	if (!ret) {
+		a->subscribed = true;
+	} else {
 		trace("mapagent: Failed to 'register' with %s (err = %s)\n",
 		      map_plugin, ubus_strerror(ret));
 	}
 
-	a->subscribed = true;
 	return ret;
 }