summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-07-07 19:37:14 +0200
committerStefan Metzmacher <metze@samba.org>2008-07-07 20:59:19 +0200
commit5e4b8d6e5142617350bf9482b007f972a34bf942 (patch)
treeb51f976ed0fd47c3403c72822f9b12a621ca6613
parent997f539bf568f555f9e7a7f51de23cd13c732b1c (diff)
downloadsamba-5e4b8d6e5142617350bf9482b007f972a34bf942.tar.gz
samba-5e4b8d6e5142617350bf9482b007f972a34bf942.tar.bz2
samba-5e4b8d6e5142617350bf9482b007f972a34bf942.zip
smb_server/smb: prepare multi fragmented nttrans requests
metze (This used to be commit 36a39b92d732a682e38ad4b3f733951fee4757ed)
-rw-r--r--source4/smb_server/smb/trans2.c6
-rw-r--r--source4/smb_server/smb_server.h5
2 files changed, 7 insertions, 4 deletions
diff --git a/source4/smb_server/smb/trans2.c b/source4/smb_server/smb/trans2.c
index 6dd69de436..0e820cfe0e 100644
--- a/source4/smb_server/smb/trans2.c
+++ b/source4/smb_server/smb/trans2.c
@@ -1036,7 +1036,7 @@ static NTSTATUS trans2_backend(struct smbsrv_request *req, struct trans_op *op)
return NT_STATUS_FOOBAR;
}
-static int smbsrv_trans_partial_destructor(struct smbsrv_trans_partial *tp)
+int smbsrv_trans_partial_destructor(struct smbsrv_trans_partial *tp)
{
DLIST_REMOVE(tp->req->smb_conn->trans_partial, tp);
return 0;
@@ -1063,7 +1063,7 @@ static void reply_trans_continue(struct smbsrv_request *req, uint8_t command,
tp = talloc(req, struct smbsrv_trans_partial);
tp->req = req;
- tp->trans = trans;
+ tp->u.trans = trans;
tp->command = command;
DLIST_ADD(req->smb_conn->trans_partial, tp);
@@ -1323,7 +1323,7 @@ static void reply_transs_generic(struct smbsrv_request *req, uint8_t command)
return;
}
- trans = tp->trans;
+ trans = tp->u.trans;
param_total = SVAL(req->in.vwv, VWV(0));
data_total = SVAL(req->in.vwv, VWV(1));
diff --git a/source4/smb_server/smb_server.h b/source4/smb_server/smb_server.h
index ac3e0f3bd3..dd4ec3281b 100644
--- a/source4/smb_server/smb_server.h
+++ b/source4/smb_server/smb_server.h
@@ -355,8 +355,11 @@ struct smbsrv_connection {
struct smbsrv_trans_partial {
struct smbsrv_trans_partial *next, *prev;
struct smbsrv_request *req;
- struct smb_trans2 *trans;
uint8_t command;
+ union {
+ struct smb_trans2 *trans;
+ struct smb_nttrans *nttrans;
+ } u;
} *trans_partial;
/* configuration parameters */