Hello Denis, On 12/17/2011 02:54 AM, Denis Kenzior wrote: > I went ahead and applied this patch, but modified it heavily afterward. > Can you please check the changes starting at 7f18695f and make sure > that things are still working as intended and I didn't screw anything up. Everything works as expected, thanks for the help! I just wonder now about the case when the SPN update would happen while the NETWORK_REGISTRATION_FLAG_READING_SPN is on. diff --git a/src/network.c b/src/network.c struct ofono_netreg { [...] char *spn; + unsigned int spn_update; }; [...] +static gboolean spn_update_cb(gpointer userdata) +{ + struct ofono_netreg *netreg = userdata; + + if (netreg->flags & NETWORK_REGISTRATION_FLAG_READING_SPN) + return TRUE; + + netreg->spn_update = 0; + + sim_spn_changed(0, netreg); + + return FALSE; +} + static void sim_spn_changed(int id, void *userdata) { struct ofono_netreg *netreg = userdata; gboolean had_spn; - if (netreg->flags & NETWORK_REGISTRATION_FLAG_READING_SPN) + if (netreg->flags & NETWORK_REGISTRATION_FLAG_READING_SPN) { + if (netreg->spn_update == 0) + netreg->spn_update = g_timeout_add(1000, + spn_update_cb, netreg); + return; + } [...] What do you think? I will be sending SPN changes for src/gprs.c soon. Regards, Oleg -- Intel Finland Oy Registered Address: PL 281, 00181 Helsinki Business Identity Code: 0357606 - 4 Domiciled in Helsinki