Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix commit f48cc395ebecc84d865ab551a672d2a2358624e5
[simgrid.git] / src / simix / smx_network.c
index 28937f4..c72e0af 100644 (file)
@@ -589,14 +589,16 @@ void SIMIX_comm_finish(smx_action_t action)
 
       case SIMIX_SRC_HOST_FAILURE:
         if (simcall->issuer == action->comm.src_proc)
-          SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
+          simcall->issuer->context->iwannadie = 1;
+//          SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
         else
           SMX_EXCEPTION(simcall->issuer, network_error, 0, "Remote peer failed");
         break;
 
       case SIMIX_DST_HOST_FAILURE:
         if (simcall->issuer == action->comm.dst_proc)
-          SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
+          simcall->issuer->context->iwannadie = 1;
+//          SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
         else
           SMX_EXCEPTION(simcall->issuer, network_error, 0, "Remote peer failed");
         break;
@@ -640,6 +642,11 @@ void SIMIX_comm_finish(smx_action_t action)
       }
     }
 
+    if (surf_workstation_model->extension.
+        workstation.get_state(simcall->issuer->smx_host->host) != SURF_RESOURCE_ON) {
+      simcall->issuer->context->iwannadie = 1;
+    }
+
     simcall->issuer->waiting_action = NULL;
     xbt_fifo_remove(simcall->issuer->comms, action);
     SIMIX_simcall_answer(simcall);