- msg->payload_size=gras_datadesc_size(msgtype->ctn_type);
- msg->payload=xbt_malloc(gras_datadesc_size(msgtype->ctn_type));
- if (msgtype->ctn_type)
- whole_payload_size = gras_datadesc_copy(msgtype->ctn_type,payload,msg->payload);
+ if (kind == e_gras_msg_kind_rpcerror) {
+ /* error on remote host, carfull, payload is an exception */
+ msg->payl_size=gras_datadesc_size(gras_datadesc_by_name("ex_t"));
+ msg->payl=xbt_malloc(msg->payl_size);
+ whole_payload_size = gras_datadesc_copy(gras_datadesc_by_name("ex_t"),
+ payload,msg->payl);
+ } else {
+ msg->payl_size=gras_datadesc_size(msgtype->ctn_type);
+ msg->payl=xbt_malloc(msg->payl_size);
+ if (msgtype->ctn_type)
+ whole_payload_size = gras_datadesc_copy(msgtype->ctn_type,
+ payload, msg->payl);
+ }
+
+ msg->kind = kind;