summaryrefslogtreecommitdiff
path: root/source3/smbd/blocking.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2012-02-28 00:56:10 +0100
committerVolker Lendecke <vl@samba.org>2012-03-10 15:34:11 +0100
commit3b2c9bebc0aa08fe9a65afe5870bea490c5fb33a (patch)
tree9262ee255b695b709d160e32ef78aeb6f723326c /source3/smbd/blocking.c
parentc9870a62f5d8865e67ae519db3f8e890afb6ee70 (diff)
downloadsamba-3b2c9bebc0aa08fe9a65afe5870bea490c5fb33a.tar.gz
samba-3b2c9bebc0aa08fe9a65afe5870bea490c5fb33a.tar.bz2
samba-3b2c9bebc0aa08fe9a65afe5870bea490c5fb33a.zip
s3: Replace chain_reply
This is a new implementation of our andx handling code. The old code was quite involved in that it was called from within the reply_ handlers. This leads to pretty complex faking of smb_request structures to give them the same environment, independent of whether they are called directly or from within chain_reply. chain_reply needs to go because it blocks really async handling of chained requests.
Diffstat (limited to 'source3/smbd/blocking.c')
-rw-r--r--source3/smbd/blocking.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c
index ac878926d1..d512b960b0 100644
--- a/source3/smbd/blocking.c
+++ b/source3/smbd/blocking.c
@@ -282,7 +282,14 @@ static void reply_lockingX_success(struct blocking_lock_record *blr)
* that here and must set up the chain info manually.
*/
- chain_reply(req);
+ if (!srv_send_smb(req->sconn,
+ (char *)req->outbuf,
+ true, req->seqnum+1,
+ IS_CONN_ENCRYPTED(req->conn)||req->encrypted,
+ &req->pcd)) {
+ exit_server_cleanly("construct_reply: srv_send_smb failed.");
+ }
+
TALLOC_FREE(req->outbuf);
}