ctrl: Improve error handling if controlif setup fails
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
index 1a24a24..6bab461 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
@@ -304,9 +304,17 @@
 	return 0;
 }
 
-void bsc_ctrl_cmds_install()
+int bsc_ctrl_cmds_install()
 {
-	ctrl_cmd_install(CTRL_NODE_NET, &cmd_net_loc);
-	ctrl_cmd_install(CTRL_NODE_NET, &cmd_net_rf_lock);
-	ctrl_cmd_install(CTRL_NODE_TRX, &cmd_trx_rf_lock);
+	int rc;
+
+	rc = ctrl_cmd_install(CTRL_NODE_NET, &cmd_net_loc);
+	if (rc)
+		goto end;
+	rc = ctrl_cmd_install(CTRL_NODE_NET, &cmd_net_rf_lock);
+	if (rc)
+		goto end;
+	rc = ctrl_cmd_install(CTRL_NODE_TRX, &cmd_trx_rf_lock);
+end:
+	return rc;
 }
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_main.c b/openbsc/src/osmo-bsc/osmo_bsc_main.c
index 0f70ceb..bba6bc0 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_main.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_main.c
@@ -213,8 +213,16 @@
 	bsc_api_init(bsc_gsmnet, osmo_bsc_api());
 
 	bsc_gsmnet->ctrl = controlif_setup(bsc_gsmnet, 4249);
+	if (!bsc_gsmnet) {
+		fprintf(stderr, "Failed to init the control interface. Exiting.\n");
+		exit(1);
+	}
 
-	bsc_ctrl_cmds_install();
+	rc = bsc_ctrl_cmds_install();
+	if (rc < 0) {
+		fprintf(stderr, "Failed to install control commands. Exiting.\n");
+		exit(1);
+	}
 
 	data = bsc_gsmnet->bsc_data;
 	if (rf_ctrl)