diff options
Diffstat (limited to 'src/libbsc/chan_alloc.c')
-rw-r--r-- | src/libbsc/chan_alloc.c | 8 |
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; } |