unsigned int timeout,
unsigned long int exp_size,
unsigned long int msg_size) {
- char *chunk = xbt_malloc0(msg_size);
+ char *chunk=NULL;
unsigned long int exp_sofar;
XBT_IN;
+ if (gras_if_RL())
+ chunk=xbt_malloc0(msg_size);
+
xbt_assert0(peer->meas,"Asked to send measurement data on a regular socket");
xbt_assert0(peer->outgoing,"Socket not suited for data send (was created with gras_socket_server(), not gras_socket_client())");
exp_sofar,exp_size,msg_size,
gras_socket_peer_name(peer), gras_socket_peer_port(peer));
- free(chunk);
+ if (gras_if_RL())
+ free(chunk);
XBT_OUT;
}
unsigned long int exp_size,
unsigned long int msg_size){
- char *chunk = xbt_malloc(msg_size);
+ char *chunk=NULL;
unsigned long int exp_sofar;
XBT_IN;
+ if (gras_if_RL())
+ chunk = xbt_malloc(msg_size);
+
xbt_assert0(peer->meas,
"Asked to receive measurement data on a regular socket");
xbt_assert0(peer->incoming,"Socket not suited for data receive");
exp_sofar,exp_size,msg_size,
gras_socket_peer_name(peer), gras_socket_peer_port(peer));
- free(chunk);
+ if (gras_if_RL())
+ free(chunk);
XBT_OUT;
}
sprintf(name,"Chunk[%d]",count++);
task_data=xbt_new(sg_task_data_t,1);
- task_data->data=(void*)xbt_malloc(size);
task_data->size = size;
- memcpy(task_data->data,data,size);
+ if (data) {
+ task_data->data=(void*)xbt_malloc(size);
+ memcpy(task_data->data,data,size);
+ } else {
+ task_data->data = NULL;
+ }
task=MSG_task_create(name,0,((double)size)/(1024.0*1024.0),task_data);
DEBUG4("recv chunk on %s -> %s:%d (size=%ld)",
MSG_host_get_name(sock_data->to_host),
MSG_host_get_name(MSG_host_self()), sock_data->to_chan, size);
- if (MSG_task_get(&task, (sock->meas ? pd->measChan : pd->chan)) != MSG_OK)
+ if (MSG_task_get_with_time_out(&task,
+ (sock->meas ? pd->measChan : pd->chan),
+ 60) != MSG_OK)
THROW0(system_error,0,"Error in MSG_task_get()");
DEBUG1("Got chuck %s",MSG_task_get_name(task));
task_data->size, size,
MSG_host_get_name(sock_data->to_host),
MSG_host_get_name(MSG_host_self()), sock_data->to_chan);
- memcpy(data,task_data->data,size);
- free(task_data->data);
+ if (data)
+ memcpy(data,task_data->data,size);
+ if (task_data->data)
+ free(task_data->data);
free(task_data);
if (MSG_task_destroy(task) != MSG_OK)