aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2009-06-04 14:27:39 +0000
committerHolger Freyther <zecke@selfish.org>2009-06-04 14:27:39 +0000
commitc3d4b2d441814a37736791911fce1f4e3725ac35 (patch)
tree9d51a1abe05214d8cea6b663100595e572f8d78a
parent862cfff60944771cf72e03f0b4e0ad075817fcd4 (diff)
[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.
-rw-r--r--include/openbsc/gsm_subscriber.h1
-rw-r--r--src/gsm_subscriber.c8
2 files changed, 2 insertions, 7 deletions
diff --git a/include/openbsc/gsm_subscriber.h b/include/openbsc/gsm_subscriber.h
index 1798dc651..99148b5df 100644
--- a/include/openbsc/gsm_subscriber.h
+++ b/include/openbsc/gsm_subscriber.h
@@ -23,7 +23,6 @@ struct gsm_subscriber {
/* 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 488850637..3f608ec30 100644
--- a/src/gsm_subscriber.c
+++ b/src/gsm_subscriber.c
@@ -96,17 +96,13 @@ int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts, int reason)
/* 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: