Hi Jukka,

> diff --git a/src/gprs.c b/src/gprs.c
> index 58166f8..7d188a3 100644
> --- a/src/gprs.c
> +++ b/src/gprs.c
> @@ -43,6 +43,7 @@
>  #include "common.h"
>  #include "storage.h"
>  #include "idmap.h"
> +#include "gprs-provision.h"
>  
>  #define GPRS_FLAG_ATTACHING 0x1
>  #define GPRS_FLAG_RECHECK 0x2
> @@ -2454,13 +2455,15 @@ remove:
>               storage_sync(imsi, SETTINGS_STORE, gprs->settings);
>  }
>  
> -void ofono_gprs_register(struct ofono_gprs *gprs)
> +static void ofono_gprs_finish_register(struct ofono_gprs *gprs)
>  {
>       DBusConnection *conn = ofono_dbus_get_connection();
>       struct ofono_modem *modem = __ofono_atom_get_modem(gprs->atom);
>       const char *path = __ofono_atom_get_path(gprs->atom);
>       struct ofono_atom *netreg_atom;
> -     struct ofono_atom *sim_atom;
> +
> +     if (gprs->contexts == NULL) /* Automatic provisioning failed */
> +             add_context(gprs, NULL, OFONO_GPRS_CONTEXT_TYPE_INTERNET);

so I see a potential race here between the UI trying to provision and us
trying to provision.

We don't wanna end up with duplicated contexts here. Any ideas on how we
could prevent that nicely? Or should we just fail any attempts to create
new contexts if provisioning is still ongoing?

Regards

Marcel


_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to