aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/handover_logic.c
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-06-30 13:04:13 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-06-30 13:04:13 +0800
commitd9c9f07c2c05ac84b53c70c983fc5ffe468dc9ca (patch)
treee481ccbea25b0b53124fd06be585987dbba77cf7 /openbsc/src/handover_logic.c
parentf2553a6c3a9c677f71fd7f123c54d80a915f7a0a (diff)
handover: lchan_free will only free the local resources.
lchan_free only free's the local resource of the BSC but does not release the channel at the BTS. Use lchan_release to properly release the channel. This code assumes that the timeout happens after a CHAN ACT ACK/NACK otherwise we have some problems. The comment indicates that this is the case.
Diffstat (limited to 'openbsc/src/handover_logic.c')
-rw-r--r--openbsc/src/handover_logic.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/openbsc/src/handover_logic.c b/openbsc/src/handover_logic.c
index cdb066447..92580bfb7 100644
--- a/openbsc/src/handover_logic.c
+++ b/openbsc/src/handover_logic.c
@@ -182,7 +182,9 @@ static void ho_T3103_cb(void *_ho)
DEBUGP(DHO, "HO T3103 expired\n");
counter_inc(net->stats.handover.timeout);
- lchan_free(ho->new_lchan);
+ ho->new_lchan->conn->ho_lchan = NULL;
+ ho->new_lchan->conn = NULL;
+ lchan_release(ho->new_lchan, 0, 1);
llist_del(&ho->list);
talloc_free(ho);
}