gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r21564 - in gnunet/src: transport util


From: gnunet
Subject: [GNUnet-SVN] r21564 - in gnunet/src: transport util
Date: Wed, 23 May 2012 13:43:06 +0200

Author: wachs
Date: 2012-05-23 13:43:06 +0200 (Wed, 23 May 2012)
New Revision: 21564

Modified:
   gnunet/src/transport/plugin_transport_tcp.c
   gnunet/src/util/server.c
Log:
- additional checks


Modified: gnunet/src/transport/plugin_transport_tcp.c
===================================================================
--- gnunet/src/transport/plugin_transport_tcp.c 2012-05-23 08:27:33 UTC (rev 
21563)
+++ gnunet/src/transport/plugin_transport_tcp.c 2012-05-23 11:43:06 UTC (rev 
21564)
@@ -1937,6 +1937,10 @@
   distance[1].value = session->ats_address_network_type;
   GNUNET_break (ntohl(session->ats_address_network_type) != 
GNUNET_ATS_NET_UNSPECIFIED);
 
+  GNUNET_assert (GNUNET_CONTAINER_multihashmap_contains_value 
(plugin->sessionmap,
+      &session->target.hashPubKey,
+      session));
+
   delay = plugin->env->receive (plugin->env->cls,
                                 &session->target,
                                 message,

Modified: gnunet/src/util/server.c
===================================================================
--- gnunet/src/util/server.c    2012-05-23 08:27:33 UTC (rev 21563)
+++ gnunet/src/util/server.c    2012-05-23 11:43:06 UTC (rev 21564)
@@ -991,11 +991,25 @@
                   const struct sockaddr *addr, socklen_t addrlen, int errCode)
 {
   struct GNUNET_SERVER_Client *client = cls;
+  struct GNUNET_SERVER_Client *tmp;
   struct GNUNET_SERVER_Handle *server = client->server;
   struct GNUNET_TIME_Absolute end;
   struct GNUNET_TIME_Absolute now;
   int ret;
 
+  /* Check if this client is still valid */
+  for (tmp = server->clients_head; NULL != tmp; tmp = tmp->next)
+  {
+    if (tmp == client)
+      break;
+  }
+
+  if (NULL == tmp)
+  {
+    GNUNET_break (0);
+    return;
+  }
+
   GNUNET_assert (GNUNET_YES == client->receive_pending);
   client->receive_pending = GNUNET_NO;
   now = GNUNET_TIME_absolute_get ();
@@ -1034,10 +1048,18 @@
     ret =
         client->server->mst_receive (client->server->mst_cls, client->mst,
                                      client, buf, available, GNUNET_NO, 
GNUNET_YES);
-  else
+  else if (NULL != client->mst)
+  {
     ret =
         GNUNET_SERVER_mst_receive (client->mst, client, buf, available, 
GNUNET_NO,
                                    GNUNET_YES);
+  }
+  else
+  {
+    GNUNET_break (0);
+    return;
+  }
+
   process_mst (client, ret);
   GNUNET_SERVER_client_drop (client);
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]