diff options
author | Holger Freyther <zecke@selfish.org> | 2009-01-01 02:59:03 +0000 |
---|---|---|
committer | Holger Freyther <zecke@selfish.org> | 2009-01-01 02:59:03 +0000 |
commit | 3eaa792b21d19dd1cd512b87a391826cf1f3fef4 (patch) | |
tree | 690b722a213f87bbe484fd2b326c8a5aed591e1f /src/gsm_04_08.c | |
parent | d125250ae24c80436f1406fe31d6b850dfbb7531 (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.c | 2 |
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) |