aboutsummaryrefslogtreecommitdiff
path: root/src/util/connection.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-03-07 20:40:06 +0000
committerChristian Grothoff <christian@grothoff.org>2012-03-07 20:40:06 +0000
commita29e1679c9a836169a77882541b04e7ba065a0d3 (patch)
tree4c2359961596fbc6b46dc22ebf6640046f7a9615 /src/util/connection.c
parent40ec47829d2eeca9d8b5a1e3302d11681f2f5f91 (diff)
downloadgnunet-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.c7
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 }