Fix: unregister modem when unregistering driver
authorDenis Kenzior <denkenz@gmail.com>
Wed, 2 Dec 2009 21:43:08 +0000 (15:43 -0600)
committerDenis Kenzior <denkenz@gmail.com>
Thu, 3 Dec 2009 01:10:07 +0000 (19:10 -0600)
src/modem.c

index ec723e5..012c249 100644 (file)
@@ -1219,7 +1219,19 @@ int ofono_modem_driver_register(const struct ofono_modem_driver *d)
 
 void ofono_modem_driver_unregister(const struct ofono_modem_driver *d)
 {
+       GSList *l;
+       struct ofono_modem *modem;
+
        DBG("driver: %p, name: %s", d, d->name);
 
        g_driver_list = g_slist_remove(g_driver_list, (void *)d);
+
+       for (l = g_modem_list; l; l = l->next) {
+               modem = l->data;
+
+               if (modem->driver != d)
+                       continue;
+
+               modem_unregister(modem);
+       }
 }