aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport_clients.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-02-13 15:05:43 +0000
committerChristian Grothoff <christian@grothoff.org>2012-02-13 15:05:43 +0000
commit30bb20c41bda4a0221e6510495c3e5cac4bf1521 (patch)
tree7c6b836ea9bb55bc0bc2798008cf84cf8a5d5c66 /src/transport/gnunet-service-transport_clients.c
parentb390f74b9652d8188ae82150852d5fc54b2be6ba (diff)
downloadgnunet-30bb20c41bda4a0221e6510495c3e5cac4bf1521.tar.gz
gnunet-30bb20c41bda4a0221e6510495c3e5cac4bf1521.zip
-fixing leak of transmit context (cov 10128)
Diffstat (limited to 'src/transport/gnunet-service-transport_clients.c')
-rw-r--r--src/transport/gnunet-service-transport_clients.c26
1 files changed, 11 insertions, 15 deletions
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,
895 return; 895 return;
896 } 896 }
897 msg = (struct AddressIterateMessage *) message; 897 msg = (struct AddressIterateMessage *) message;
898 if ( (GNUNET_YES != ntohl (msg->one_shot)) &&
899 (NULL != lookup_monitoring_client (client)) )
900 {
901 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
902 "ServerClient %p tried to start monitoring twice (MonitoringClient %p)\n",
903 client, mc);
904 GNUNET_break (0);
905 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
906 return;
907 }
898 GNUNET_SERVER_disable_receive_done_warning (client); 908 GNUNET_SERVER_disable_receive_done_warning (client);
899 tc = GNUNET_SERVER_transmit_context_create (client); 909 tc = GNUNET_SERVER_transmit_context_create (client);
900 if (0 == memcmp (&msg->peer, &all_zeros, sizeof (struct GNUNET_PeerIdentity))) 910 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,
910 output_address (tc, &msg->peer, NULL, 0, address); 920 output_address (tc, &msg->peer, NULL, 0, address);
911 } 921 }
912 if (GNUNET_YES != ntohl (msg->one_shot)) 922 if (GNUNET_YES != ntohl (msg->one_shot))
913 {
914 mc = lookup_monitoring_client (client);
915 if (mc != NULL)
916 {
917 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
918 "ServerClient %p tried to start monitoring twice (MonitoringClient %p)\n",
919 client, mc);
920 GNUNET_break (0);
921 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
922 return;
923 }
924 setup_monitoring_client (client, &msg->peer); 923 setup_monitoring_client (client, &msg->peer);
925 }
926 else 924 else
927 {
928 GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, 925 GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0,
929 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); 926 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE);
930 }
931 GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); 927 GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL);
932} 928}
933 929