From: Philipp Tölke Date: Thu, 24 Feb 2011 11:45:11 +0000 (+0000) Subject: fix mem-leaks and other nasty stuff X-Git-Tag: initial-import-from-subversion-38251~19060 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=06721018e48be5f2249c2a0ca1eed80387af9209;p=oweals%2Fgnunet.git fix mem-leaks and other nasty stuff --- diff --git a/src/vpn/gnunet-daemon-vpn.c b/src/vpn/gnunet-daemon-vpn.c index 32bbb4cdb..fa5b1058f 100644 --- a/src/vpn/gnunet-daemon-vpn.c +++ b/src/vpn/gnunet-daemon-vpn.c @@ -470,8 +470,8 @@ run (void *cls, restart_hijack = 0; hashmap = GNUNET_CONTAINER_multihashmap_create(65536); udp_connections = GNUNET_CONTAINER_multihashmap_create(65536); - GNUNET_SCHEDULER_add_now (connect_to_service_dns, NULL); - GNUNET_SCHEDULER_add_now (start_helper_and_schedule, NULL); + GNUNET_SCHEDULER_TaskIdentifier conn_task = GNUNET_SCHEDULER_add_now (connect_to_service_dns, NULL); + GNUNET_SCHEDULER_add_after (conn_task, start_helper_and_schedule, NULL); GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_FOREVER_REL, &cleanup, cls); } diff --git a/src/vpn/gnunet-service-dns.c b/src/vpn/gnunet-service-dns.c index 66c072c37..ab13f1ef8 100644 --- a/src/vpn/gnunet-service-dns.c +++ b/src/vpn/gnunet-service-dns.c @@ -102,51 +102,60 @@ struct receive_dht_cls { * Hijack all outgoing DNS-Traffic but for traffic leaving "our" port. */ static void -hijack(void* cls, const struct GNUNET_SCHEDULER_TaskContext* tc) { - char port_s[6]; - char* virt_dns; - - if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string(cfg, "vpn", "VIRTDNS", &virt_dns)) - { - GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "No entry 'VIRTDNS' in configuration!\n"); - exit(1); - } +hijack (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + char port_s[6]; + char *virt_dns; + struct GNUNET_OS_Process *proc; + + if (GNUNET_SYSERR == + GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "VIRTDNS", + &virt_dns)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "No entry 'VIRTDNS' in configuration!\n"); + exit (1); + } - GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Hijacking, port is %d\n", dnsoutport); - snprintf(port_s, 6, "%d", dnsoutport); - GNUNET_OS_process_close (GNUNET_OS_start_process(NULL, - NULL, - "gnunet-helper-hijack-dns", - "gnunet-hijack-dns", - port_s, - virt_dns, - NULL)); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Hijacking, port is %d\n", dnsoutport); + snprintf (port_s, 6, "%d", dnsoutport); + if (NULL != (proc = GNUNET_OS_start_process (NULL, + NULL, + "gnunet-helper-hijack-dns", + "gnunet-hijack-dns", + port_s, virt_dns, NULL))) + GNUNET_OS_process_close (proc); + GNUNET_free (virt_dns); } /** * Delete the hijacking-routes */ static void -unhijack(unsigned short port) { - char port_s[6]; - char* virt_dns; - - if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string(cfg, "vpn", "VIRTDNS", &virt_dns)) - { - GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "No entry 'VIRTDNS' in configuration!\n"); - exit(1); - } +unhijack (unsigned short port) +{ + char port_s[6]; + char *virt_dns; + struct GNUNET_OS_Process *proc; + + if (GNUNET_SYSERR == + GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "VIRTDNS", + &virt_dns)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "No entry 'VIRTDNS' in configuration!\n"); + exit (1); + } - GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "unHijacking, port is %d\n", port); - snprintf(port_s, 6, "%d", port); - GNUNET_OS_start_process(NULL, - NULL, - "gnunet-helper-hijack-dns", - "gnunet-hijack-dns", - "-d", - port_s, - virt_dns, - NULL); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "unHijacking, port is %d\n", port); + snprintf (port_s, 6, "%d", port); + if (NULL != (proc = GNUNET_OS_start_process (NULL, + NULL, + "gnunet-helper-hijack-dns", + "gnunet-hijack-dns", + "-d", port_s, virt_dns, NULL))) + GNUNET_OS_process_close (proc); + GNUNET_free (virt_dns); } /**