1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-13 13:18:06 +03:00
Commit Graph

142 Commits

Author SHA1 Message Date
Volker Lendecke
1335059ff5 s3: Fix async smb handling
In cli_echo with more than one response we ended up with more than one read_smb
request. One from the call to cli_smb_req_set_pending called from
cli_smb_received. The other one from cli_smb_received itself. I don't really
see another way to deal with this than to hold the read_smb request in the
cli_state.

Metze, please check!

Volker
2011-07-27 00:47:45 +02:00
Stefan Metzmacher
13dbd5021b s3:libsmb: move cli_state->fd to cli_state->conn.fd
metze
2011-07-22 17:06:07 +02:00
Stefan Metzmacher
6d1757f189 s3:libsmb: make use of cli_state_disconnect()
metze
2011-07-22 17:06:07 +02:00
Stefan Metzmacher
103413da8b s3:libsmb: make use of cli_state_is_connected()
metze
2011-07-22 17:06:07 +02:00
Stefan Metzmacher
a11cc880ef s3:libsmb: move cli_state->outgoing to cli_state->conn.outgoing
metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Fri Jul 22 09:53:59 CEST 2011 on sn-devel-104
2011-07-22 09:53:59 +02:00
Stefan Metzmacher
9f2b3b0be6 s3:libsmb: move cli_state->pending to cli_state->conn.pending
metze
2011-07-22 08:44:08 +02:00
Stefan Metzmacher
8f41e54d53 s3:libsmb: move cli->cnum to cli->smb1.tid and hide it behind cli_state_[g|s]et_tid()
metze
2011-07-20 15:56:27 +02:00
Stefan Metzmacher
6c31b610e4 s3:libsmb: move cli->mid to cli->smb1.mid
metze
2011-07-20 15:48:59 +02:00
Stefan Metzmacher
a1c1f8c83b s3:libsmb: remove unused cli_smb_inbuf()
metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Wed Jul 13 01:19:51 CEST 2011 on sn-devel-104
2011-07-13 01:19:51 +02:00
Stefan Metzmacher
235aedae50 s3:libsmb: don't use the cli->inbuf to store the last error
We keep the raw error in cli->raw_status now, until we fixed all
caller to get the NTSTATUS from the function calls.

metze
2011-07-08 14:09:09 +02:00
Volker Lendecke
f0ff6f390a Use tevent_req_oom
This fixes a few Coverity errors
2011-06-20 12:33:24 +02:00
Stefan Metzmacher
3dd1ebd21e s3:libsmb/async_smb: add helpers to get and set the seqnum for signing
This will be used for correct signing in [nt]trans[2][s] requests.

metze
2011-06-10 19:27:05 +02:00
Stefan Metzmacher
a25936f1b1 s3:libsmb/async_smb: don't remove pending requests if the mid is set
If the mid was set explicitly, it means the request expects more than
one reply, so leave it in the pending array.

metze
2011-06-10 19:27:05 +02:00
Stefan Metzmacher
173fc258e4 s3:libsmb/async_smb: call cli_smb_req_unset_pending() instead of destructor directly
metze
2011-06-10 19:27:05 +02:00
Stefan Metzmacher
49cdf171a5 s3:libsmb/async_smb: let cli_smb_recv() initialize output values for one way requests
metze
2011-06-10 19:27:05 +02:00
Volker Lendecke
976a43c5aa s3: Remove a pointless if-statement
We are here only if we have more than one num_pending

Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Mon Jun  6 18:21:17 CEST 2011 on sn-devel-104
2011-06-06 18:21:17 +02:00
Rusty Russell
56e72337b0 lib/util/time.c: timeval_current_ofs_msec
Several places want "milliseconds from current time", and several were
simply doing "msec * 1000" which can (and does in one place) result in
a usec value over 1 a million.

Using a helper to do this is safer and more readable.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-06-01 10:38:47 +02:00
Volker Lendecke
1a393b7cd6 s3: Directly call common_encrypt_buffer in cli_smb_req_iov_send 2011-05-23 11:06:08 +02:00
Volker Lendecke
0645deb1b4 s3: Do central cli_set_error 2011-05-19 17:31:30 +02:00
Volker Lendecke
e7e43ba6a1 s3: Make read_smb_send/recv public 2011-05-19 13:46:47 +02:00
Rusty Russell
87e3542174 async_smb.c: convert cli->timeout properly
I have a test failure on my 32-bit Ubuntu system, in that
samba3.smbtorture_s3.plain(s3dc).LOCK9 immediately times out (rather than
waiting 5 seconds for the child).

