aboutsummaryrefslogtreecommitdiff
path: root/src/psyc/psyc_api.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-12-19 22:48:34 +0000
committerChristian Grothoff <christian@grothoff.org>2014-12-19 22:48:34 +0000
commitb08d34a822c0dc54381b64f8bbe05a6ce0419c40 (patch)
tree9b3a1652fda22a08806fd49e61538031d2616da0 /src/psyc/psyc_api.c
parente9dbaa33838419da6b4793d2701a52621d4ca43e (diff)
downloadgnunet-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.c18
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;