aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc/chan_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libbsc/chan_alloc.c')
-rw-r--r--src/libbsc/chan_alloc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c
index e72ab3ca2..966896878 100644
--- a/src/libbsc/chan_alloc.c
+++ b/src/libbsc/chan_alloc.c
@@ -448,7 +448,9 @@ void lchan_free(struct gsm_lchan *lchan)
lchan->type = GSM_LCHAN_NONE;
- if (lchan->conn) {
+ if (lchan->conn
+ && !(lchan->ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH
+ && lchan->ts->dyn.pchan_is != lchan->ts->dyn.pchan_want)) {
struct lchan_signal_data sig;
/* We might kill an active channel... */
@@ -479,7 +481,9 @@ void lchan_free(struct gsm_lchan *lchan)
sig.bts = lchan->ts->trx->bts;
osmo_signal_dispatch(SS_CHALLOC, S_CHALLOC_FREED, &sig);
- if (lchan->conn) {
+ if (lchan->conn
+ && !(lchan->ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH
+ && lchan->ts->dyn.pchan_is != lchan->ts->dyn.pchan_want)) {
LOGP(DRLL, LOGL_ERROR, "the subscriber connection should be gone.\n");
lchan->conn = NULL;
}