diff --git a/src/core/agent.c b/src/core/agent.c
index fc6797b530a85e26fcd2869554a20e559e1890b3..42b334bd4e5006b38dd7e0ce9971bd406648fbe0 100644
--- a/src/core/agent.c
+++ b/src/core/agent.c
@@ -1993,15 +1993,10 @@ static void agent_disable_local_cntlr(struct agent *a)
 {
 	char pid[8] = {0};
 
-	/** TODO: use pidfile */
-	chrCmd(pid, sizeof(pid), "pidof mapcontroller");
-	if (strlen(pid)) {
-		set_value_by_string("mapcontroller", "controller",
-				"enabled", "0",	UCI_TYPE_STRING);
-		trace("found pid %s of mapcontroller, sending SIGHUP\n",
-				pid);
-		kill(atoi(pid), SIGHUP);
-	}
+	set_value_by_string("mapcontroller", "controller",
+			"enabled", "0",	UCI_TYPE_STRING);
+	trace("Reloading mapcontroller\n");
+	uci_reload_services("mapcontroller");
 }
 
 static void ethport_event_handler(void *agent, struct blob_attr *msg)