Debugging revealed this code: timeout is in ms and is set to > 1000 in
various places.  The code dates from 2002, and other perturbations didn't
reveal why it breaks now, but fix it anyway.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Tue May 10 12:09:07 CEST 2011 on sn-devel-104
2011-05-10 12:09:07 +02:00
Günther Deschner
27022587e3 s3-libsmb: move protos to libsmb/proto.h
Guenther
2011-05-06 16:37:18 +02:00
Jeremy Allison
e131c94ac1 More const fixes for compiler warnings from the waf build. 2011-05-05 23:56:07 +02:00
Günther Deschner
50883cfeb4 s3-tevent: only include ../lib/util/tevent wrappers where needed.
Guenther

Autobuild-User: Günther Deschner <gd@samba.org>
Autobuild-Date: Fri Apr 29 14:00:30 CEST 2011 on sn-devel-104
2011-04-29 14:00:30 +02:00
Günther Deschner
2473c2fb1b s3-libsmb: put namequery headers to nmblib.h
We might find a better name for it and merge other namequery related things as
well here...

Guenther
2011-03-30 01:13:09 +02:00
Günther Deschner
6c8d802391 s3-libsmb: move smb encryption structs into own header.
Guenther
2011-03-16 10:11:16 +01:00
Volker Lendecke
02a74fd36d s3: Add async cli_session_request
This does not do the redirects, but I think that might be obsolete anyway
2010-12-22 16:39:15 +01:00
Volker Lendecke
e25ee6af8f s3: Make winbind recover from a signing error
When winbind sees a signing error on the smb connection to a DC (for whatever
reason, our bug, network glitch, etc) it should recover properly. The "old"
code in clientgen.c just closed the socket in this case. This is the right
thing to do, this connection is spoiled anyway. The new, async code did not do
this so far, which led to the code in winbindd_cm.c not detect that we need to
reconnect.
2010-11-18 14:48:18 +00:00
Günther Deschner
c7fe04abc7 s3-build: only include async headers where needed.
Guenther
2010-09-20 13:54:42 -07:00
Jim McDonough
0ec0095d1a s3-libsmbclient Convert dos error codes to NTstatus in async libsmbclient.
DOS error codes were being lost with the conversion to async
libsmbclient.  If we're passing around NTSTATUS internally,
let's just convert it when we get it.

DOS ACCESS_DENIED on nautilus was not prompting for other credentials,
because it was not being mapped.
2010-08-19 15:49:31 -04:00
Jeremy Allison
d447184ca8 If the timeout has been set to zero, don't register an end time.
The caller doesn't want a timeout.

Jeremy.
2010-03-30 13:45:53 -07:00
Volker Lendecke
9ad1b4cda0 s3: Fix the CHAIN1 torture test
I've tried to solve this just within cli_smb_recv(), but I could not find a way
to sanely determine when we are receiving the last entry in the chain just from
looking at the blob. This solves it in an a bit more brutal way...
2010-02-28 18:49:59 +01:00
Volker Lendecke
299d9c409d s3: Explicitly handle inbuf in cli_smb_oplock_break_waiter_done 2010-02-22 23:23:18 +01:00
Volker Lendecke
d122bfc064 s3: Add a talloc_move for the inbuf to cli_smb_recv 2010-02-22 23:23:18 +01:00
Volker Lendecke
65914ed819 s3: Avoid calling cli_alloc_mid twice in cli_smb_req_iov_send
I hate macros....
2010-02-21 20:42:39 +01:00
Björn Jacke
38be40f63c s3:async_smb: remove unused variable 2010-01-26 00:19:10 +01:00
Volker Lendecke
3f25fb5677 s3: NT_STATUS_MORE_PROCESSING_REQUIRED is a valid sesssetup return value 2010-01-03 11:38:22 +01:00
Volker Lendecke
47bee67c05 s3: Restore correct timeouts for SMB requests 2009-12-22 16:07:58 +01:00
Volker Lendecke
528c150d55 s3: Remove a pointless else branch 2009-12-22 14:08:08 +01:00
Volker Lendecke
b6f446ca35 s3: Move smb_splice_chain to smbd/process.c, its only user 2009-12-22 13:54:43 +01:00
Volker Lendecke
a8e02b591b Add "err_on_readability" to writev_send
A socket where the other side has closed only becomes readable. To catch
errors early when sitting in a pure writev, we need to also test for
readability.
2009-05-24 13:47:29 +02:00
Volker Lendecke
f140bf2e65 Fix broken pipe handling
Metze is right: If we have *any* error at the socket level, we just can
not continue.

