BUG: vfs-cifs hangs from windows explorer: access denied: cause
write size
Amin Azez
azez at ufomechanic.net
Thu Nov 29 12:19:36 GMT 2007
Well this is the patch that proves the bug; sadly the client doesn't
take the hint, and keeps sending large writes, but at least the files
get saved.
I/we still need to work out how to propagate the real limit.
I think we ought to have this patch as a safety net; and if not the
solution, at least the warning.
Sam
-------------- next part --------------
diff --git a/source/ntvfs/cifs/vfs_cifs.c b/source/ntvfs/cifs/vfs_cifs.c
index bd1997f..f34633c 100644
--- a/source/ntvfs/cifs/vfs_cifs.c
+++ b/source/ntvfs/cifs/vfs_cifs.c
@@ -673,6 +673,17 @@ static NTSTATUS cvfs_write(struct ntvfs_module_context *ntvfs,
}
SETUP_FILE;
+ /* If the write is too big, then reduce it, the response says how much
+ was written anyway... Session negotiation time should set the client
+ limit to something matching the proxied server */
+ if (io->generic.in.count >
+ private->tree->session->transport->negotiate.max_xmit) {
+ DEBUG(1,("Client sending too-big write sized %d, negotiated limit %d\n",
+ io->generic.in.count,
+ private->tree->session->transport->negotiate.max_xmit));
+ io->generic.in.count=private->tree->session->transport->negotiate.max_xmit;
+ }
+
if (!(req->async_states->state & NTVFS_ASYNC_STATE_MAY_ASYNC)) {
return smb_raw_write(private->tree, io);
}
More information about the samba-technical
mailing list