dnsproxy: Fix __connman_dnsproxy_add_listener() error handling
authorPatrik Flykt <patrik.flykt@linux.intel.com>
Mon, 5 Sep 2011 06:19:19 +0000 (08:19 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 12 Sep 2011 09:40:48 +0000 (11:40 +0200)
Do not add dnsproxy listener data to hash table if we fail to
create either a udp or tcp listener.

src/dnsproxy.c

index d9e291c..a56e312 100644 (file)
@@ -1522,11 +1522,16 @@ int __connman_dnsproxy_add_listener(const char *interface)
        ifdata->udp_listener_watch = 0;
        ifdata->tcp_listener_channel = NULL;
        ifdata->tcp_listener_watch = 0;
-       g_hash_table_insert(listener_table, ifdata->ifname, ifdata);
 
        err = create_listener(interface);
-       if (err < 0)
+       if (err < 0) {
+               connman_error("Couldn't create listener for %s err %d",
+                               interface, err);
+               g_free(ifdata->ifname);
+               g_free(ifdata);
                return err;
+       }
+       g_hash_table_insert(listener_table, ifdata->ifname, ifdata);
        return 0;
 }