[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r13548 - gnunet/src/vpn
From: |
gnunet |
Subject: |
[GNUnet-SVN] r13548 - gnunet/src/vpn |
Date: |
Thu, 4 Nov 2010 18:26:56 +0100 |
Author: toelke
Date: 2010-11-04 18:26:56 +0100 (Thu, 04 Nov 2010)
New Revision: 13548
Modified:
gnunet/src/vpn/gnunet-daemon-vpn.c
gnunet/src/vpn/gnunet-service-dns.c
Log:
Only start the hijack if the vpn is running
Modified: gnunet/src/vpn/gnunet-daemon-vpn.c
===================================================================
--- gnunet/src/vpn/gnunet-daemon-vpn.c 2010-11-04 11:46:13 UTC (rev 13547)
+++ gnunet/src/vpn/gnunet-daemon-vpn.c 2010-11-04 17:26:56 UTC (rev 13548)
@@ -136,9 +136,9 @@
{
restart_hijack = 0;
/*
- * The message is just a header
+ * The message is just a header
*/
- GNUNET_assert(sizeof(struct GNUNET_MessageHeader) >= size);
+ GNUNET_assert(sizeof(struct GNUNET_MessageHeader) <= size);
struct GNUNET_MessageHeader* hdr = buf;
len = sizeof(struct GNUNET_MessageHeader);
hdr->size = htons(len);
@@ -161,10 +161,14 @@
/*
* Check whether more data is to be sent
*/
- if (head != NULL || restart_hijack == 1)
+ if (head != NULL)
{
GNUNET_CLIENT_notify_transmit_ready(dns_connection,
ntohs(head->pkt.hdr.size), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES,
&send_query, NULL);
}
+ else if (restart_hijack == 1)
+ {
+ GNUNET_CLIENT_notify_transmit_ready(dns_connection, sizeof(struct
GNUNET_MessageHeader), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query,
NULL);
+ }
return len;
}
@@ -212,6 +216,12 @@
GNUNET_DISK_pipe_close_end(helper_out, GNUNET_DISK_PIPE_END_WRITE);
GNUNET_DISK_pipe_close_end(helper_in, GNUNET_DISK_PIPE_END_READ);
+ /* Tell the dns-service to rehijack the dns-port
+ * The routing-table gets flushed if an interface disappears.
+ */
+ restart_hijack = 1;
+ GNUNET_CLIENT_notify_transmit_ready(dns_connection, sizeof(struct
GNUNET_MessageHeader), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query,
NULL);
+
GNUNET_SCHEDULER_add_read_file (sched, GNUNET_TIME_UNIT_FOREVER_REL,
fh_from_helper, &helper_read, NULL);
}
@@ -226,12 +236,6 @@
GNUNET_OS_process_close (helper_proc);
helper_proc = NULL;
- /* Tell the dns-service to rehijack the dns-port
- * The routing-table gets flushed if an interface disappears.
- */
- restart_hijack = 1;
- GNUNET_CLIENT_notify_transmit_ready(dns_connection, sizeof(struct
GNUNET_MessageHeader), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query,
NULL);
-
GNUNET_DISK_pipe_close(helper_in);
GNUNET_DISK_pipe_close(helper_out);
@@ -435,6 +439,10 @@
GNUNET_YES,
&send_query,
NULL);
+ else if (restart_hijack == 1)
+ {
+ GNUNET_CLIENT_notify_transmit_ready(dns_connection, sizeof(struct
GNUNET_MessageHeader), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query,
NULL);
+ }
}
/**
Modified: gnunet/src/vpn/gnunet-service-dns.c
===================================================================
--- gnunet/src/vpn/gnunet-service-dns.c 2010-11-04 11:46:13 UTC (rev 13547)
+++ gnunet/src/vpn/gnunet-service-dns.c 2010-11-04 17:26:56 UTC (rev 13548)
@@ -107,17 +107,17 @@
* Hijack all outgoing DNS-Traffic but for traffic leaving "our" port.
*/
static void
-hijack(unsigned short port) {
+hijack(void* cls, const struct GNUNET_SCHEDULER_TaskContext* tc) {
char port_s[6];
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Hijacking, port is %d\n", port);
- snprintf(port_s, 6, "%d", port);
+ 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,
- NULL));
+ NULL,
+ "gnunet-helper-hijack-dns",
+ "gnunet-hijack-dns",
+ port_s,
+ NULL));
}
/**
@@ -277,7 +277,9 @@
struct GNUNET_SERVER_Client *client,
const struct GNUNET_MessageHeader *message) {
unhijack(dnsoutport);
- hijack(dnsoutport);
+ GNUNET_SCHEDULER_add_delayed(sched, GNUNET_TIME_UNIT_SECONDS, hijack,
NULL);
+
+ GNUNET_SERVER_receive_done(client, GNUNET_OK);
}
/**
@@ -536,8 +538,6 @@
dnsoutport = htons(addr.sin_port);
- hijack(htons(addr.sin_port));
-
GNUNET_SCHEDULER_add_now (sched, publish_name, NULL);
GNUNET_SCHEDULER_add_read_net(sched, GNUNET_TIME_UNIT_FOREVER_REL, dnsout,
&read_response, NULL);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r13548 - gnunet/src/vpn,
gnunet <=