rspro_client_fsm: Disconnect if Connect{Client,Bank}Res != ok

Change-Id: Id199f9c4cb4c86fd0dba8939334ac69878f4a3f5
diff --git a/src/rspro_client_fsm.c b/src/rspro_client_fsm.c
index f21dfd2..75d0f80 100644
--- a/src/rspro_client_fsm.c
+++ b/src/rspro_client_fsm.c
@@ -223,14 +223,25 @@
 
 static void srvc_st_established(struct osmo_fsm_inst *fi, uint32_t event, void *data)
 {
+	struct rspro_server_conn *srvc = (struct rspro_server_conn *) fi->priv;
+	RsproPDU_t *pdu = NULL;
+	e_ResultCode res;
+
 	switch (event) {
 	case SRVC_E_TCP_DOWN:
 	case SRVC_E_KA_TIMEOUT:
 		osmo_fsm_inst_state_chg(fi, SRVC_ST_REESTABLISH, T2_RECONNECT, 2);
 		break;
 	case SRVC_E_CLIENT_CONN_RES:
-		/* somehow notify the main code? */
-		osmo_fsm_inst_state_chg(fi, SRVC_ST_CONNECTED, 0, 0);
+		pdu = data;
+		res = rspro_get_result(pdu);
+		if (res != ResultCode_ok) {
+			ipa_client_conn_close(srvc->conn);
+			osmo_fsm_inst_dispatch(fi, SRVC_E_TCP_DOWN, NULL);
+		} else {
+			/* somehow notify the main code? */
+			osmo_fsm_inst_state_chg(fi, SRVC_ST_CONNECTED, 0, 0);
+		}
 		break;
 	default:
 		OSMO_ASSERT(0);