inet: Cleanup the router solicitations handler properly
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Mon, 31 Oct 2011 15:38:15 +0000 (17:38 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 7 Nov 2011 11:35:09 +0000 (12:35 +0100)
src/inet.c

index c941718..a2a66da 100644 (file)
@@ -1417,6 +1417,7 @@ struct rs_cb_data {
        __connman_inet_rs_cb_t callback;
        struct sockaddr_in6 addr;
        guint rs_timeout;
+       guint watch_id;
        void *user_data;
 };
 
@@ -1439,6 +1440,9 @@ static void rs_cleanup(struct rs_cb_data *data)
        if (data->rs_timeout > 0)
                g_source_remove(data->rs_timeout);
 
+       if (data->watch_id > 0)
+               g_source_remove(data->watch_id);
+
        g_free(data);
 }
 
@@ -1708,7 +1712,7 @@ int __connman_inet_ipv6_send_rs(int index, int timeout,
        g_io_channel_set_encoding(data->channel, NULL, NULL);
        g_io_channel_set_buffered(data->channel, FALSE);
 
-       g_io_add_watch(data->channel,
+       data->watch_id = g_io_add_watch(data->channel,
                        G_IO_IN | G_IO_NVAL | G_IO_HUP | G_IO_ERR,
                        icmpv6_event, data);