Also, apply some defensive programming: With this async stuff someone else
might already have closed the socket.
2009-05-18 07:13:04 +02:00
Bo Yang
aa70e44cd0 s3: tevent_req_poll() loops forever when pipe is broken
Signed-off-by: Bo Yang <boyang@samba.org>
2009-05-19 01:13:36 +08:00
Stefan Metzmacher
b9f3a78169 s3:libsmb: move read_smb_send/recv() static in async_smb.c
metze
2009-05-13 18:27:50 +02:00
Stefan Metzmacher
ca6ec5ecd7 s3:libsmb: let cli_smb_chain_send() also return NTSTATUS
metze
2009-05-13 18:27:50 +02:00
Bo Yang
6ff09b323e s3:libsmb: return NT_STATUS_CONNECTION_INVALID if the fd is -1
This way we can destinguish between requests which failed
because the connection broke after they were triggered
and the requests which are started on an already broken
connection.

This also moves the check to cli_smb_req_iov_send()
where it really belongs.

metze
2009-05-13 18:27:41 +02:00
Bo Yang
05379f0125 s3: return proper error code in cli_smb_req_send
Signed-off-by: Bo Yang <boyang@samba.org>
2009-05-13 18:47:00 +08:00
Jeremy Allison
ad9d64ee1b Clean up assignments to iov_base, ensure it's always cast to void *. This should quieten some warnings with picky compilers on the buildfarm.
Jeremy.
2009-05-12 11:45:37 -07:00
Bo Yang
f8cc0e88fb s3: fix crash in winbindd 2009-04-29 09:50:41 +08:00
Volker Lendecke
64ce0e4645 Add async oplock waiter 2009-04-06 21:32:08 +02:00
Volker Lendecke
cb120b4df6 Never hand out 0xffff as a mid
This is used for oplock replies
2009-04-06 21:32:07 +02:00
Volker Lendecke
64067f9204 Remove async_req based async libsmb infrastructure 2009-04-06 21:32:07 +02:00
Volker Lendecke
8bdac3615a Add new async libsmb infrastructure
I know this is just yet another iteration, but I like this one much better than
the one that exists right now :-)

It will do trans and echo requests without a _recv helper and without
unnecessary memcpy().
2009-04-06 21:32:06 +02:00
Stefan Metzmacher
6af15943c6 s3:libsmb: use new simplified smb_signing code for the client side
We store the seqnum/mid mapping in the cli_request structure
for async requests and in the cli_state structure for sync calls.

We skip the signing check for oplock requests while waiting
for async requests coming in.

