diff -r de914aa62273 -r 584a4f60b067 master/fsm.c --- a/master/fsm.c Tue Jan 09 14:19:37 2007 +0000 +++ b/master/fsm.c Tue Jan 09 14:36:08 2007 +0000 @@ -325,13 +325,20 @@ if (slave->error_flag || !slave->online || slave->requested_state == EC_SLAVE_STATE_UNKNOWN - || slave->current_state == slave->requested_state) continue; + || (slave->current_state == slave->requested_state + && slave->self_configured)) continue; if (master->debug_level) { ec_state_string(slave->current_state, old_state); - ec_state_string(slave->requested_state, new_state); - EC_DBG("Changing state of slave %i (%s -> %s).\n", - slave->ring_position, old_state, new_state); + if (slave->current_state != slave->requested_state) { + ec_state_string(slave->requested_state, new_state); + EC_DBG("Changing state of slave %i (%s -> %s).\n", + slave->ring_position, old_state, new_state); + } + else if (!slave->self_configured) { + EC_DBG("Reconfiguring slave %i (%s).\n", + slave->ring_position, old_state); + } } fsm->master_state = ec_fsm_master_configure_slave; @@ -1308,6 +1315,8 @@ return; } + slave->self_configured = 1; + if (master->debug_level) { EC_DBG("Slave %i is now in INIT.\n", slave->ring_position); }