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/multicast | |
parent | e9dbaa33838419da6b4793d2701a52621d4ca43e (diff) | |
download | gnunet-b08d34a822c0dc54381b64f8bbe05a6ce0419c40.tar.gz gnunet-b08d34a822c0dc54381b64f8bbe05a6ce0419c40.zip |
-support join_msg=NULL properly
Diffstat (limited to 'src/multicast')
-rw-r--r-- | src/multicast/gnunet-service-multicast.c | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c index 4c1b3f1d7..f4e37865f 100644 --- a/src/multicast/gnunet-service-multicast.c +++ b/src/multicast/gnunet-service-multicast.c | |||
@@ -943,10 +943,18 @@ client_recv_multicast_message (void *cls, struct GNUNET_SERVER_Client *client, | |||
943 | { | 943 | { |
944 | struct Group * | 944 | struct Group * |
945 | grp = GNUNET_SERVER_client_get_user_context (client, struct Group); | 945 | grp = GNUNET_SERVER_client_get_user_context (client, struct Group); |
946 | const struct GNUNET_MULTICAST_MessageHeader * | ||
947 | msg = (const struct GNUNET_MULTICAST_MessageHeader *) m; | ||
948 | struct Origin *orig; | ||
949 | |||
950 | if (NULL == grp) | ||
951 | { | ||
952 | GNUNET_break (0); | ||
953 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
954 | return; | ||
955 | } | ||
946 | GNUNET_assert (GNUNET_YES == grp->is_origin); | 956 | GNUNET_assert (GNUNET_YES == grp->is_origin); |
947 | struct Origin *orig = (struct Origin *) grp; | 957 | orig = (struct Origin *) grp; |
948 | struct GNUNET_MULTICAST_MessageHeader * | ||
949 | msg = (struct GNUNET_MULTICAST_MessageHeader *) m; | ||
950 | 958 | ||
951 | msg->fragment_id = GNUNET_htonll (++orig->max_fragment_id); | 959 | msg->fragment_id = GNUNET_htonll (++orig->max_fragment_id); |
952 | msg->purpose.size = htonl (ntohs (msg->header.size) | 960 | msg->purpose.size = htonl (ntohs (msg->header.size) |
@@ -975,13 +983,19 @@ static void | |||
975 | client_recv_multicast_request (void *cls, struct GNUNET_SERVER_Client *client, | 983 | client_recv_multicast_request (void *cls, struct GNUNET_SERVER_Client *client, |
976 | const struct GNUNET_MessageHeader *m) | 984 | const struct GNUNET_MessageHeader *m) |
977 | { | 985 | { |
978 | struct Group * | 986 | struct Group *grp = GNUNET_SERVER_client_get_user_context (client, struct Group); |
979 | grp = GNUNET_SERVER_client_get_user_context (client, struct Group); | 987 | struct Member *mem; |
980 | GNUNET_assert (GNUNET_NO == grp->is_origin); | 988 | const struct GNUNET_MULTICAST_RequestHeader * |
981 | struct Member *mem = (struct Member *) grp; | 989 | req = (const struct GNUNET_MULTICAST_RequestHeader *) m; |
982 | 990 | ||
983 | struct GNUNET_MULTICAST_RequestHeader * | 991 | if (NULL == grp) |
984 | req = (struct GNUNET_MULTICAST_RequestHeader *) m; | 992 | { |
993 | GNUNET_break (0); | ||
994 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
995 | return; | ||
996 | } | ||
997 | GNUNET_assert (GNUNET_NO == grp->is_origin); | ||
998 | mem = (struct Member *) grp; | ||
985 | 999 | ||
986 | req->fragment_id = GNUNET_ntohll (++mem->max_fragment_id); | 1000 | req->fragment_id = GNUNET_ntohll (++mem->max_fragment_id); |
987 | req->purpose.size = htonl (ntohs (req->header.size) | 1001 | req->purpose.size = htonl (ntohs (req->header.size) |