for w32 port
[oweals/gnunet.git] / src / vpn / gnunet-daemon-vpn.c
index dbce0a86a8b98bec5a4cc9ca923bb2bdd9d050bc..8790ff7f34d8ec244c800f59867d7b28beb4f900 100644 (file)
@@ -73,7 +73,7 @@ static void cleanup(void* cls, const struct GNUNET_SCHEDULER_TaskContext* tskctx
   GNUNET_OS_process_wait(mycls.helper_pid);
   if (mycls.dns_connection != NULL)
     {
-      GNUNET_CLIENT_disconnect (mycls.dns_connection);
+      GNUNET_CLIENT_disconnect (mycls.dns_connection, GNUNET_NO);
       mycls.dns_connection = NULL;
     }
 }
@@ -156,6 +156,7 @@ static void helper_write(void* cls, const struct GNUNET_SCHEDULER_TaskContext* t
        size_t pkt_len = sizeof(struct GNUNET_MessageHeader) + sizeof(struct pkt_tun) + net_len;
 
        struct ip_udp_dns* pkt = alloca(pkt_len);
+       memset(pkt, 0, pkt_len);
 
        pkt->shdr.size = htons(pkt_len);
        pkt->shdr.type = htons(GNUNET_MESSAGE_TYPE_VPN_HELPER);
@@ -254,7 +255,8 @@ static void message_token(void *cls, void *client, const struct GNUNET_MessageHe
 
                        GNUNET_CONTAINER_DLL_insert_after(mycls.head, mycls.tail, mycls.tail, query);
 
-                       /* struct GNUNET_CLIENT_TransmitHandle* th = */ GNUNET_CLIENT_notify_transmit_ready(mycls.dns_connection, len, GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query, NULL);
+                       if (mycls.dns_connection != NULL)
+                         /* struct GNUNET_CLIENT_TransmitHandle* th = */ GNUNET_CLIENT_notify_transmit_ready(mycls.dns_connection, len, GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query, NULL);
                }
        }
 
@@ -266,12 +268,14 @@ dns_answer_handler(void* cls, const struct GNUNET_MessageHeader *msg);
 static void 
 reconnect_to_service_dns (void *cls,
                          const struct GNUNET_SCHEDULER_TaskContext *tc) {
-  if (0 != (tskctx->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
+  if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
     return;
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Connecting\n");
   GNUNET_assert (mycls.dns_connection == NULL);
   mycls.dns_connection = GNUNET_CLIENT_connect (mycls.sched, "dns", mycls.cfg); 
   GNUNET_CLIENT_receive(mycls.dns_connection, &dns_answer_handler, NULL, GNUNET_TIME_UNIT_FOREVER_REL);
+  if (mycls.head != NULL)
+    /* struct GNUNET_CLIENT_TransmitHandle* th = */ GNUNET_CLIENT_notify_transmit_ready(mycls.dns_connection, ntohs(mycls.head->pkt.hdr.size), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query, NULL);
 }
 
 static void