aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/handover_logic.c
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 /openbsc/src/handover_logic.c
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.
Diffstat (limited to 'openbsc/src/handover_logic.c')
-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;