Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Allow NULL payload messages
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sat, 25 Jun 2005 13:06:18 +0000 (13:06 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sat, 25 Jun 2005 13:06:18 +0000 (13:06 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1421 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/gras/Msg/msg.c

index 50f3c77..193a6c5 100644 (file)
@@ -219,7 +219,8 @@ gras_msg_send(gras_socket_t   sock,
   TRY(gras_trp_chunk_send(sock, GRAS_header, 6));
 
   TRY(gras_datadesc_send(sock, string_type,   &msgtype->name));
   TRY(gras_trp_chunk_send(sock, GRAS_header, 6));
 
   TRY(gras_datadesc_send(sock, string_type,   &msgtype->name));
-  TRY(gras_datadesc_send(sock, msgtype->ctn_type, payload));
+  if (msgtype->ctn_type)
+    TRY(gras_datadesc_send(sock, msgtype->ctn_type, payload));
   TRY(gras_trp_flush(sock));
 
   return no_error;
   TRY(gras_trp_flush(sock));
 
   return no_error;
@@ -266,14 +267,18 @@ gras_msg_recv(gras_socket_t    sock,
   /* FIXME: Survive unknown messages */
   free(msg_name);
 
   /* FIXME: Survive unknown messages */
   free(msg_name);
 
-  *payload_size=gras_datadesc_size((*msgtype)->ctn_type);
-  xbt_assert2(*payload_size > 0,
-              "%s %s",
-              "Dynamic array as payload is forbided for now (FIXME?).",
-              "Reference to dynamic array is allowed.");
-  *payload = xbt_malloc(*payload_size);
-  TRY(gras_datadesc_recv(sock, (*msgtype)->ctn_type, r_arch, *payload));
-
+  if ((*msgtype)->ctn_type) {
+    *payload_size=gras_datadesc_size((*msgtype)->ctn_type);
+    xbt_assert2(*payload_size > 0,
+               "%s %s",
+               "Dynamic array as payload is forbided for now (FIXME?).",
+               "Reference to dynamic array is allowed.");
+    *payload = xbt_malloc(*payload_size);
+    TRY(gras_datadesc_recv(sock, (*msgtype)->ctn_type, r_arch, *payload));
+  } else {
+    *payload = NULL;
+    *payload_size = 0;
+  }
   return no_error;
 }
 
   return no_error;
 }