From a29e1679c9a836169a77882541b04e7ba065a0d3 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 7 Mar 2012 20:40:06 +0000 Subject: -trying to fix #2198 -- or at least a related bug --- src/util/connection.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/util/connection.c') diff --git a/src/util/connection.c b/src/util/connection.c index 8224479f9..60e7f115f 100644 --- a/src/util/connection.c +++ b/src/util/connection.c @@ -1388,6 +1388,7 @@ transmit_error (struct GNUNET_CONNECTION_Handle *sock) GNUNET_NETWORK_socket_shutdown (sock->sock, SHUT_RDWR); GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (sock->sock)); sock->sock = NULL; + GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->write_task); } if (sock->read_task != GNUNET_SCHEDULER_NO_TASK) { @@ -1464,6 +1465,7 @@ transmit_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) _ ("Could not satisfy pending transmission request, socket closed or connect failed (%p).\n"), sock); + GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->write_task); transmit_error (sock); return; /* connect failed for good, we're finished */ } @@ -1495,6 +1497,11 @@ RETRY: if (errno == EINTR) goto RETRY; LOG_STRERROR (GNUNET_ERROR_TYPE_DEBUG, "send"); + if (GNUNET_SCHEDULER_NO_TASK != sock->write_task) + { + GNUNET_SCHEDULER_cancel (sock->write_task); + sock->write_task = GNUNET_SCHEDULER_NO_TASK; + } transmit_error (sock); return; } -- cgit v1.2.3