diff --git a/sys/net/ccn_lite/ccn-lite-relay.c b/sys/net/ccn_lite/ccn-lite-relay.c index 700f29e0f31c066b90bda1df16ef567f7ed3959c..44047aad99336cb4b7301a38ae8e358e1460ce93 100644 --- a/sys/net/ccn_lite/ccn-lite-relay.c +++ b/sys/net/ccn_lite/ccn-lite-relay.c @@ -413,19 +413,23 @@ void ccnl_riot_relay_start(void) ccnl_core_cleanup(theRelay); + mutex_lock(&theRelay->stop_lock); ccnl_free(theRelay); } void ccnl_riot_relay_helper_start(void) { unsigned long us = CCNL_CHECK_RETRANSMIT_USEC; + mutex_lock(&theRelay->stop_lock); while (!theRelay->halt_flag) { - vtimer_usleep(us); - mutex_lock(&theRelay->global_lock); ccnl_run_events(); mutex_unlock(&theRelay->global_lock); + + vtimer_usleep(us); } + + mutex_unlock(&theRelay->stop_lock); } // eof diff --git a/sys/net/ccn_lite/ccnl-core.h b/sys/net/ccn_lite/ccnl-core.h index 926d2b38900122c19d56df92df655a9a7975edd9..0f2d6c777b2df362e5d2496802aca6848ecfeaa7 100644 --- a/sys/net/ccn_lite/ccnl-core.h +++ b/sys/net/ccn_lite/ccnl-core.h @@ -107,6 +107,7 @@ struct ccnl_relay_s { int riot_pid; int riot_helper_pid; mutex_t global_lock; + mutex_t stop_lock; }; struct ccnl_buf_s {