/* Log data and errors */
if(sm->sm_type == SMT_PACKET) {
th_pkt_t *pkt = sm->sm_data;
- s->ths_total_err += pkt->pkt_err;
+ atomic_add(&s->ths_total_err, pkt->pkt_err);
if (pkt->pkt_payload)
subscription_add_bytes_in(s, pkt->pkt_payload->pb_size);
} else if(sm->sm_type == SMT_MPEGTS) {
pktbuf_t *pb = sm->sm_data;
- s->ths_total_err += pb->pb_err;
+ atomic_add(&s->ths_total_err, pb->pb_err);
subscription_add_bytes_in(s, pb->pb_size);
}
s->ths_hostname = hostname ? strdup(hostname) : NULL;
s->ths_username = username ? strdup(username) : NULL;
s->ths_client = client ? strdup(client) : NULL;
- s->ths_total_err = 0;
s->ths_output = st;
s->ths_flags = flags;
s->ths_timeout = pro ? pro->pro_timeout : 0;
s->ths_postpone = subscription_postpone;
s->ths_postpone_end = mclk() + sec2mono(s->ths_postpone);
+ atomic_set(&s->ths_total_err, 0);
if (s->ths_prch)
s->ths_weight = profile_chain_weight(s->ths_prch, weight);
htsmsg_add_u32(m, "id", s->ths_id);
htsmsg_add_u32(m, "start", s->ths_start);
- htsmsg_add_u32(m, "errors", s->ths_total_err);
+ htsmsg_add_u32(m, "errors", atomic_get(&s->ths_total_err));
const char *state;
switch(s->ths_state) {