[subscr] Remove the struct gsm_bts pointer from subscriber
The pointer was initially added to support to open a lchan
by using the gsm_subscriber structure. We would have restored
the struct gsm_bts from the db when loading the subscriber.
Instead we will dynamically resolve the gsm_bts and might end
up paging multiple bts in the same (stored/old) location area
until it answers.
diff --git a/include/openbsc/gsm_subscriber.h b/include/openbsc/gsm_subscriber.h
index 1798dc6..99148b5 100644
--- a/include/openbsc/gsm_subscriber.h
+++ b/include/openbsc/gsm_subscriber.h
@@ -23,7 +23,6 @@
/* for internal management */
int use_count;
struct llist_head entry;
- struct gsm_bts *current_bts;
};
enum gsm_subscriber_field {
diff --git a/src/gsm_subscriber.c b/src/gsm_subscriber.c
index 4888506..3f608ec 100644
--- a/src/gsm_subscriber.c
+++ b/src/gsm_subscriber.c
@@ -96,17 +96,13 @@
/* FIXME: Migrate pending requests from one BSC to another */
switch (reason) {
case GSM_SUBSCRIBER_UPDATE_ATTACHED:
- s->current_bts = bts;
/* Indicate "attached to LAC" */
s->lac = bts->location_area_code;
break;
case GSM_SUBSCRIBER_UPDATE_DETACHED:
- /* Only detach if we are currently attached to this bts */
- if (bts == s->current_bts) {
- s->current_bts = NULL;
- /* Indicate "detached" */
+ /* Only detach if we are currently in this area */
+ if (bts->location_area_code == s->lac)
s->lac = 0;
- }
break;
default: