diff options
author | Jeremy Allison <jra@samba.org> | 2014-12-04 10:14:23 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2014-12-05 18:37:10 +0100 |
commit | 4061b8db1bbdb53a0755277b1f0ceeccb6dc7eaa (patch) | |
tree | 12418f44d9d0c92085b85fcf9e8d1d4779d8cb18 /source3/locking | |
parent | 59cd638a1d241fae037d45e9ed1f029f65ac9080 (diff) | |
download | samba-4061b8db1bbdb53a0755277b1f0ceeccb6dc7eaa.tar.gz samba-4061b8db1bbdb53a0755277b1f0ceeccb6dc7eaa.tar.xz samba-4061b8db1bbdb53a0755277b1f0ceeccb6dc7eaa.zip |
s3: leases : Cope with renaming leased open files.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3/locking')
-rw-r--r-- | source3/locking/locking.c | 25 |
1 files changed, 24 insertions, 1 deletions
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; i<d->num_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; } |