Under heavy load some transactions time out after
fr_timer expires even though 180 response
was received and forwarded to the caller.
((s_ticks_t)(eol-(ticks+timeout))<0)) ){ /* fr after end of life */
timeout=(((s_ticks_t)(eol-ticks))>0)?(eol-ticks):1; /* expire now */
}
- rb->fr_expire=ticks+timeout;
+ atomic_cmpxchg_int((void*)&rb->fr_expire, 0, (int)(ticks+timeout));
#ifdef TIMER_DEBUG
ret=timer_add_safe(&(rb)->timer, (timeout<retr)?timeout:retr,
file, func, line);