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.
This commit is contained in:
Holger Freyther 2009-01-01 02:59:03 +00:00
parent d125250ae2
commit 3eaa792b21
1 changed files with 2 additions and 0 deletions

View File

@ -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)