From 30bb20c41bda4a0221e6510495c3e5cac4bf1521 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 13 Feb 2012 15:05:43 +0000 Subject: -fixing leak of transmit context (cov 10128) --- src/transport/gnunet-service-transport_clients.c | 26 ++++++++++-------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/transport/gnunet-service-transport_clients.c b/src/transport/gnunet-service-transport_clients.c index a6b9c40ed..cf104687d 100644 --- a/src/transport/gnunet-service-transport_clients.c +++ b/src/transport/gnunet-service-transport_clients.c @@ -895,6 +895,16 @@ clients_handle_address_iterate (void *cls, struct GNUNET_SERVER_Client *client, return; } msg = (struct AddressIterateMessage *) message; + if ( (GNUNET_YES != ntohl (msg->one_shot)) && + (NULL != lookup_monitoring_client (client)) ) + { + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK, + "ServerClient %p tried to start monitoring twice (MonitoringClient %p)\n", + client, mc); + GNUNET_break (0); + GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); + return; + } GNUNET_SERVER_disable_receive_done_warning (client); tc = GNUNET_SERVER_transmit_context_create (client); if (0 == memcmp (&msg->peer, &all_zeros, sizeof (struct GNUNET_PeerIdentity))) @@ -910,24 +920,10 @@ clients_handle_address_iterate (void *cls, struct GNUNET_SERVER_Client *client, output_address (tc, &msg->peer, NULL, 0, address); } if (GNUNET_YES != ntohl (msg->one_shot)) - { - mc = lookup_monitoring_client (client); - if (mc != NULL) - { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK, - "ServerClient %p tried to start monitoring twice (MonitoringClient %p)\n", - client, mc); - GNUNET_break (0); - GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); - return; - } setup_monitoring_client (client, &msg->peer); - } else - { GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, - GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); - } + GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); } -- cgit v1.2.3