summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-05-21 00:05:09 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-10-12 08:30:22 +0200
commitdf82b7237521c4177e703db38795ad8bcde233ed (patch)
treedf76e04a51444e45b6cb9199d2d2111206ad8c4f
parent08542564feb5a2f3a8ce3a3fa7b56494bddaecc6 (diff)
bsc: Drop the BTS instead of exiting the application
When the BTS reboots it might not want to accept our BTS Attr, do not leave the bsc_msc_ip/bsc_nitb but simply drop the BTS connection. Manually cherry-picked from: 54e6c8b3400b376ed36fe84f28f7930d2d9ff24b
-rw-r--r--openbsc/src/libbsc/bsc_init.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index 28f32cca6..529ffc040 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -47,16 +47,21 @@ static int oml_msg_nack(struct nm_nack_signal_data *nack)
if (nack->mt == NM_MT_SET_BTS_ATTR_NACK) {
- LOGP(DNM, LOGL_FATAL, "Failed to set BTS attributes. That is fatal. "
+ LOGP(DNM, LOGL_ERROR, "Failed to set BTS attributes. That is fatal. "
"Was the bts type and frequency properly specified?\n");
- exit(-1);
+ goto drop_bts;
} else {
LOGP(DNM, LOGL_ERROR, "Got a NACK going to drop the OML links.\n");
- for (i = 0; i < bsc_gsmnet->num_bts; ++i) {
- struct gsm_bts *bts = gsm_bts_num(bsc_gsmnet, i);
- if (is_ipaccess_bts(bts))
- ipaccess_drop_oml(bts);
- }
+ goto drop_bts;
+ }
+
+ return 0;
+
+drop_bts:
+ for (i = 0; i < bsc_gsmnet->num_bts; ++i) {
+ struct gsm_bts *bts = gsm_bts_num(bsc_gsmnet, i);
+ if (is_ipaccess_bts(bts))
+ ipaccess_drop_oml(bts);
}
return 0;