gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r15873 - gnunet/src/nat


From: gnunet
Subject: [GNUnet-SVN] r15873 - gnunet/src/nat
Date: Thu, 7 Jul 2011 16:15:31 +0200

Author: grothoff
Date: 2011-07-07 16:15:31 +0200 (Thu, 07 Jul 2011)
New Revision: 15873

Modified:
   gnunet/src/nat/nat_test.c
Log:
udp fixes

Modified: gnunet/src/nat/nat_test.c
===================================================================
--- gnunet/src/nat/nat_test.c   2011-07-07 14:15:20 UTC (rev 15872)
+++ gnunet/src/nat/nat_test.c   2011-07-07 14:15:31 UTC (rev 15873)
@@ -196,6 +196,44 @@
  * @param tc scheduler context
  */
 static void
+do_udp_read (void *cls,
+            const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  struct GNUNET_NAT_Test *tst = cls;
+  uint16_t data;
+
+  tst->ltask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
+                                             tst->lsock,
+                                             &do_udp_read,
+                                             tst);
+  if ( (NULL != tc->write_ready) &&
+       (GNUNET_NETWORK_fdset_isset (tc->read_ready, 
+                                   tst->lsock)) &&
+       (sizeof (data) ==
+       GNUNET_NETWORK_socket_recv (tst->lsock,
+                                   &data,
+                                   sizeof (data))) )
+    {
+      if (data == tst->data)
+       tst->report (tst->report_cls, GNUNET_OK);
+      else
+       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                   "Received data mismatches expected value\n");
+    }
+  else
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Failed to receive data from inbound connection\n");
+}
+
+
+/**
+ * Activity on our incoming socket.  Read data from the
+ * incoming connection.
+ *
+ * @param cls the 'struct NatActivity'
+ * @param tc scheduler context
+ */
+static void
 do_read (void *cls,
         const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
@@ -375,7 +413,9 @@
   else
     {
       ret->lsock = GNUNET_NETWORK_socket_create (AF_INET, 
-                                                (is_tcp==GNUNET_YES) ? 
SOCK_STREAM : SOCK_DGRAM, 0);
+                                                (is_tcp==GNUNET_YES) 
+                                                ? SOCK_STREAM 
+                                                : SOCK_DGRAM, 0);
       if ( (ret->lsock == NULL) ||
           (GNUNET_OK != GNUNET_NETWORK_socket_bind (ret->lsock,
                                                     (const struct sockaddr*) 
&sa,
@@ -388,12 +428,22 @@
          GNUNET_free (ret);
          return NULL;
        }
-      GNUNET_break (GNUNET_OK ==
-                   GNUNET_NETWORK_socket_listen (ret->lsock, 5));
-      ret->ltask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
-                                                 ret->lsock,
-                                                 &do_accept,
-                                                 ret);
+      if (GNUNET_YES == is_tcp)
+       {
+         GNUNET_break (GNUNET_OK ==
+                       GNUNET_NETWORK_socket_listen (ret->lsock, 5));
+         ret->ltask = GNUNET_SCHEDULER_add_read_net 
(GNUNET_TIME_UNIT_FOREVER_REL,
+                                                     ret->lsock,
+                                                     &do_accept,
+                                                     ret);
+       }
+      else
+       {
+         ret->ltask = GNUNET_SCHEDULER_add_read_net 
(GNUNET_TIME_UNIT_FOREVER_REL,
+                                                    ret->lsock,
+                                                    &do_udp_read,
+                                                    ret);
+       }
       ret->nat = GNUNET_NAT_register (cfg, is_tcp,
                                      adv_port, 
                                      1, addrs, addrlens,




reply via email to

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