gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r25373 - gnunet/src/fs


From: gnunet
Subject: [GNUnet-SVN] r25373 - gnunet/src/fs
Date: Mon, 10 Dec 2012 16:52:05 +0100

Author: grothoff
Date: 2012-12-10 16:52:05 +0100 (Mon, 10 Dec 2012)
New Revision: 25373

Modified:
   gnunet/src/fs/gnunet-service-fs_stream.c
Log:
-auto reset non-progressing streams after 30s -- hides #2672

Modified: gnunet/src/fs/gnunet-service-fs_stream.c
===================================================================
--- gnunet/src/fs/gnunet-service-fs_stream.c    2012-12-10 15:38:18 UTC (rev 
25372)
+++ gnunet/src/fs/gnunet-service-fs_stream.c    2012-12-10 15:52:05 UTC (rev 
25373)
@@ -38,7 +38,12 @@
  */
 #define IDLE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 
2)
 
+/**
+ * After how long do we reset connections without replies?
+ */
+#define CLIENT_RETRY_TIMEOUT GNUNET_TIME_relative_multiply 
(GNUNET_TIME_UNIT_SECONDS, 30)
 
+
 /**
  * A message in the queue to be written to the stream.
  */
@@ -524,9 +529,10 @@
 static void
 reset_stream_async (struct StreamHandle *sh)
 {
-  if (GNUNET_SCHEDULER_NO_TASK == sh->reset_task)
-    sh->reset_task = GNUNET_SCHEDULER_add_now (&reset_stream_task,
-                                              sh);
+  if (GNUNET_SCHEDULER_NO_TASK != sh->reset_task)
+    GNUNET_SCHEDULER_cancel (sh->reset_task);
+  sh->reset_task = GNUNET_SCHEDULER_add_now (&reset_stream_task,
+                                            sh);
 }
 
 
@@ -549,6 +555,10 @@
   struct StreamHandle *sh = cls;
 
   sh->rh = NULL;
+  GNUNET_SCHEDULER_cancel (sh->reset_task);
+  sh->reset_task = GNUNET_SCHEDULER_add_delayed (CLIENT_RETRY_TIMEOUT,
+                                                &reset_stream_task,
+                                                sh);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Received %u bytes from stream to %s\n",
              (unsigned int) size,
@@ -811,6 +821,9 @@
              "Creating stream to %s\n",
              GNUNET_i2s (target));
   sh = GNUNET_malloc (sizeof (struct StreamHandle));
+  sh->reset_task = GNUNET_SCHEDULER_add_delayed (CLIENT_RETRY_TIMEOUT,
+                                                &reset_stream_task,
+                                                sh);
   sh->mst = GNUNET_SERVER_mst_create (&reply_cb,
                                      sh);
   sh->waiting_map = GNUNET_CONTAINER_multihashmap_create (512, GNUNET_YES);
@@ -1128,6 +1141,9 @@
   struct StreamClient *sc = cls;
   
   sc->wh = NULL;
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Write continuation called on 'server' side with status %d\n",
+             status);
   if ( (GNUNET_STREAM_OK != status) ||
        (size != sc->reply_size) )
   {
@@ -1177,6 +1193,10 @@
                                GNUNET_TIME_UNIT_FOREVER_REL,
                                &write_continuation,
                                sc);
+  if (NULL != sc->wh)
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Gave %u bytes for stream for transmission\n",
+               (unsigned int) wqi->msize);
   GNUNET_free (wqi);
   if (NULL == sc->wh)
   {




reply via email to

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