+ if (audiod_status == AUDIOD_OFF) {
+ if (!st->ct)
+ return;
+ if (st->ct->task.error >= 0) {
+ st->ct->task.error = -E_AUDIOD_OFF;
+ return;
+ }
+ if (st->ct->task.error != -E_TASK_UNREGISTERED)
+ return;
+ close_stat_pipe();
+ st->clock_diff_count = conf.clock_diff_count_arg;
+ return;
+ }
+ if (st->ct) {
+ unsigned bytes_left;
+ if (st->ct->task.error < 0) {
+ if (st->ct->task.error != -E_TASK_UNREGISTERED)
+ return;
+ close_stat_pipe();
+ return;
+ }
+ if (st->ct->status != CL_RECEIVING)
+ return;
+ bytes_left = for_each_line(st->ct->buf, st->ct->loaded,
+ &check_stat_line, NULL);
+ if (st->ct->loaded != bytes_left) {
+ st->last_status_read = *now;
+ st->ct->loaded = bytes_left;
+ } else {
+ struct timeval diff;
+ tv_diff(now, &st->last_status_read, &diff);
+ if (diff.tv_sec > 61)
+ st->ct->task.error = -E_STATUS_TIMEOUT;
+ }
+ return;
+ }
+ if (tv_diff(now, &st->restart_barrier, NULL) < 0)