aboutsummaryrefslogtreecommitdiffstats
path: root/src/gsm_subscriber.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsm_subscriber.c')
-rw-r--r--src/gsm_subscriber.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/gsm_subscriber.c b/src/gsm_subscriber.c
index d4dfea49a..e3cd5eb25 100644
--- a/src/gsm_subscriber.c
+++ b/src/gsm_subscriber.c
@@ -90,8 +90,23 @@ struct gsm_subscriber *subscr_get_by_extension(const char *ext)
return db_get_subscriber(GSM_SUBSCRIBER_EXTENSION, ext);
}
-int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts)
+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;
+ 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;
+ break;
+ default:
+ fprintf(stderr, "subscr_update with unknown reason: %d\n",
+ reason);
+ break;
+ };
return db_sync_subscriber(s);
}