aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-05-23 11:43:06 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-05-23 11:43:06 +0000
commita5d8e8bde1008abbc0ed6eaa020871083a6ebbad (patch)
treed892ac65386197e779cfb7afc0297a7ee2ca1c94 /src
parent6b7629b51e832e7969ab1d6f138815367c1c4cfc (diff)
downloadgnunet-a5d8e8bde1008abbc0ed6eaa020871083a6ebbad.tar.gz
gnunet-a5d8e8bde1008abbc0ed6eaa020871083a6ebbad.zip
- additional checks
Diffstat (limited to 'src')
-rw-r--r--src/transport/plugin_transport_tcp.c4
-rw-r--r--src/util/server.c24
2 files changed, 27 insertions, 1 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index 076d5db71..8e76398ea 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -1937,6 +1937,10 @@ handle_tcp_data (void *cls, struct GNUNET_SERVER_Client *client,
1937 distance[1].value = session->ats_address_network_type; 1937 distance[1].value = session->ats_address_network_type;
1938 GNUNET_break (ntohl(session->ats_address_network_type) != GNUNET_ATS_NET_UNSPECIFIED); 1938 GNUNET_break (ntohl(session->ats_address_network_type) != GNUNET_ATS_NET_UNSPECIFIED);
1939 1939
1940 GNUNET_assert (GNUNET_CONTAINER_multihashmap_contains_value (plugin->sessionmap,
1941 &session->target.hashPubKey,
1942 session));
1943
1940 delay = plugin->env->receive (plugin->env->cls, 1944 delay = plugin->env->receive (plugin->env->cls,
1941 &session->target, 1945 &session->target,
1942 message, 1946 message,
diff --git a/src/util/server.c b/src/util/server.c
index f707d1bf3..69d64a702 100644
--- a/src/util/server.c
+++ b/src/util/server.c
@@ -991,11 +991,25 @@ process_incoming (void *cls, const void *buf, size_t available,
991 const struct sockaddr *addr, socklen_t addrlen, int errCode) 991 const struct sockaddr *addr, socklen_t addrlen, int errCode)
992{ 992{
993 struct GNUNET_SERVER_Client *client = cls; 993 struct GNUNET_SERVER_Client *client = cls;
994 struct GNUNET_SERVER_Client *tmp;
994 struct GNUNET_SERVER_Handle *server = client->server; 995 struct GNUNET_SERVER_Handle *server = client->server;
995 struct GNUNET_TIME_Absolute end; 996 struct GNUNET_TIME_Absolute end;
996 struct GNUNET_TIME_Absolute now; 997 struct GNUNET_TIME_Absolute now;
997 int ret; 998 int ret;
998 999
1000 /* Check if this client is still valid */
1001 for (tmp = server->clients_head; NULL != tmp; tmp = tmp->next)
1002 {
1003 if (tmp == client)
1004 break;
1005 }
1006
1007 if (NULL == tmp)
1008 {
1009 GNUNET_break (0);
1010 return;
1011 }
1012
999 GNUNET_assert (GNUNET_YES == client->receive_pending); 1013 GNUNET_assert (GNUNET_YES == client->receive_pending);
1000 client->receive_pending = GNUNET_NO; 1014 client->receive_pending = GNUNET_NO;
1001 now = GNUNET_TIME_absolute_get (); 1015 now = GNUNET_TIME_absolute_get ();
@@ -1034,10 +1048,18 @@ process_incoming (void *cls, const void *buf, size_t available,
1034 ret = 1048 ret =
1035 client->server->mst_receive (client->server->mst_cls, client->mst, 1049 client->server->mst_receive (client->server->mst_cls, client->mst,
1036 client, buf, available, GNUNET_NO, GNUNET_YES); 1050 client, buf, available, GNUNET_NO, GNUNET_YES);
1037 else 1051 else if (NULL != client->mst)
1052 {
1038 ret = 1053 ret =
1039 GNUNET_SERVER_mst_receive (client->mst, client, buf, available, GNUNET_NO, 1054 GNUNET_SERVER_mst_receive (client->mst, client, buf, available, GNUNET_NO,
1040 GNUNET_YES); 1055 GNUNET_YES);
1056 }
1057 else
1058 {
1059 GNUNET_break (0);
1060 return;
1061 }
1062
1041 process_mst (client, ret); 1063 process_mst (client, ret);
1042 GNUNET_SERVER_client_drop (client); 1064 GNUNET_SERVER_client_drop (client);
1043} 1065}