diff options
author | Bart Polot <bart@net.in.tum.de> | 2013-11-21 17:08:07 +0000 |
---|---|---|
committer | Bart Polot <bart@net.in.tum.de> | 2013-11-21 17:08:07 +0000 |
commit | 4df0c2bdc92c4e66d0a6c26d05ce7ae1d4bdd5fb (patch) | |
tree | b159beaeedc7db0797a74a12e6dab780e530b880 /src/mesh/gnunet-service-mesh_local.c | |
parent | 9f566927d59bed4bfa0604012cbc28220405efb2 (diff) | |
download | gnunet-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.c | 18 |
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) | |||
778 | struct MeshChannel * | 778 | struct MeshChannel * |
779 | GML_channel_get (struct MeshClient *c, MESH_ChannelNumber chid) | 779 | GML_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 | ||