gnunet-svn
[Top][All Lists]
Advanced

[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);




reply via email to

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