- TRY(gras_datadesc_recv(sock, string_type, r_arch,(void**) &msg_name));
- TRY(gras_set_get_by_name(_gras_msgtype_set,
- msg_name,(gras_set_elm_t**)msgtype));
- TRY(gras_datadesc_recv(sock, (*msgtype)->ctn_type, r_arch, payload));
+ TRY(gras_datadesc_recv(sock, string_type, r_arch, &msg_name));
+ errcode = gras_set_get_by_name(_gras_msgtype_set,
+ msg_name,(gras_set_elm_t**)msgtype);
+ if (errcode != no_error)
+ RAISE2(errcode,
+ "Got error %s while retrieving the type associated to messages '%s'",
+ gras_error_name(errcode),msg_name);
+ /* FIXME: Survive unknown messages */
+ free(msg_name);
+
+ *payload_size=gras_datadesc_size((*msgtype)->ctn_type);
+ gras_assert2(*payload_size > 0,
+ "%s %s",
+ "Dynamic array as payload is forbided for now (FIXME?).",
+ "Reference to dynamic array is allowed.");
+ *payload = malloc(*payload_size);
+ TRY(gras_datadesc_recv(sock, (*msgtype)->ctn_type, r_arch, *payload));