metze
2009-03-23 12:21:14 +01:00
Bo Yang
808928c24b Fix crash in async_smb.c 2009-03-20 09:56:15 +01:00
Volker Lendecke
c14b7e648b Split up async_req into a generic and a NTSTATUS specific part 2009-02-01 19:05:39 +01:00
Volker Lendecke
b99859b948 Make is_andx_req non-static 2009-01-31 11:09:39 +01:00
Volker Lendecke
c001b456cf Fix a valgrind error when the socket dies
Don't reference anything that might have been deleted in the async_req_error
call.
2009-01-28 16:18:15 +01:00
Volker Lendecke
27abf6731e struct async_req doesn't really need to carry an event_context 2009-01-03 19:07:57 +01:00
Volker Lendecke
ae1d6020f0 Fix setting smb_len for huge write&x calls 2008-12-19 18:15:30 +01:00
Volker Lendecke
fa5f11279b Add the cli_wct_ofs routine to calculate the offset for write&x 2008-12-19 18:12:44 +01:00
Volker Lendecke
13eefa7c43 Add a doxygen comment line I forgot to merge 2008-12-19 17:50:34 +01:00
Volker Lendecke
1f04d07db0 Convert cli_request->outbuf to uint8_t 2008-12-19 17:47:30 +01:00
Volker Lendecke
398ef0fb85 For large smbwrite&x, we need more than 64k bcc 2008-12-19 16:13:27 +01:00
Volker Lendecke
98c4055bcb Add some comments
If it takes more than 10 seconds to understand the code you've written yourself
less than a year ago, it's time for comments or refactoring. I couldn't find a
way to refactor that cleanly, so add comments :-)
2008-12-19 16:13:26 +01:00
Volker Lendecke
45ad3df140 Fix the padding calculation in smb_splice_chain for "bytes_padding!=0" 2008-12-19 14:53:29 +01:00
Volker Lendecke
4abdd3981e Pass "bytes_alignment" up through cli_request_send
This parameter makes smb_spice_chain add padding before the bytes field
2008-12-19 14:53:29 +01:00
Volker Lendecke
2fe7d5936a Prefer network writes over reads
If we really want to keep the pipe busy, we need to write everything we have as
early as possible, giving the kernel the chance to get rid of the buffers
quickly :-)
2008-12-19 13:46:52 +01:00
Volker Lendecke
ed25c6c287 Add a "bytes_padding" parameter to smb_splice_chain
For example open&x and write&x needs the bytes to be aligned relative to the
SMB header. In particular for write&x we should not have to move stuff around.
2008-12-08 22:09:33 +01:00
Volker Lendecke
f0bb53dd0f Factor out smb_splice_chain(), to be used by chain_reply() in smbd 2008-12-08 22:09:33 +01:00
Tim Prouty
16bbfc2262 Fixed "argument differ in signedness" warning on linux 2008-10-14 17:31:07 -07:00
Jeremy Allison
decd04d946 Ensure we handle signals correctly during the async calls.
Jeremy.
2008-10-09 15:40:00 -07:00
Volker Lendecke
eeac8d4fbe Remove a cast -- thanks metze 2008-09-17 17:45:17 +02:00
Volker Lendecke
ffbc38abe1 Factor out validate_smb_crypto
(This used to be commit 37fcc9dc46)
2008-09-12 23:09:17 +02:00
Volker Lendecke
ced409b5f7 Fix "make test" -- gna...
(This used to be commit c1d3ae80b5)
2008-09-12 22:29:56 +02:00
Volker Lendecke
d892b1c886 remove a pointless empty line
(This used to be commit fba250ece4)
2008-09-12 21:42:34 +02:00
Volker Lendecke
f8f1679bc4 Add a paranoia check on incoming PDUs
(This used to be commit 8b81b85200)
2008-09-12 21:42:34 +02:00
Volker Lendecke
2a93452994 Move setting the mid field in req->outbuf from _cork to _uncork
The async trans calls need this, as for secondary trans calls they have to
modify the MID from what cli_request_chain() gave us.
(This used to be commit c85de4b7b5)
2008-09-09 17:37:34 +02:00
Volker Lendecke
6ba8c105c5 Add utility function cli_in_chain()
This gives a hint whether a function is called from within the middle of a
chain. In particular the trans calls don't really like this.
(This used to be commit 4252b32db5)
2008-09-09 17:37:34 +02:00
Volker Lendecke
60255c3b2e Protect against a closed socket
(This used to be commit d6cb5fdafb)
2008-09-05 12:33:48 +02:00
Volker Lendecke
f912ac962a Do proper error handling if the socket is closed
(This used to be commit e5a27773f9)
2008-09-05 12:33:48 +02:00
Volker Lendecke
f294f51bf0 Remove cli_request_get()
req->private_data==NULL at this point is definitely a bug.
(This used to be commit ce3dc9f616)
2008-08-28 18:22:49 +02:00
Volker Lendecke
bb0fc9cfce Add cli_request->recv_helper
Necessary for requests with multiple replies
(This used to be commit cb2e338eb3)
2008-08-28 18:15:59 +02:00
Volker Lendecke
b054f14111 Activate code to enable chained requests
Add the CHAIN1 torture test
(This used to be commit 82992d74a9)
2008-08-28 18:15:59 +02:00
Volker Lendecke
65dcdf9c32 This adds the code to allow chained requests in libsmb/
This is not compiled yet, but it makes the patches much easier to read if it is
add in bulk.
(This used to be commit b4c539ba04)
2008-08-28 18:15:58 +02:00
Volker Lendecke
77d1b29e25 Move "struct cli_request" from client.h to async_smb.h
Also add some comments
(This used to be commit 2ecc311f78)
2008-08-28 17:53:37 +02:00
Volker Lendecke
128524930d Add cli_pull_reply
Along the lines of cli_request_send this abstracts away the smb-level buffer
handling when parsing replies we got from the server.
(This used to be commit 253134d3aa)
2008-08-28 17:53:37 +02:00
Volker Lendecke
2650207d4a Remove cli->event_ctx, pass it explicitly
Storing the event_context as permanent state in struct cli_state creates more
complex code than necessary IMO.
(This used to be commit debb37f703)
2008-08-28 17:53:37 +02:00
Volker Lendecke
58aa97c0d9 Refactoring: Add the routine cli_request_send()
cli_request_send() is supposed to bundle all generic SMB-header handling. This
makes cli_request_new static to async_smb.c.
(This used to be commit 7e73dd4e76)
2008-08-28 17:53:36 +02:00
Jim McDonough
b48ba00dc6 Prevent NT_STATUS 0xF1000000 errors from appearing when
dos errors are used and there is no error.  It should
be mapped directly to NT_STATUS_OK.  smbclient to older
servers didn't work.
(This used to be commit 78f009b7ef)
2008-08-14 11:22:46 +02:00
Volker Lendecke
464f74df2f Move inbuf handling to before the PDU handling
In an error case, correctly discard the offending PDU
(This used to be commit 0aa195b5d6)
2008-03-08 22:02:33 +01:00
Volker Lendecke
1ea0a5d0cd Add infrastructure to support async SMB requests
(This used to be commit e215330135)
2008-03-06 13:28:23 +01:00