diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-02-18 20:02:21 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-02-18 20:02:21 +0100 |
commit | 6f8fabef01d53234928a2c766fe19b0bbb00a2a2 (patch) | |
tree | e414d6d7f375d1a4f7a017ee0a6071e4cda41126 /src/cadet | |
parent | 2beedf90ffdc6d9eb3d13e0868411cf371d06ff6 (diff) | |
download | gnunet-6f8fabef01d53234928a2c766fe19b0bbb00a2a2.tar.gz gnunet-6f8fabef01d53234928a2c766fe19b0bbb00a2a2.zip |
make sure after any transmission succeeds we continue looking for more (previous code missed some corner cases, see #4896/11780)
Diffstat (limited to 'src/cadet')
-rw-r--r-- | src/cadet/gnunet-service-cadet-new_core.c | 1 | ||||
-rw-r--r-- | src/cadet/gnunet-service-cadet-new_peer.c | 10 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/cadet/gnunet-service-cadet-new_core.c b/src/cadet/gnunet-service-cadet-new_core.c index 05fe5f49f..3768c36a5 100644 --- a/src/cadet/gnunet-service-cadet-new_core.c +++ b/src/cadet/gnunet-service-cadet-new_core.c | |||
@@ -596,7 +596,6 @@ send_broken (struct RouteDirection *target, | |||
596 | bm->peer1 = *peer1; | 596 | bm->peer1 = *peer1; |
597 | if (NULL != peer2) | 597 | if (NULL != peer2) |
598 | bm->peer2 = *peer2; | 598 | bm->peer2 = *peer2; |
599 | |||
600 | GCP_request_mq_cancel (target->mqm, | 599 | GCP_request_mq_cancel (target->mqm, |
601 | env); | 600 | env); |
602 | target->mqm = NULL; | 601 | target->mqm = NULL; |
diff --git a/src/cadet/gnunet-service-cadet-new_peer.c b/src/cadet/gnunet-service-cadet-new_peer.c index 136ab8297..7b944afd8 100644 --- a/src/cadet/gnunet-service-cadet-new_peer.c +++ b/src/cadet/gnunet-service-cadet-new_peer.c | |||
@@ -1398,10 +1398,17 @@ GCP_request_mq_cancel (struct GCP_MessageQueueManager *mqm, | |||
1398 | if (NULL != last_env) | 1398 | if (NULL != last_env) |
1399 | { | 1399 | { |
1400 | if (NULL != cp->core_mq) | 1400 | if (NULL != cp->core_mq) |
1401 | { | ||
1402 | GNUNET_MQ_notify_sent (last_env, | ||
1403 | &mqm_send_done, | ||
1404 | cp); | ||
1401 | GNUNET_MQ_send (cp->core_mq, | 1405 | GNUNET_MQ_send (cp->core_mq, |
1402 | last_env); | 1406 | last_env); |
1407 | } | ||
1403 | else | 1408 | else |
1409 | { | ||
1404 | GNUNET_MQ_discard (last_env); | 1410 | GNUNET_MQ_discard (last_env); |
1411 | } | ||
1405 | } | 1412 | } |
1406 | if (cp->mqm_ready_ptr == mqm) | 1413 | if (cp->mqm_ready_ptr == mqm) |
1407 | cp->mqm_ready_ptr = mqm->next; | 1414 | cp->mqm_ready_ptr = mqm->next; |
@@ -1433,6 +1440,9 @@ GCP_send_ooo (struct CadetPeer *cp, | |||
1433 | GNUNET_MQ_discard (env); | 1440 | GNUNET_MQ_discard (env); |
1434 | return; | 1441 | return; |
1435 | } | 1442 | } |
1443 | GNUNET_MQ_notify_sent (env, | ||
1444 | &mqm_send_done, | ||
1445 | cp); | ||
1436 | GNUNET_MQ_send (cp->core_mq, | 1446 | GNUNET_MQ_send (cp->core_mq, |
1437 | env); | 1447 | env); |
1438 | } | 1448 | } |