aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@netfilter.org>2009-12-21 13:29:19 +0100
committerHarald Welte <laforge@netfilter.org>2009-12-21 13:33:10 +0100
commitade773f44193052ade3be70b794130dd6a39ee06 (patch)
tree1892ee16da974f03a5dbb260336d0b9435245c38
parentb8bfc567b7b8c705c1a2ec7654ce7184ab6c295f (diff)
handover: set old channel to INACTIVE state
After receiving the HANDOVER COMPLETE on the new channel, we mark the old channel as INACTIVE and try to release it ASAP.
-rw-r--r--openbsc/src/handover_logic.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/openbsc/src/handover_logic.c b/openbsc/src/handover_logic.c
index 3007d258..94d3d0d1 100644
--- a/openbsc/src/handover_logic.c
+++ b/openbsc/src/handover_logic.c
@@ -212,13 +212,16 @@ static int ho_gsm48_ho_compl(struct gsm_lchan *new_lchan)
}
bsc_del_timer(&ho->T3103);
- llist_del(&ho->list);
/* update lchan pointer of transaction */
trans_lchan_change(ho->old_lchan, new_lchan);
+ ho->old_lchan->state = LCHAN_S_INACTIVE;
+ lchan_auto_release(ho->old_lchan);
+
/* do something to re-route the actual speech frames ! */
+ llist_del(&ho->list);
talloc_free(ho);
return 0;