aboutsummaryrefslogtreecommitdiff
path: root/src/mesh/gnunet-service-mesh_local.c
diff options
context:
space:
mode:
authorBart Polot <bart@net.in.tum.de>2013-11-21 17:08:07 +0000
committerBart Polot <bart@net.in.tum.de>2013-11-21 17:08:07 +0000
commit4df0c2bdc92c4e66d0a6c26d05ce7ae1d4bdd5fb (patch)
treeb159beaeedc7db0797a74a12e6dab780e530b880 /src/mesh/gnunet-service-mesh_local.c
parent9f566927d59bed4bfa0604012cbc28220405efb2 (diff)
downloadgnunet-4df0c2bdc92c4e66d0a6c26d05ce7ae1d4bdd5fb.tar.gz
gnunet-4df0c2bdc92c4e66d0a6c26d05ce7ae1d4bdd5fb.zip
- don't crash on channel not found
Diffstat (limited to 'src/mesh/gnunet-service-mesh_local.c')
-rw-r--r--src/mesh/gnunet-service-mesh_local.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/mesh/gnunet-service-mesh_local.c b/src/mesh/gnunet-service-mesh_local.c
index 23319d458..bf018c56f 100644
--- a/src/mesh/gnunet-service-mesh_local.c
+++ b/src/mesh/gnunet-service-mesh_local.c
@@ -778,15 +778,29 @@ GML_shutdown (void)
778struct MeshChannel * 778struct MeshChannel *
779GML_channel_get (struct MeshClient *c, MESH_ChannelNumber chid) 779GML_channel_get (struct MeshClient *c, MESH_ChannelNumber chid)
780{ 780{
781 struct GNUNET_CONTAINER_MultiHashMap32 *map;
782
781 if (0 == (chid & GNUNET_MESH_LOCAL_CHANNEL_ID_CLI)) 783 if (0 == (chid & GNUNET_MESH_LOCAL_CHANNEL_ID_CLI))
782 { 784 {
783 GNUNET_break_op (0); 785 GNUNET_break_op (0);
784 LOG (GNUNET_ERROR_TYPE_DEBUG, "CHID %X not a local chid\n", chid); 786 LOG (GNUNET_ERROR_TYPE_DEBUG, "CHID %X not a local chid\n", chid);
785 return NULL; 787 return NULL;
786 } 788 }
789
787 if (chid >= GNUNET_MESH_LOCAL_CHANNEL_ID_SERV) 790 if (chid >= GNUNET_MESH_LOCAL_CHANNEL_ID_SERV)
788 return GNUNET_CONTAINER_multihashmap32_get (c->incoming_channels, chid); 791 map = c->incoming_channels;
789 return GNUNET_CONTAINER_multihashmap32_get (c->own_channels, chid); 792 else if (chid >= GNUNET_MESH_LOCAL_CHANNEL_ID_CLI)
793 map = c->own_channels;
794
795 if (NULL == map)
796 {
797 GNUNET_break (0);
798 LOG (GNUNET_ERROR_TYPE_DEBUG,
799 "Client %s does no t have a valid map for CHID %X\n",
800 GML_2s (c), chid);
801 return NULL;
802 }
803 return GNUNET_CONTAINER_multihashmap32_get (map, chid);
790} 804}
791 805
792 806