summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-12-02 15:43:08 -0600
committerDenis Kenzior <denkenz@gmail.com>2009-12-02 19:10:07 -0600
commitb787745b009e500dcd94cd718021b0fea4cdfa11 (patch)
treea93ac1c6eda98d9d337d63a68fe16bc6e25112ac
parent6266e3f67963088b27c1ed31292278dbc4ebf9d1 (diff)
downloadofono-b787745b009e500dcd94cd718021b0fea4cdfa11.tar.bz2
Fix: unregister modem when unregistering driver
-rw-r--r--src/modem.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/modem.c b/src/modem.c
index ec723e50..012c249f 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -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);
+ }
}