diff -r fd04cfde1c4b -r f973808540a6 master/master.c --- a/master/master.c Fri May 12 12:38:22 2006 +0000 +++ b/master/master.c Fri May 12 12:40:45 2006 +0000 @@ -874,9 +874,14 @@ { ec_master_t *master = (ec_master_t *) data; ec_eoe_t *eoe; + unsigned int active = 0; + + list_for_each_entry(eoe, &master->eoe_slaves, list) { + if (ec_eoe_active(eoe)) active++; + } // request_cb must return 0, if the lock has been aquired! - if (!master->request_cb(master->cb_data)) + if (active && !master->request_cb(master->cb_data)) { ecrt_master_async_receive(master); list_for_each_entry(eoe, &master->eoe_slaves, list) {