Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Bugfix: do not use the action state to determine the result of TEST requests when...
authorcristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 26 Jan 2011 13:53:53 +0000 (13:53 +0000)
committercristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 26 Jan 2011 13:53:53 +0000 (13:53 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9499 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/simix/smx_network.c

index 5a1d603..641fac3 100644 (file)
@@ -362,8 +362,20 @@ void SIMIX_pre_comm_wait(smx_req_t req, int idx)
 void SIMIX_pre_comm_test(smx_req_t req)
 {
   smx_action_t action = req->comm_test.comm;
-  req->comm_test.result = (action->state != SIMIX_WAITING && action->state != SIMIX_RUNNING);
 
+  if(MC_IS_ENABLED){
+    req->comm_test.result = action->comm.src_proc && action->comm.dst_proc;
+    if(req->comm_test.result){
+      action->state = SIMIX_DONE;
+      xbt_fifo_push(action->request_list, req);
+      SIMIX_comm_finish(action);
+    }else{
+      SIMIX_request_answer(req);
+    }
+    return;
+  }
+
+  req->comm_test.result = (action->state != SIMIX_WAITING && action->state != SIMIX_RUNNING);
   if (req->comm_test.result) {
     xbt_fifo_push(action->request_list, req);
     SIMIX_comm_finish(action);