[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r9058 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r9058 - gnunet/src/util |
Date: |
Thu, 1 Oct 2009 16:22:24 -0600 |
Author: grothoff
Date: 2009-10-01 16:22:24 -0600 (Thu, 01 Oct 2009)
New Revision: 9058
Modified:
gnunet/src/util/connection.c
Log:
fixing timeout handling
Modified: gnunet/src/util/connection.c
===================================================================
--- gnunet/src/util/connection.c 2009-10-01 22:19:24 UTC (rev 9057)
+++ gnunet/src/util/connection.c 2009-10-01 22:22:24 UTC (rev 9058)
@@ -1027,9 +1027,9 @@
sh->read_task = GNUNET_SCHEDULER_NO_TASK;
now = GNUNET_TIME_absolute_get ();
- if ((now.value > sh->receive_timeout.value) ||
- (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT)) ||
- (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)))
+ if ( (now.value > sh->receive_timeout.value) ||
+ (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT)) ||
+ (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) )
{
#if DEBUG_CONNECTION
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -1304,17 +1304,29 @@
transmit_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct GNUNET_CONNECTION_Handle *sock = cls;
+ GNUNET_CONNECTION_TransmitReadyNotify notify;
ssize_t ret;
size_t have;
GNUNET_assert (sock->write_task != GNUNET_SCHEDULER_NO_TASK);
sock->write_task = GNUNET_SCHEDULER_NO_TASK;
- if ( (sock->sock == NULL) ||
- ( (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT)) &&
- (0 == (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE)) &&
- (!GNUNET_NETWORK_fdset_isset (tc->write_ready, sock->sock))) )
+ GNUNET_assert (NULL != sock->sock);
+ if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT))
{
#if DEBUG_CONNECTION
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Transmit to `%s' fails, time out reached.\n",
+ GNUNET_a2s (sock->addr, sock->addrlen));
+#endif
+ notify = sock->nth.notify_ready;
+ sock->nth.notify_ready = NULL;
+ notify (sock->nth.notify_ready_cls, 0, NULL);
+ return;
+ }
+ if (! GNUNET_NETWORK_fdset_isset (tc->write_ready,
+ sock->sock))
+ {
+#if DEBUG_CONNECTION
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
_("Could not satisfy pending transmission request, socket
closed or connect failed.\n"));
#endif
@@ -1392,7 +1404,8 @@
GNUNET_SCHEDULER_PRIORITY_KEEP,
GNUNET_SCHEDULER_NO_TASK,
GNUNET_TIME_absolute_get_remaining
(sock->nth.transmit_timeout),
- sock->sock, &transmit_ready, sock);
+ sock->sock,
+ &transmit_ready, sock);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r9058 - gnunet/src/util,
gnunet <=