summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/smsutil.c11
-rw-r--r--src/smsutil.h2
2 files changed, 11 insertions, 2 deletions
diff --git a/src/smsutil.c b/src/smsutil.c
index 07ff903a..863b68f5 100644
--- a/src/smsutil.c
+++ b/src/smsutil.c
@@ -3297,7 +3297,7 @@ static void cbs_assembly_expire(struct cbs_assembly *assembly,
}
}
-void cbs_assembly_location_changed(struct cbs_assembly *assembly,
+void cbs_assembly_location_changed(struct cbs_assembly *assembly, gboolean plmn,
gboolean lac, gboolean ci)
{
/* Location Area wide (in GSM) (which means that a CBS message with the
@@ -3314,6 +3314,15 @@ void cbs_assembly_location_changed(struct cbs_assembly *assembly,
* one cell only.
*/
+ if (plmn) {
+ lac = TRUE;
+ g_slist_free(assembly->recv_plmn);
+ assembly->recv_plmn = NULL;
+
+ cbs_assembly_expire(assembly, cbs_compare_node_by_gs,
+ GUINT_TO_POINTER(CBS_GEO_SCOPE_PLMN));
+ }
+
if (lac) {
/* If LAC changed, then cell id has changed */
ci = TRUE;
diff --git a/src/smsutil.h b/src/smsutil.h
index a60b95d2..2e176d11 100644
--- a/src/smsutil.h
+++ b/src/smsutil.h
@@ -488,7 +488,7 @@ struct cbs_assembly *cbs_assembly_new();
void cbs_assembly_free(struct cbs_assembly *assembly);
GSList *cbs_assembly_add_page(struct cbs_assembly *assembly,
const struct cbs *cbs);
-void cbs_assembly_location_changed(struct cbs_assembly *assembly,
+void cbs_assembly_location_changed(struct cbs_assembly *assembly, gboolean plmn,
gboolean lac, gboolean ci);
char *cbs_topic_ranges_to_string(GSList *ranges);