diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-12-19 22:48:34 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-12-19 22:48:34 +0000 |
commit | b08d34a822c0dc54381b64f8bbe05a6ce0419c40 (patch) | |
tree | 9b3a1652fda22a08806fd49e61538031d2616da0 /src/psyc/psyc_api.c | |
parent | e9dbaa33838419da6b4793d2701a52621d4ca43e (diff) | |
download | gnunet-b08d34a822c0dc54381b64f8bbe05a6ce0419c40.tar.gz gnunet-b08d34a822c0dc54381b64f8bbe05a6ce0419c40.zip |
-support join_msg=NULL properly
Diffstat (limited to 'src/psyc/psyc_api.c')
-rw-r--r-- | src/psyc/psyc_api.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/psyc/psyc_api.c b/src/psyc/psyc_api.c index 8cce89704..96aad28ba 100644 --- a/src/psyc/psyc_api.c +++ b/src/psyc/psyc_api.c | |||
@@ -854,11 +854,15 @@ GNUNET_PSYC_slave_join (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
854 | { | 854 | { |
855 | struct GNUNET_PSYC_Slave *slv = GNUNET_malloc (sizeof (*slv)); | 855 | struct GNUNET_PSYC_Slave *slv = GNUNET_malloc (sizeof (*slv)); |
856 | struct GNUNET_PSYC_Channel *chn = &slv->chn; | 856 | struct GNUNET_PSYC_Channel *chn = &slv->chn; |
857 | |||
858 | uint16_t relay_size = relay_count * sizeof (*relays); | 857 | uint16_t relay_size = relay_count * sizeof (*relays); |
859 | uint16_t join_msg_size = ntohs (join_msg->header.size); | 858 | uint16_t join_msg_size; |
860 | struct SlaveJoinRequest *req | 859 | struct SlaveJoinRequest *req; |
861 | = GNUNET_malloc (sizeof (*req) + relay_size + join_msg_size); | 860 | |
861 | if (NULL == join_msg) | ||
862 | join_msg_size = 0; | ||
863 | else | ||
864 | join_msg_size = ntohs (join_msg->header.size); | ||
865 | req = GNUNET_malloc (sizeof (*req) + relay_size + join_msg_size); | ||
862 | req->header.size = htons (sizeof (*req) | 866 | req->header.size = htons (sizeof (*req) |
863 | + relay_count * sizeof (*relays)); | 867 | + relay_count * sizeof (*relays)); |
864 | req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN); | 868 | req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN); |
@@ -870,8 +874,10 @@ GNUNET_PSYC_slave_join (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
870 | if (0 < relay_size) | 874 | if (0 < relay_size) |
871 | memcpy (&req[1], relays, relay_size); | 875 | memcpy (&req[1], relays, relay_size); |
872 | 876 | ||
873 | if (0 < join_msg_size) | 877 | if (NULL != join_msg) |
874 | memcpy ((char *) &req[1] + relay_size, join_msg, join_msg_size); | 878 | memcpy ((char *) &req[1] + relay_size, |
879 | join_msg, | ||
880 | join_msg_size); | ||
875 | 881 | ||
876 | chn->connect_msg = (struct GNUNET_MessageHeader *) req; | 882 | chn->connect_msg = (struct GNUNET_MessageHeader *) req; |
877 | chn->cfg = cfg; | 883 | chn->cfg = cfg; |