1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-26 01:49:31 +03:00

r23589: Ensure we will always release any timeout handler

on fsp close or removal of oplock. Mulitple removals
are safe.
Jeremy.
(This used to be commit 6de0970704)
This commit is contained in:
Jeremy Allison
2007-06-22 17:19:08 +00:00
committed by Gerald (Jerry) Carter
parent 32a3c30627
commit 08a9de8927
2 changed files with 7 additions and 6 deletions

View File

@ -439,6 +439,9 @@ void file_free(files_struct *fsp)
TALLOC_FREE(fsp->notify);
}
/* Ensure this event will never fire. */
TALLOC_FREE(fsp->oplock_timeout);
bitmap_clear(file_bmap, fsp->fnum - FILE_HANDLE_OFFSET);
files_used--;

View File

@ -152,6 +152,8 @@ void release_file_oplock(files_struct *fsp)
fsp->sent_oplock_break = NO_BREAK_SENT;
flush_write_cache(fsp, OPLOCK_RELEASE_FLUSH);
TALLOC_FREE(fsp->oplock_timeout);
}
/****************************************************************************
@ -341,12 +343,8 @@ static void oplock_timeout_handler(struct event_context *ctx,
{
files_struct *fsp = (files_struct *)private_data;
/* Ensure we always remove this event. */
if (fsp->oplock_timeout != NULL) {
/* Remove the timed event handler. */
TALLOC_FREE(fsp->oplock_timeout);
fsp->oplock_timeout = NULL;
}
/* Remove the timed event handler. */
TALLOC_FREE(fsp->oplock_timeout);
DEBUG(0, ("Oplock break failed for file %s -- replying anyway\n", fsp->fsp_name));
global_client_failed_oplock_break = True;
remove_oplock(fsp);