From 4101d1d0fc562994b2c96516c252902393002bfb Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 25 Nov 2011 16:10:58 +0000 Subject: [PATCH] fixing mantis 1961 --- src/core/gnunet-service-core_clients.c | 17 +++++++++++++---- src/core/gnunet-service-core_sessions.c | 5 ++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/core/gnunet-service-core_clients.c b/src/core/gnunet-service-core_clients.c index 98a55bef9..5d06af640 100644 --- a/src/core/gnunet-service-core_clients.c +++ b/src/core/gnunet-service-core_clients.c @@ -606,15 +606,24 @@ GSC_CLIENTS_solicit_request (struct GSC_ClientActiveRequest *car) struct SendMessageReady smr; c = car->client_handle; + if (GNUNET_YES != + GNUNET_CONTAINER_multihashmap_contains (c->connectmap, + &car-> + target.hashPubKey)) + { + /* connection has gone down since, drop request */ + GNUNET_assert (0 != + memcmp (&car->target, &GSC_my_identity, + sizeof (struct GNUNET_PeerIdentity))); + GSC_SESSIONS_dequeue_request (car); + GSC_CLIENTS_reject_request (car); + return; + } smr.header.size = htons (sizeof (struct SendMessageReady)); smr.header.type = htons (GNUNET_MESSAGE_TYPE_CORE_SEND_READY); smr.size = htons (car->msize); smr.smr_id = car->smr_id; smr.peer = car->target; - GNUNET_assert (GNUNET_YES == - GNUNET_CONTAINER_multihashmap_contains (c->connectmap, - &car-> - target.hashPubKey)); send_to_client (c, &smr.header, GNUNET_NO); } diff --git a/src/core/gnunet-service-core_sessions.c b/src/core/gnunet-service-core_sessions.c index 51bd03279..219272809 100644 --- a/src/core/gnunet-service-core_sessions.c +++ b/src/core/gnunet-service-core_sessions.c @@ -432,12 +432,15 @@ static void solicit_messages (struct Session *session) { struct GSC_ClientActiveRequest *car; + struct GSC_ClientActiveRequest *nxt; size_t so_size; discard_expired_requests (session); so_size = 0; - for (car = session->active_client_request_head; NULL != car; car = car->next) + nxt = session->active_client_request_head; + while (NULL != (car = nxt) ) { + nxt = car->next; if (so_size + car->msize > GNUNET_CONSTANTS_MAX_ENCRYPTED_MESSAGE_SIZE) break; so_size += car->msize; -- 2.25.1