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.
diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index a772f33..fc74579 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -93,6 +93,7 @@
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 @@
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)