proper shutdown
[oweals/gnunet.git] / src / util / test_connection.c
index 770b34e8ce08595c6f1bab4da0d269f7cba5a70c..71b37c8ac2a4a801abbb222074df0f898bf4de70 100644 (file)
@@ -4,7 +4,7 @@
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -40,33 +40,37 @@ static struct GNUNET_CONNECTION_Handle *lsock;
 
 static size_t sofar;
 
 
 static size_t sofar;
 
-static struct GNUNET_NETWORK_Descriptor *ls;
-
+static struct GNUNET_NETWORK_Handle *ls;
 
 
+static struct GNUNET_CONFIGURATION_Handle *cfg;
 
 /**
  * Create and initialize a listen socket for the server.
  *
  * @return -1 on error, otherwise the listen socket
  */
 
 /**
  * Create and initialize a listen socket for the server.
  *
  * @return -1 on error, otherwise the listen socket
  */
-static struct GNUNET_NETWORK_Descriptor *
+static struct GNUNET_NETWORK_Handle *
 open_listen_socket ()
 {
   const static int on = 1;
   struct sockaddr_in sa;
 open_listen_socket ()
 {
   const static int on = 1;
   struct sockaddr_in sa;
-  struct GNUNET_NETWORK_Descriptor *desc;
+  struct GNUNET_NETWORK_Handle *desc;
 
   memset (&sa, 0, sizeof (sa));
 
   memset (&sa, 0, sizeof (sa));
+#if HAVE_SOCKADDR_IN_SIN_LEN
+  sa.sin_len = sizeof (sa);
+#endif
   sa.sin_port = htons (PORT);
   sa.sin_family = AF_INET;
   sa.sin_port = htons (PORT);
   sa.sin_family = AF_INET;
-  desc = GNUNET_NETWORK_socket_socket (AF_INET, SOCK_STREAM, 0);
+  desc = GNUNET_NETWORK_socket_create (AF_INET, SOCK_STREAM, 0);
   GNUNET_assert (desc != NULL);
   GNUNET_assert (desc != NULL);
-  if (GNUNET_NETWORK_socket_setsockopt (desc, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) < 0)
+  if (GNUNET_NETWORK_socket_setsockopt
+      (desc, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) != GNUNET_OK)
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
                 "setsockopt");
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
                 "setsockopt");
-  GNUNET_assert (GNUNET_NETWORK_socket_bind (desc, 
-                                            (const struct sockaddr*) &sa,
-                                            sizeof (sa)) >= 0);
+  GNUNET_assert (GNUNET_NETWORK_socket_bind
+                 (desc, (const struct sockaddr *) &sa,
+                  sizeof (sa)) == GNUNET_OK);
   GNUNET_NETWORK_socket_listen (desc, 5);
   return desc;
 }
   GNUNET_NETWORK_socket_listen (desc, 5);
   return desc;
 }
@@ -91,10 +95,10 @@ receive_check (void *cls,
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receive needs more data\n");
 #endif
       GNUNET_CONNECTION_receive (asock,
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receive needs more data\n");
 #endif
       GNUNET_CONNECTION_receive (asock,
-                              1024,
-                              GNUNET_TIME_relative_multiply
-                              (GNUNET_TIME_UNIT_SECONDS, 5), &receive_check,
-                              cls);
+                                 1024,
+                                 GNUNET_TIME_relative_multiply
+                                 (GNUNET_TIME_UNIT_SECONDS, 5),
+                                 &receive_check, cls);
     }
   else
     {
     }
   else
     {
@@ -103,7 +107,7 @@ receive_check (void *cls,
                   "Receive closes accepted socket\n");
 #endif
       *ok = 0;
                   "Receive closes accepted socket\n");
 #endif
       *ok = 0;
-      GNUNET_CONNECTION_destroy (asock);
+      GNUNET_CONNECTION_destroy (asock, GNUNET_YES);
     }
 }
 
     }
 }
 
