Hello Marcel,

On Tue, 2011-01-11 at 22:51 -0800, ext Marcel Holtmann wrote:
> >  
> > -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?

Code continues there with:
        if (!g_dbus_register_interface(conn, path,
                                        OFONO_CONNECTION_MANAGER_INTERFACE,
                                        manager_methods, manager_signals, NULL,
                                        gprs, NULL)) {
                ofono_error("Could not create %s interface",
                                OFONO_CONNECTION_MANAGER_INTERFACE);

                return;
        }

        ofono_modem_add_interface(modem,
                                OFONO_CONNECTION_MANAGER_INTERFACE);

Patch rearranges the initial context creation and interface
registration, so there is no DBUS interface for UI to use until
provisioning is ready. Or have misunderstood something?

--Jukka


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

Reply via email to