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:
parent
d125250ae2
commit
3eaa792b21
|
@ -93,6 +93,7 @@ static void release_loc_updating_req(struct gsm_lchan *lchan)
|
||||||
del_timer(&lchan->loc_operation->updating_timer);
|
del_timer(&lchan->loc_operation->updating_timer);
|
||||||
free(lchan->loc_operation);
|
free(lchan->loc_operation);
|
||||||
lchan->loc_operation = 0;
|
lchan->loc_operation = 0;
|
||||||
|
put_lchan(lchan);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void allocate_loc_updating_req(struct gsm_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 *)
|
lchan->loc_operation = (struct gsm_loc_updating_operation *)
|
||||||
malloc(sizeof(*lchan->loc_operation));
|
malloc(sizeof(*lchan->loc_operation));
|
||||||
memset(lchan->loc_operation, 0, 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)
|
static void parse_lai(struct gsm_lai *lai, const struct gsm48_loc_area_id *lai48)
|
||||||
|
|
Loading…
Reference in New Issue