gresolv: Make sure we will not receive DNS data after closing
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Thu, 18 Oct 2012 11:35:17 +0000 (14:35 +0300)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Fri, 19 Oct 2012 07:26:22 +0000 (10:26 +0300)
We must close the channel when freeing the resolver object,
otherwise we might still receive data when the resolver has been
freed already.

Fixes BMC#25757

gweb/gresolv.c

index da09b2b..cf7f2e9 100644 (file)
@@ -554,8 +554,10 @@ static void free_nameserver(struct resolv_nameserver *nameserver)
        if (nameserver->udp_watch > 0)
                g_source_remove(nameserver->udp_watch);
 
-       if (nameserver->udp_channel != NULL)
+       if (nameserver->udp_channel != NULL) {
+               g_io_channel_shutdown(nameserver->udp_channel, TRUE, NULL);
                g_io_channel_unref(nameserver->udp_channel);
+       }
 
        g_free(nameserver->address);
        g_free(nameserver);