git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1408
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
gras_msg_procdata_t pd=(gras_msg_procdata_t)gras_libdata_get("gras_msg");
int cpt;
s_gras_msg_t msg;
gras_msg_procdata_t pd=(gras_msg_procdata_t)gras_libdata_get("gras_msg");
int cpt;
s_gras_msg_t msg;
+ gras_socket_t expeditor_res = NULL;
payload_got = NULL;
if (!msgt_want)
payload_got = NULL;
if (!msgt_want)
xbt_dynar_foreach(pd->msg_queue,cpt,msg){
if (msg.type->code == msgt_want->code) {
xbt_dynar_foreach(pd->msg_queue,cpt,msg){
if (msg.type->code == msgt_want->code) {
- *expeditor = msg.expeditor;
+ if (expeditor)
+ *expeditor = msg.expeditor;
memcpy(payload, msg.payload, msg.payload_size);
free(msg.payload);
xbt_dynar_cursor_rm(pd->msg_queue, &cpt);
memcpy(payload, msg.payload, msg.payload_size);
free(msg.payload);
xbt_dynar_cursor_rm(pd->msg_queue, &cpt);
- TRY(gras_trp_select(timeout - now + start, expeditor));
- TRY(gras_msg_recv(*expeditor, &msgt_got, &payload_got, &payload_size_got));
+ TRY(gras_trp_select(timeout - now + start, &expeditor_res));
+ TRY(gras_msg_recv(expeditor_res, &msgt_got, &payload_got, &payload_size_got));
if (msgt_got->code == msgt_want->code) {
if (msgt_got->code == msgt_want->code) {
+ if (expeditor)
+ *expeditor=expeditor_res;
memcpy(payload, payload_got, payload_size_got);
free(payload_got);
VERB0("Got waited message");
memcpy(payload, payload_got, payload_size_got);
free(payload_got);
VERB0("Got waited message");
}
/* not expected msg type. Queue it for later */
}
/* not expected msg type. Queue it for later */
- msg.expeditor = *expeditor;
- msg.type = msgt_got;
- msg.payload = payload;
+ msg.expeditor = expeditor_res;
+ msg.type = msgt_got;
+ msg.payload = payload;
msg.payload_size = payload_size_got;
xbt_dynar_push(pd->msg_queue,&msg);
msg.payload_size = payload_size_got;
xbt_dynar_push(pd->msg_queue,&msg);