diff --git a/src/applet.c b/src/applet.c index 197140fb8..fedd05c57 100644 --- a/src/applet.c +++ b/src/applet.c @@ -253,14 +253,14 @@ struct task *task_run_applet(struct task *t, void *context, unsigned int state) } /* measure the call rate and check for anomalies when too high */ - rate = update_freq_ctr(&app->call_rate, 1); - if (rate >= 100000 && app->call_rate.prev_ctr && // looped more than 100k times over last second - ((b_size(sc_ib(sc)) && sc->flags & SC_FL_NEED_BUFF) || // asks for a buffer which is present + if (((b_size(sc_ib(sc)) && sc->flags & SC_FL_NEED_BUFF) || // asks for a buffer which is present (b_size(sc_ib(sc)) && !b_data(sc_ib(sc)) && sc->flags & SC_FL_NEED_ROOM) || // asks for room in an empty buffer (b_data(sc_ob(sc)) && sc_is_send_allowed(sc)) || // asks for data already present (!b_data(sc_ib(sc)) && b_data(sc_ob(sc)) && // didn't return anything ... (sc_oc(sc)->flags & (CF_WRITE_PARTIAL|CF_SHUTW_NOW)) == CF_SHUTW_NOW))) { // ... and left data pending after a shut - stream_dump_and_crash(&app->obj_type, read_freq_ctr(&app->call_rate)); + rate = update_freq_ctr(&app->call_rate, 1); + if (rate >= 100000 && app->call_rate.prev_ctr) // looped like this more than 100k times over last second + stream_dump_and_crash(&app->obj_type, read_freq_ctr(&app->call_rate)); } sc->app_ops->wake(sc);