Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
This reorganizes smbd_smb2_request_dispatch to have a central exit point,
and use the normal profiling macros.
Signed-off-by: Jeremy Allison <jra@samba.org>
|
|
A performance counter was added for every base type of SMB2 op.
|
|
response, don't add more in the final return.
Jeremy.
|
|
crashes when
XX_send functions set async to stop interim replies being sent.
Jeremy.
|
|
Based on code from Ira Cooper <samba@ira.wakeful.net>, and also
advice on refactoring the patch into a function call. outbuf vectors
can be reallocated by smb2 processing code, so when returning interim
responses we must not make assumptions about vector size.
Jeremy
|
|
Code for dup_smb2_req() was duplicating the wrong vector (i, instead
of i+2) when returning a non-minimal SMB2 response.
|
|
now we don't remove them in the talloc destructor.
Jeremy.
|
|
A create call comes in, goes async (on the oplock request).
At a later time (just before a cancel request is received)
it completes, and goes through smbd_smb2_request_reply() to
send the reply to the create call.
However, the output socket queue is full, so when
tstream_writev_queue_send() is called from smbd_smb2_request_reply(),
the smb2req stays on the "being processed" queue on
sconn->smb2.requests, as only when tstream_writev_queue_send() completes
is smbd_smb2_request_writev_done() get called, which will TALLOC_FREE
the smb2req (and thus take if off the queue).
The cancel comes in, gets processed and looks through the
requests on the queue, and BANG - hits the smb2req that
has already been processed and is outgoing....
Remove the request from the queue once
tstream_writev_queue_send() is called and not in the talloc
destructor function.
Jeremy.
|
|
64-bit Vista client
It turns out that the persistent handles are used by the Microsoft
redirector to index files on oplock break requests. So even if we
don't do durable handles (yet) we must set the persistent handle
on create. For now just use the same handle value as we use for
volatile.
Jeremy.
|
|
spec required).
Jeremy.
|
|
next :-).
Jeremy.
|
|
Jeremy.
|
|
Jeremy.
|
|
Seems to work but needs more tests (to be added).
Jeremy.
|
|
Get the reply flags correct.
Jeremy.
|
|
Makes SMB2Create call re-entrant internally.
Now this infrastructure is in place, oplocks will follow shortly.
Tested with Win7 client and with W2K8R2.
Jeremy.
|
|
area, smbd_smb2_request_error_ex() must call smbd_smb2_request_done_ex() in order to do the padding correctly on compound replies.
Jeremy.
|
|
alloc on SMB2 error packet. Always use talloc_zero_array on out vectors - fixes valgrind errors in tevent writes.
Jeremy.
|
|
Jeremy.
|
|
Guenther
|
|
Don't free the cancelled SMB2 req early, let the cancelation
function take care of it. Return a NT_STATUS_CANCELLED when
we find and cancel a request. Fix our SMB2 error returns to
correctly set the structuresize to 9, and add the expected
zero byte (see section 2.2.2 in the SMB2 spec.).
This causes Samba to pass the test program in this bug report
that W2K8R2 fails (heh heh :-). This is because we always cause
compound requests to get to a cancelation point before dealing
with a cancel request.
Jeremy.
|
|
right.
Cause us to match W2K8R2 by sending an interim compound reply
followed by a async reply.
Jeremy.
|
|
right.
Gets us handling SMB2 compound async requests similar to W2K8R2
(and triggers the same client bug in the Win7 redirector). Great
thanks to Ira Cooper <samba@ira.wakeful.net> for helping with
this and to Metze for the wonderful async framework. The one
thing I need to fix to make us identical to W2K8R2 is that
when a compound request goes async at the end W2K8R2 splits
the replies up into a compound non-async reply followed by
a separate async reply. Currently we're doing the whole thing
in a compound reply.
Jeremy.
|
|
Jeremy.
|
|
|
|
As these always call exit_server, make that part of the function.
Use _internal functions for the echo client.
Metze please check !
Jeremy.
|
|
and then return to the client the number of credits per operation
that they asked for. This is a more sensible algorithm than just
blindly returning "20" on every reply, although we will probably
still need more changes to this going forward.
Jeremy.
|
|
metze
|
|
metze
|
|
Maybe there's no dynamic part on the wire.
metze
|
|
This will hold code that's shared between source3 and source4.
metze
|
|
This should avoid confusion between smbd_server_connection
and connection_struct variables.
metze
|
|
I know those warnings are bogus, but both Coverity and gcc don't get it.
|
|
Because of 0 - 2 => 0xFFFFFFFE, we got EMSGSIZE
from the tstream layer. And terminate the transport
connection. Instead we should let the caller deal with
the invalid parameter, when checking the body size.
So the caller always gets at least a 2 byte body.
metze
|
|
metze
|
|
metze
|
|
metze
|
|
metze
|
|
metze
|
|
metze
|
|
metze
|
|
metze
|
|
metze
|
|
isn't checked first
metze
|
|
metze
|
|
...but also add the response flag.
metze
|
|
metze
|
|
metze
|
|
metze
|