aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rps/gnunet-service-rps.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c
index 0b9e3e5374..2f0b2c5791 100644
--- a/src/rps/gnunet-service-rps.c
+++ b/src/rps/gnunet-service-rps.c
@@ -2568,6 +2568,7 @@ cleanup_destroyed_channel (void *cls,
{
struct GNUNET_PeerIdentity *peer = cls;
uint32_t *channel_flag;
+ struct PeerContext *peer_ctx;
if (GNUNET_NO == Peers_check_peer_known (peer))
{ /* We don't know a context to that peer */
@@ -2577,6 +2578,15 @@ cleanup_destroyed_channel (void *cls,
return;
}
+ peer_ctx = get_peer_ctx (peer);
+ if (GNUNET_YES == Peers_check_channel_role (peer, channel, Peers_CHANNEL_ROLE_RECEIVING))
+ {
+ set_channel_flag (peer_ctx->recv_channel_flags, Peers_CHANNEL_DESTROING);
+ } else if (GNUNET_YES == Peers_check_channel_role (peer, channel, Peers_CHANNEL_ROLE_SENDING))
+ {
+ set_channel_flag (peer_ctx->send_channel_flags, Peers_CHANNEL_DESTROING);
+ }
+
if (GNUNET_YES == Peers_check_peer_flag (peer, Peers_TO_DESTROY))
{ /* We are in the middle of removing that peer from our knowledge. In this
case simply make sure that the channels are cleaned. */