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.
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);
/* 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;
}
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));
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,
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_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);
}
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);
}
}
}