aboutsummaryrefslogtreecommitdiffstats
path: root/src/gsm_04_08.c
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2009-01-01 02:59:03 +0000
committerHolger Freyther <zecke@selfish.org>2009-01-01 02:59:03 +0000
commit3eaa792b21d19dd1cd512b87a391826cf1f3fef4 (patch)
tree690b722a213f87bbe484fd2b326c8a5aed591e1f /src/gsm_04_08.c
parentd125250ae24c80436f1406fe31d6b850dfbb7531 (diff)
Speculative fix for not sending LOCATION UPDATING REJECT
As reported by the operator the rejecting didn't work after the first fix (wrong logic/missing negation). The hypothesis is that that the lchan was released before the reject timeout was fired. Fix it by getting a reference on the lchan when allocating a logical operation and release the reference when the operation is finished or timed out.
Diffstat (limited to 'src/gsm_04_08.c')
-rw-r--r--src/gsm_04_08.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index a772f33b4..fc7457943 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -93,6 +93,7 @@ static void release_loc_updating_req(struct gsm_lchan *lchan)
del_timer(&lchan->loc_operation->updating_timer);
free(lchan->loc_operation);
lchan->loc_operation = 0;
+ put_lchan(lchan);
}
static void allocate_loc_updating_req(struct gsm_lchan *lchan)
@@ -102,6 +103,7 @@ static void allocate_loc_updating_req(struct gsm_lchan *lchan)
lchan->loc_operation = (struct gsm_loc_updating_operation *)
malloc(sizeof(*lchan->loc_operation));
memset(lchan->loc_operation, 0, sizeof(*lchan->loc_operation));
+ use_lchan(lchan);
}
static void parse_lai(struct gsm_lai *lai, const struct gsm48_loc_area_id *lai48)