@@ -114,22 +118,22 @@ run_accept (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test accepts connection\n");
 #endif
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test accepts connection\n");
 #endif
-  asock = GNUNET_CONNECTION_create_from_accept (tc->sched,
-                                               NULL, NULL, ls, 1024);
+  asock = GNUNET_CONNECTION_create_from_accept (NULL, NULL, ls);
   GNUNET_assert (asock != NULL);
   GNUNET_assert (GNUNET_YES == GNUNET_CONNECTION_check (asock));
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test destroys listen socket\n");
 #endif
   GNUNET_assert (asock != NULL);
   GNUNET_assert (GNUNET_YES == GNUNET_CONNECTION_check (asock));
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test destroys listen socket\n");
 #endif
-  GNUNET_CONNECTION_destroy (lsock);
+  GNUNET_CONNECTION_destroy (lsock, GNUNET_YES);
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Test asks to receive on accepted socket\n");
 #endif
   GNUNET_CONNECTION_receive (asock,
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Test asks to receive on accepted socket\n");
 #endif
   GNUNET_CONNECTION_receive (asock,
-                          1024,
-                          GNUNET_TIME_relative_multiply
-                          (GNUNET_TIME_UNIT_SECONDS, 5), &receive_check, cls);
+                             1024,
+                             GNUNET_TIME_relative_multiply
+                             (GNUNET_TIME_UNIT_SECONDS, 5), &receive_check,
+                             cls);
 }
 
 static size_t
 }
 
 static size_t
@@ -141,6 +145,10 @@ make_hello (void *cls, size_t size, void *buf)
 #endif
   GNUNET_assert (size >= 12);
   strcpy ((char *) buf, "Hello World");
 #endif
   GNUNET_assert (size >= 12);
   strcpy ((char *) buf, "Hello World");
+#if VERBOSE
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test destroys client socket\n");
+#endif
+  GNUNET_CONNECTION_destroy (csock, GNUNET_YES);
   return 12;
 }
 
   return 12;
 }
 
@@ -148,32 +156,24 @@ static void
 task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   ls = open_listen_socket ();
 task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   ls = open_listen_socket ();
-  lsock = GNUNET_CONNECTION_create_from_existing (tc->sched, ls, 0);
+  lsock = GNUNET_CONNECTION_create_from_existing (ls);
   GNUNET_assert (lsock != NULL);
   GNUNET_assert (lsock != NULL);
-  csock = GNUNET_CONNECTION_create_from_connect (tc->sched,
-                                                     "localhost", PORT, 1024);
+  csock = GNUNET_CONNECTION_create_from_connect (cfg,
+                                                 "localhost", PORT);
   GNUNET_assert (csock != NULL);
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test asks for write notification\n");
 #endif
   GNUNET_assert (NULL !=
                  GNUNET_CONNECTION_notify_transmit_ready (csock,
   GNUNET_assert (csock != NULL);
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test asks for write notification\n");
 #endif
   GNUNET_assert (NULL !=
                  GNUNET_CONNECTION_notify_transmit_ready (csock,
-                                                       12,
-                                                       GNUNET_TIME_UNIT_SECONDS,
-                                                       &make_hello, NULL));
-#if VERBOSE
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test destroys client socket\n");
-#endif
-  GNUNET_CONNECTION_destroy (csock);
+                                                          12,
+                                                          GNUNET_TIME_UNIT_SECONDS,
+                                                          &make_hello, NULL));
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test prepares to accept\n");
 #endif
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test prepares to accept\n");
 #endif
-  GNUNET_SCHEDULER_add_read_net (tc->sched,
-                             GNUNET_NO,
-                             GNUNET_SCHEDULER_PRIORITY_HIGH,
-                             GNUNET_SCHEDULER_NO_TASK,
-                             GNUNET_TIME_UNIT_FOREVER_REL,
-                             ls, &run_accept, cls);
+  GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
+                                 ls, &run_accept, cls);
 }
 
 
 }
 
 
@@ -187,7 +187,11 @@ check ()
   int ok;
 
   ok = 1;
   int ok;
 
   ok = 1;
+  cfg = GNUNET_CONFIGURATION_create ();
+  GNUNET_CONFIGURATION_set_value_string (cfg,
+                                         "resolver", "HOSTNAME", "localhost");
   GNUNET_SCHEDULER_run (&task, &ok);
   GNUNET_SCHEDULER_run (&task, &ok);
+  GNUNET_CONFIGURATION_destroy (cfg);
   return ok;
 }
 
   return ok;
 }