From 4061b8db1bbdb53a0755277b1f0ceeccb6dc7eaa Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 4 Dec 2014 10:14:23 -0800 Subject: s3: leases : Cope with renaming leased open files. Signed-off-by: Jeremy Allison Reviewed-by: Stefan Metzmacher --- source3/locking/locking.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'source3/locking') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index d144f5c75e..dd73f683af 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -471,7 +471,7 @@ bool rename_share_filename(struct messaging_context *msg_ctx, size_t sn_len; size_t msg_len; char *frm = NULL; - int i; + uint32_t i; bool strip_two_chars = false; bool has_stream = smb_fname_dst->stream_name != NULL; struct server_id self_pid = messaging_server_id(msg_ctx); @@ -565,6 +565,29 @@ bool rename_share_filename(struct messaging_context *msg_ctx, (uint8 *)frm, msg_len); } + for (i=0; inum_leases; i++) { + /* Update the filename in leases_db. */ + NTSTATUS status; + struct share_mode_lease *l; + + l = &d->leases[i]; + + status = leases_db_rename(&l->client_guid, + &l->lease_key, + &id, + d->base_name, + d->stream_name); + if (!NT_STATUS_IS_OK(status)) { + /* Any error recovery possible here ? */ + DEBUG(1,("Failed to rename lease key for " + "renamed file %s:%s. %s\n", + d->base_name, + d->stream_name, + nt_errstr(status))); + continue; + } + } + return True; } -- cgit