diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-03-07 20:40:06 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-03-07 20:40:06 +0000 |
commit | a29e1679c9a836169a77882541b04e7ba065a0d3 (patch) | |
tree | 4c2359961596fbc6b46dc22ebf6640046f7a9615 /src/util/connection.c | |
parent | 40ec47829d2eeca9d8b5a1e3302d11681f2f5f91 (diff) | |
download | gnunet-a29e1679c9a836169a77882541b04e7ba065a0d3.tar.gz gnunet-a29e1679c9a836169a77882541b04e7ba065a0d3.zip |
-trying to fix #2198 -- or at least a related bug
Diffstat (limited to 'src/util/connection.c')
-rw-r--r-- | src/util/connection.c | 7 |
1 files changed, 7 insertions, 0 deletions
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) | |||
1388 | GNUNET_NETWORK_socket_shutdown (sock->sock, SHUT_RDWR); | 1388 | GNUNET_NETWORK_socket_shutdown (sock->sock, SHUT_RDWR); |
1389 | GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (sock->sock)); | 1389 | GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (sock->sock)); |
1390 | sock->sock = NULL; | 1390 | sock->sock = NULL; |
1391 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->write_task); | ||
1391 | } | 1392 | } |
1392 | if (sock->read_task != GNUNET_SCHEDULER_NO_TASK) | 1393 | if (sock->read_task != GNUNET_SCHEDULER_NO_TASK) |
1393 | { | 1394 | { |
@@ -1464,6 +1465,7 @@ transmit_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1464 | _ | 1465 | _ |
1465 | ("Could not satisfy pending transmission request, socket closed or connect failed (%p).\n"), | 1466 | ("Could not satisfy pending transmission request, socket closed or connect failed (%p).\n"), |
1466 | sock); | 1467 | sock); |
1468 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->write_task); | ||
1467 | transmit_error (sock); | 1469 | transmit_error (sock); |
1468 | return; /* connect failed for good, we're finished */ | 1470 | return; /* connect failed for good, we're finished */ |
1469 | } | 1471 | } |
@@ -1495,6 +1497,11 @@ RETRY: | |||
1495 | if (errno == EINTR) | 1497 | if (errno == EINTR) |
1496 | goto RETRY; | 1498 | goto RETRY; |
1497 | LOG_STRERROR (GNUNET_ERROR_TYPE_DEBUG, "send"); | 1499 | LOG_STRERROR (GNUNET_ERROR_TYPE_DEBUG, "send"); |
1500 | if (GNUNET_SCHEDULER_NO_TASK != sock->write_task) | ||
1501 | { | ||
1502 | GNUNET_SCHEDULER_cancel (sock->write_task); | ||
1503 | sock->write_task = GNUNET_SCHEDULER_NO_TASK; | ||
1504 | } | ||
1498 | transmit_error (sock); | 1505 | transmit_error (sock); |
1499 | return; | 1506 | return; |
1500 | } | 1507 | } |