gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r15717 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r15717 - gnunet/src/util
Date: Mon, 20 Jun 2011 09:47:16 +0200

Author: grothoff
Date: 2011-06-20 09:47:16 +0200 (Mon, 20 Jun 2011)
New Revision: 15717

Modified:
   gnunet/src/util/connection.c
Log:
tolerate partial writes better

Modified: gnunet/src/util/connection.c
===================================================================
--- gnunet/src/util/connection.c        2011-06-20 07:39:00 UTC (rev 15716)
+++ gnunet/src/util/connection.c        2011-06-20 07:47:16 UTC (rev 15717)
@@ -1502,8 +1502,11 @@
                   GNUNET_a2s (sock->addr, sock->addrlen), sock);
 #endif
       notify = sock->nth.notify_ready;
-      sock->nth.notify_ready = NULL;
-      notify (sock->nth.notify_ready_cls, 0, NULL);
+      if (NULL != notify)
+       {
+         sock->nth.notify_ready = NULL;
+         notify (sock->nth.notify_ready_cls, 0, NULL);
+       }
       return;
     }
   if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT))
@@ -1514,6 +1517,7 @@
                   GNUNET_a2s (sock->addr, sock->addrlen), sock);
 #endif
       notify = sock->nth.notify_ready;
+      GNUNET_assert (NULL != notify);
       sock->nth.notify_ready = NULL;
       notify (sock->nth.notify_ready_cls, 0, NULL);
       return;
@@ -1599,12 +1603,14 @@
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Re-scheduling transmit_ready (more to do) (%p).\n", sock);
 #endif
-  GNUNET_assert (sock->nth.notify_ready != NULL);
+  GNUNET_assert ( (sock->nth.notify_ready != NULL) || (have > 0) );
   if (sock->write_task == GNUNET_SCHEDULER_NO_TASK)
     sock->write_task =
-      GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_absolute_get_remaining
-                                      (sock->nth.transmit_timeout),
-                                      sock->sock, &transmit_ready, sock);
+      GNUNET_SCHEDULER_add_write_net ((have > 0) 
+                                     ? GNUNET_TIME_UNIT_FOREVER_REL 
+                                     : GNUNET_TIME_absolute_get_remaining 
(sock->nth.transmit_timeout),
+                                     sock->sock, 
+                                     &transmit_ready, sock);
 }
 
 




reply via email to

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