From 1095cadacd735f79bded966f30b4d6ebb1cf13ab Mon Sep 17 00:00:00 2001 From: mquinson Date: Mon, 29 May 2006 09:04:10 +0000 Subject: [PATCH] Let's shild the user against himself: check that he provided a payload variable when he is supposed to (and only when he's supposed to) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2300 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/gras/Msg/msg.c | 20 ++++++++++++++++++++ src/gras/Msg/rpc.c | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/gras/Msg/msg.c b/src/gras/Msg/msg.c index 8ed2aefb1f..a867919b9c 100644 --- a/src/gras/Msg/msg.c +++ b/src/gras/Msg/msg.c @@ -342,6 +342,16 @@ gras_msg_wait(double timeout, msgt_want, NULL, NULL, NULL, &msg); + if (msgt_want->ctn_type) { + xbt_assert1(payload, + "Message type '%s' convey a payload you must accept", + msgt_want->name); + } else { + xbt_assert1(!payload, + "No payload was declared for message type '%s'", + msgt_want->name); + } + if (payload) { memcpy(payload,msg.payl,msg.payl_size); free(msg.payl); @@ -359,6 +369,16 @@ gras_msg_send(gras_socket_t sock, gras_msgtype_t msgtype, void *payload) { + if (msgtype->ctn_type) { + xbt_assert1(payload, + "Message type '%s' convey a payload you must provide", + msgtype->name); + } else { + xbt_assert1(!payload, + "No payload was declared for message type '%s'", + msgtype->name); + } + gras_msg_send_ext(sock, e_gras_msg_kind_oneway,0, msgtype, payload); } diff --git a/src/gras/Msg/rpc.c b/src/gras/Msg/rpc.c index 7156c37282..79a0d12edc 100644 --- a/src/gras/Msg/rpc.c +++ b/src/gras/Msg/rpc.c @@ -82,6 +82,16 @@ gras_msg_rpc_async_call(gras_socket_t server, void *request) { gras_msg_cb_ctx_t ctx = xbt_new0(s_gras_msg_cb_ctx_t,1); + if (msgtype->ctn_type) { + xbt_assert1(request, + "RPC type '%s' convey a payload you must provide", + msgtype->name); + } else { + xbt_assert1(!request, + "No payload was declared for RPC type '%s'", + msgtype->name); + } + ctx->ID = last_msg_ID++; ctx->expeditor = server; ctx->msgtype=msgtype; @@ -103,6 +113,16 @@ void gras_msg_rpc_async_wait(gras_msg_cb_ctx_t ctx, void *answer) { s_gras_msg_t received; + if (ctx->msgtype->answer_type) { + xbt_assert1(answer, + "Answers to RPC '%s' convey a payload you must accept", + ctx->msgtype->name); + } else { + xbt_assert1(!answer, + "No payload was declared for answers to RPC '%s'", + ctx->msgtype->name); + } + gras_msg_wait_ext(ctx->timeout, ctx->msgtype, NULL, msgfilter_rpcID, &ctx->ID, &received); -- 2.20.1