gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r16983 - gnunet/src/vpn


From: gnunet
Subject: [GNUnet-SVN] r16983 - gnunet/src/vpn
Date: Wed, 21 Sep 2011 10:06:55 +0200

Author: toelke
Date: 2011-09-21 10:06:55 +0200 (Wed, 21 Sep 2011)
New Revision: 16983

Modified:
   gnunet/src/vpn/gnunet-service-dns.c
Log:
do not notify more than one transmit at a time

Modified: gnunet/src/vpn/gnunet-service-dns.c
===================================================================
--- gnunet/src/vpn/gnunet-service-dns.c 2011-09-21 07:58:16 UTC (rev 16982)
+++ gnunet/src/vpn/gnunet-service-dns.c 2011-09-21 08:06:55 UTC (rev 16983)
@@ -43,6 +43,8 @@
 
 struct GNUNET_MESH_Handle *mesh_handle;
 
+struct GNUNET_CONNECTION_TransmitHandle *server_notify;
+
 /**
  * The UDP-Socket through which DNS-Resolves will be sent if they are not to be
  * sent through gnunet. The port of this socket will not be hijacked.
@@ -193,6 +195,7 @@
 static size_t
 send_answer (void *cls, size_t size, void *buf)
 {
+  server_notify = NULL;
   struct answer_packet_list *query = head;
   size_t len = ntohs (query->pkt.hdr.size);
 
@@ -206,9 +209,9 @@
 
   /* When more data is to be sent, reschedule */
   if (head != NULL)
-    GNUNET_SERVER_notify_transmit_ready (cls, ntohs (head->pkt.hdr.size),
-                                         GNUNET_TIME_UNIT_FOREVER_REL,
-                                         &send_answer, cls);
+    server_notify = GNUNET_SERVER_notify_transmit_ready (cls, ntohs 
(head->pkt.hdr.size),
+                                                         
GNUNET_TIME_UNIT_FOREVER_REL,
+                                                         &send_answer, cls);
 
   return len;
 }
@@ -231,6 +234,8 @@
   struct GNUNET_MESH_Tunnel **tunnel = (struct GNUNET_MESH_Tunnel **) (sz + 1);
   struct dns_pkt *dns = (struct dns_pkt *) (tunnel + 1);
 
+  GNUNET_MESH_tunnel_set_data (*tunnel, NULL);
+
   hdr->type = htons (GNUNET_MESSAGE_TYPE_VPN_REMOTE_ANSWER_DNS);
   hdr->size = htons (*sz + sizeof (struct GNUNET_MessageHeader));
 
@@ -530,10 +535,11 @@
 
   GNUNET_CONTAINER_DLL_insert_after (head, tail, tail, answer);
 
-  GNUNET_SERVER_notify_transmit_ready (query_states[dns->s.id].client, len,
-                                       GNUNET_TIME_UNIT_FOREVER_REL,
-                                       &send_answer,
-                                       query_states[dns->s.id].client);
+  if (server_notify == NULL)
+    server_notify = GNUNET_SERVER_notify_transmit_ready 
(query_states[dns->s.id].client, len,
+                                                         
GNUNET_TIME_UNIT_FOREVER_REL,
+                                                         &send_answer,
+                                                         
query_states[dns->s.id].client);
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Sent answer of length %d on to client, addroffset = %d\n", len,
@@ -622,9 +628,10 @@
 
   GNUNET_CONTAINER_DLL_insert_after (head, tail, tail, answer);
 
-  GNUNET_SERVER_notify_transmit_ready (query_states[id].client, len,
-                                       GNUNET_TIME_UNIT_FOREVER_REL,
-                                       &send_answer, query_states[id].client);
+  if (server_notify == NULL)
+    server_notify = GNUNET_SERVER_notify_transmit_ready 
(query_states[id].client, len,
+                                                         
GNUNET_TIME_UNIT_FOREVER_REL,
+                                                         &send_answer, 
query_states[id].client);
 }
 
 /**
@@ -731,9 +738,10 @@
 
   GNUNET_CONTAINER_DLL_insert_after (head, tail, tail, answer);
 
-  GNUNET_SERVER_notify_transmit_ready (query_states[id].client, len,
-                                       GNUNET_TIME_UNIT_FOREVER_REL,
-                                       &send_answer, query_states[id].client);
+  if (server_notify == NULL)
+    server_notify = GNUNET_SERVER_notify_transmit_ready 
(query_states[id].client, len,
+                                                         
GNUNET_TIME_UNIT_FOREVER_REL,
+                                                         &send_answer, 
query_states[id].client);
 
   GNUNET_DHT_get_stop (handle);
 }
@@ -1088,10 +1096,11 @@
 
         GNUNET_CONTAINER_DLL_insert_after (head, tail, tail, answer);
 
-        GNUNET_SERVER_notify_transmit_ready (query_states[dns->s.id].client,
-                                             len, GNUNET_TIME_UNIT_FOREVER_REL,
-                                             &send_answer,
-                                             query_states[dns->s.id].client);
+        if (server_notify == NULL)
+          server_notify = GNUNET_SERVER_notify_transmit_ready 
(query_states[dns->s.id].client,
+                                                               len, 
GNUNET_TIME_UNIT_FOREVER_REL,
+                                                               &send_answer,
+                                                               
query_states[dns->s.id].client);
       }
     }
   }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]