Update D-Bus filter registration and removal
authorMarcel Holtmann <marcel@holtmann.org>
Sun, 28 Dec 2008 07:58:37 +0000 (08:58 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Sun, 28 Dec 2008 07:58:37 +0000 (08:58 +0100)
plugins/dhclient.c

index 2cb4930..04787d1 100644 (file)
@@ -313,9 +313,11 @@ static DBusHandlerResult dhclient_filter(DBusConnection *conn,
 
 static DBusConnection *connection;
 
+static const char *dhclient_rule = "path=" DHCLIENT_PATH
+                                               ",interface=" DHCLIENT_INTF;
+
 static int dhclient_init(void)
 {
-       gchar *filter;
        int err;
 
        connection = connman_dbus_get_connection();
@@ -325,12 +327,7 @@ static int dhclient_init(void)
 
        dbus_connection_add_filter(connection, dhclient_filter, NULL, NULL);
 
-       filter = g_strdup_printf("interface=%s,path=%s",
-                                               DHCLIENT_INTF, DHCLIENT_PATH);
-
-       dbus_bus_add_match(connection, filter, NULL);
-
-       g_free(filter);
+       dbus_bus_add_match(connection, dhclient_rule, NULL);
 
        err = connman_driver_register(&dhclient_driver);
        if (err < 0) {
@@ -358,6 +355,10 @@ static void dhclient_exit(void)
 
        connman_driver_unregister(&dhclient_driver);
 
+       dbus_bus_remove_match(connection, dhclient_rule, NULL);
+
+       dbus_connection_remove_filter(connection, dhclient_filter, NULL);
+
        dbus_connection_unref(connection);
 }