X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fcore%2Fgnunet-service-core_sessions.c;h=1f697cf160d2d04e2cc2a1d5839808db0c21c67f;hb=b0c7119fa2f43fe1b5978651152974359de5a5d2;hp=ab825e9b6028f84bb655dbad273a7aa37a644da9;hpb=c1cbb52286662ac8da07805c5a76d34bf21dd0dd;p=oweals%2Fgnunet.git diff --git a/src/core/gnunet-service-core_sessions.c b/src/core/gnunet-service-core_sessions.c index ab825e9b6..1f697cf16 100644 --- a/src/core/gnunet-service-core_sessions.c +++ b/src/core/gnunet-service-core_sessions.c @@ -171,6 +171,7 @@ GSC_SESSIONS_end (const struct GNUNET_PeerIdentity *pid) { struct Session *session; struct GSC_ClientActiveRequest *car; + struct SessionMessageEntry *sme; session = find_session (pid); if (NULL == session) @@ -190,6 +191,11 @@ GSC_SESSIONS_end (const struct GNUNET_PeerIdentity *pid) session->active_client_request_tail, car); GSC_CLIENTS_reject_request (car); } + while (NULL != (sme = session->sme_head)) + { + GNUNET_CONTAINER_DLL_remove (session->sme_head, session->sme_tail, sme); + GNUNET_free (sme); + } GNUNET_SCHEDULER_cancel (session->typemap_task); GSC_CLIENTS_notify_clients_about_neighbour (&session->peer, NULL, 0 /* FIXME: ATSI */ , @@ -339,7 +345,7 @@ GSC_SESSIONS_queue_request (struct GSC_ClientActiveRequest *car) GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Dropped client request for transmission (am disconnected)\n"); #endif - GNUNET_break (0); /* should have been rejected earlier */ + GNUNET_break (0); /* should have been rejected earlier */ GSC_CLIENTS_reject_request (car); return; } @@ -424,12 +430,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;