gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r30841 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r30841 - gnunet/src/mesh
Date: Thu, 21 Nov 2013 18:08:07 +0100

Author: bartpolot
Date: 2013-11-21 18:08:07 +0100 (Thu, 21 Nov 2013)
New Revision: 30841

Modified:
   gnunet/src/mesh/gnunet-service-mesh_local.c
Log:
- don't crash on channel not found


Modified: gnunet/src/mesh/gnunet-service-mesh_local.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh_local.c 2013-11-21 16:20:19 UTC (rev 
30840)
+++ gnunet/src/mesh/gnunet-service-mesh_local.c 2013-11-21 17:08:07 UTC (rev 
30841)
@@ -778,15 +778,29 @@
 struct MeshChannel *
 GML_channel_get (struct MeshClient *c, MESH_ChannelNumber chid)
 {
+  struct GNUNET_CONTAINER_MultiHashMap32 *map;
+
   if (0 == (chid & GNUNET_MESH_LOCAL_CHANNEL_ID_CLI))
   {
     GNUNET_break_op (0);
     LOG (GNUNET_ERROR_TYPE_DEBUG, "CHID %X not a local chid\n", chid);
     return NULL;
   }
+
   if (chid >= GNUNET_MESH_LOCAL_CHANNEL_ID_SERV)
-    return GNUNET_CONTAINER_multihashmap32_get (c->incoming_channels, chid);
-  return GNUNET_CONTAINER_multihashmap32_get (c->own_channels, chid);
+    map = c->incoming_channels;
+  else if (chid >= GNUNET_MESH_LOCAL_CHANNEL_ID_CLI)
+    map = c->own_channels;
+
+  if (NULL == map)
+  {
+    GNUNET_break (0);
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "Client %s does no t have a valid map for CHID %X\n",
+         GML_2s (c), chid);
+    return NULL;
+  }
+  return GNUNET_CONTAINER_multihashmap32_get (map, chid);
 }
 
 




reply via email to

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