mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
Fix bug 6828 - infinite timeout occurs when byte lock held outside of samba
Jeremy.
This commit is contained in:
parent
49b23fe248
commit
bb7cf9ad23
@ -47,6 +47,22 @@ static void brl_timeout_fn(struct event_context *event_ctx,
|
|||||||
process_blocking_lock_queue();
|
process_blocking_lock_queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
We need a version of timeval_min that treats zero timval as infinite.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static struct timeval timeval_brl_min(const struct timeval *tv1,
|
||||||
|
const struct timeval *tv2)
|
||||||
|
{
|
||||||
|
if (timeval_is_zero(tv1)) {
|
||||||
|
return *tv2;
|
||||||
|
}
|
||||||
|
if (timeval_is_zero(tv2)) {
|
||||||
|
return *tv1;
|
||||||
|
}
|
||||||
|
return timeval_min(tv1, tv2);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
After a change to blocking_lock_queue, recalculate the timed_event for the
|
After a change to blocking_lock_queue, recalculate the timed_event for the
|
||||||
next processing.
|
next processing.
|
||||||
@ -70,19 +86,13 @@ static bool recalc_brl_timeout(void)
|
|||||||
*/
|
*/
|
||||||
if (blr->blocking_pid == 0xFFFFFFFF) {
|
if (blr->blocking_pid == 0xFFFFFFFF) {
|
||||||
struct timeval psx_to = timeval_current_ofs(10, 0);
|
struct timeval psx_to = timeval_current_ofs(10, 0);
|
||||||
next_timeout = timeval_min(&next_timeout, &psx_to);
|
next_timeout = timeval_brl_min(&next_timeout, &psx_to);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeval_is_zero(&next_timeout)) {
|
next_timeout = timeval_brl_min(&next_timeout, &blr->expire_time);
|
||||||
next_timeout = blr->expire_time;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
next_timeout = timeval_min(&next_timeout,
|
|
||||||
&blr->expire_time);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeval_is_zero(&next_timeout)) {
|
if (timeval_is_zero(&next_timeout)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user