-stream listen timeout option
authorSree Harsha Totakura <totakura@in.tum.de>
Thu, 21 Jun 2012 10:47:41 +0000 (10:47 +0000)
committerSree Harsha Totakura <totakura@in.tum.de>
Thu, 21 Jun 2012 10:47:41 +0000 (10:47 +0000)
src/include/gnunet_stream_lib.h
src/stream/stream_api.c
src/stream/test_stream_sequence_wraparound.c

index 2823724833781e4899a2178ccf5759f26434ef85..c8a207d59b63f9c5c61d9546ec0dfe48047ce0c6 100644 (file)
@@ -109,7 +109,12 @@ enum GNUNET_STREAM_Option
      * Option to set the write sequence number. Takes a uint32_t as parameter
      * to set the value of the write sequence number
      */
-    GNUNET_STREAM_OPTION_TESTING_SET_WRITE_SEQUENCE_NUMBER
+    GNUNET_STREAM_OPTION_TESTING_SET_WRITE_SEQUENCE_NUMBER,
+
+    /**
+     * Listen socket timeout in milliseconds
+     */
+    GNUNET_STREAM_OPTION_LISTEN_TIMEOUT
   };
 
 
index e27f4df1fab00f96498986d78084f25ed30286e0..cd89a1de3ec8a3f48b00c3d7f363a2cd8801c546 100644 (file)
@@ -2936,6 +2936,9 @@ GNUNET_STREAM_open (const struct GNUNET_CONFIGURATION_Handle *cfg,
       socket->testing_set_write_sequence_number_value = va_arg (vargs,
                                                                 uint32_t);
       break;
+    case GNUNET_STREAM_OPTION_LISTEN_TIMEOUT:
+      GNUNET_break (0);          /* Option irrelevant in STREAM_open */
+      break;
     case GNUNET_STREAM_OPTION_END:
       break;
     }
@@ -3178,6 +3181,7 @@ GNUNET_STREAM_listen (const struct GNUNET_CONFIGURATION_Handle *cfg,
 {
   /* FIXME: Add variable args for passing configration options? */
   struct GNUNET_STREAM_ListenSocket *lsocket;
+  struct GNUNET_TIME_Relative listen_timeout;
   enum GNUNET_STREAM_Option option;
   va_list vargs;
 
@@ -3196,6 +3200,7 @@ GNUNET_STREAM_listen (const struct GNUNET_CONFIGURATION_Handle *cfg,
   lsocket->retransmit_timeout = 
     GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, default_timeout);
   lsocket->testing_active = GNUNET_NO;
+  listen_timeout = TIME_REL_SECS (60); /* A minute for listen timeout */
   va_start (vargs, listen_cb_cls);
   do {
     option = va_arg (vargs, enum GNUNET_STREAM_Option);
@@ -3210,6 +3215,10 @@ GNUNET_STREAM_listen (const struct GNUNET_CONFIGURATION_Handle *cfg,
       lsocket->testing_set_write_sequence_number_value = va_arg (vargs,
                                                                  uint32_t);
       break;
+    case GNUNET_STREAM_OPTION_LISTEN_TIMEOUT:
+      listen_timeout = GNUNET_TIME_relative_multiply
+        (GNUNET_TIME_UNIT_MILLISECONDS, va_arg (vargs, uint32_t));
+      break;
     case GNUNET_STREAM_OPTION_END:
       break;
     }
@@ -3223,7 +3232,7 @@ GNUNET_STREAM_listen (const struct GNUNET_CONFIGURATION_Handle *cfg,
                                      (uint32_t) lsocket->port,
                                      &lock_status_change_cb, lsocket);
   lsocket->lockmanager_acquire_timeout_task =
-    GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS (20),
+    GNUNET_SCHEDULER_add_delayed (listen_timeout,
                                   &lockmanager_acquire_timeout, lsocket);
   return lsocket;
 }
index b00de0b1c28e52aaaf8d2fb7c15726ef47d7ffc1..ffd2eb5fb43d7d9612329c0c8e2429493dc8059b 100644 (file)
@@ -353,12 +353,14 @@ run (void *cls,
                                               10, /* App port */
                                               &stream_listen_cb,
                                               NULL,
+                                              GNUNET_STREAM_OPTION_LISTEN_TIMEOUT,
+                                              30 * 1000,
                                               GNUNET_STREAM_OPTION_END);
   GNUNET_assert (NULL != peer2_listen_socket);
-  GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS(2), &stream_connect, &peer1);
+  GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS(10), &stream_connect, &peer1);
   abort_task =
     GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
-                                  (GNUNET_TIME_UNIT_SECONDS, 60), &do_abort,
+                                  (GNUNET_TIME_UNIT_SECONDS, 100), &do_abort,
                                   NULL);
 }