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:
committed by
Gerald (Jerry) Carter
parent
32a3c30627
commit
08a9de8927
@ -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--;
|
||||
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user