* exit program if we cannot set up the serial port
* leave the program if ctrl+c is pressed three times even without logoff from BTS

diff --git a/src/bs11_config.c b/src/bs11_config.c
index 9acf301..77e409f 100644
--- a/src/bs11_config.c
+++ b/src/bs11_config.c
@@ -266,19 +266,12 @@
 {
 	int rc = 0;
 
-	printf("PHASE: %u STATE: ", state & 0xf);
-
 	switch (state) {
 	case BS11_STATE_WARM_UP:
-		sleep(5);
-		break;
 	case BS11_STATE_LOAD_SMU_SAFETY:
-		sleep(5);
-		break;
 	case BS11_STATE_LOAD_SMU_INTENDED:
-		sleep(5);
-		break;
 	case BS11_STATE_LOAD_MBCCU:
+		sleep(5);
 		break;
 	case BS11_STATE_SOFTWARE_RQD:
 		bs11cfg_state = STATE_SWLOAD;
@@ -314,7 +307,7 @@
 	case BS11_STATE_NORMAL:
 		if (have_trx1)
 			create_trx1_objects(g_bts);
-		return 1;
+		//return 1;
 	default:
 		sleep(5);
 		break;
@@ -464,13 +457,18 @@
 	}
 }
 
+static int num_sigint;
+
 static void signal_handler(int signal)
 {
 	fprintf(stdout, "signal %u received\n", signal);
 
 	switch (signal) {
 	case SIGINT:
+		num_sigint++;
 		abis_nm_bs11_factory_logon(g_bts, 0);
+		if (num_sigint >= 3)
+			exit(0);
 		break;
 	}
 }
@@ -489,7 +487,11 @@
 	}
 	g_bts = &gsmnet->bts[0];
 
-	rs232_setup(serial_port, delay_ms);
+	rc = rs232_setup(serial_port, delay_ms);
+	if (rc < 0) {
+		fprintf(stderr, "Problem setting up serial port\n");
+		exit(1);
+	}
 
 	signal(SIGINT, &signal_handler);