aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-06-12 08:20:36 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-01-12 03:28:14 +0100
commit13e923c754c66127e0a11b3d18bac93129021654 (patch)
tree8be44e566c24f175014c4e597e2b3e14af8fd035
parent1fc370ad42fbd382d1898b8617c03d604cd8915a (diff)
Do not perform assignment, if the new channel equals the current one
This can happen, if a TCH/H was requested, but because it is not available, a TCH/F is allocated. If the old channel was TCH/F already, it makes no sense to assign it.
-rw-r--r--src/libbsc/bsc_api.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libbsc/bsc_api.c b/src/libbsc/bsc_api.c
index 20a296893..dfe4f94f8 100644
--- a/src/libbsc/bsc_api.c
+++ b/src/libbsc/bsc_api.c
@@ -221,6 +221,13 @@ static int handle_new_assignment(struct gsm_subscriber_connection *conn, int cha
return -1;
}
+ /* check if we are on TCH/F and requested TCH/H, but got TCH/F */
+ if (conn->lchan->type == new_lchan->type) {
+ lchan_free(new_lchan);
+ LOGP(DMSC, LOGL_NOTICE, "Not assign to equal channel rate.\n");
+ return -1;
+ }
+
/* copy old data to the new channel */
memcpy(&new_lchan->encr, &conn->lchan->encr, sizeof(new_lchan->encr));
new_lchan->ms_power = conn->lchan->ms_power;