diff --git a/master/fsm.c b/master/fsm.c
index ed3aea43e00e6ddfea45ee631dc943cbe22224ce..2b18b11fabad41d15380a15dfd4c4fc395f9d513 100644
--- a/master/fsm.c
+++ b/master/fsm.c
@@ -929,7 +929,6 @@ void ec_fsm_master_scan_slaves(ec_fsm_t *fsm /**< finite state machine */)
     ec_master_t *master = fsm->master;
     ec_slave_t *slave = fsm->slave;
 
-
     fsm->slave_state(fsm); // execute slave state machine
 
     if (fsm->slave_state != ec_fsm_end
@@ -1042,8 +1041,8 @@ void ec_fsm_master_sdodict(ec_fsm_t *fsm /**< finite state machine */)
     fsm->coe_state(fsm); // execute CoE state machine
 
     if (fsm->coe_state == ec_fsm_error) {
-        fsm->slave->error_flag = 1;
-        fsm->slave_state = ec_fsm_error;
+        fsm->master_state = ec_fsm_master_start;
+        fsm->master_state(fsm); // execute immediately
         return;
     }