summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2012-11-01 13:53:27 +0100
committerChristian Ambach <ambi@samba.org>2012-11-05 20:43:23 +0100
commit3d9361612d30725a3d14fa4d3a085256a91800db (patch)
tree7409ec0b94732258caf04218f7243b739924c59e
parent157de6c9878e804b963df3c7c834aa38d1fa7ac3 (diff)
downloadsamba-3d9361612d30725a3d14fa4d3a085256a91800db.tar.gz
samba-3d9361612d30725a3d14fa4d3a085256a91800db.tar.bz2
samba-3d9361612d30725a3d14fa4d3a085256a91800db.zip
s3:smbd: pass the current time to make_connection[_smb1]()
Otherwise smbstatus reports the wrong time for tree connects. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Christian Ambach <ambi@samba.org> Autobuild-User(master): Christian Ambach <ambi@samba.org> Autobuild-Date(master): Mon Nov 5 20:43:23 CET 2012 on sn-devel-104
-rw-r--r--source3/smbd/proto.h1
-rw-r--r--source3/smbd/reply.c5
-rw-r--r--source3/smbd/service.c9
3 files changed, 9 insertions, 6 deletions
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index c80ef14a01..221499cead 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -985,6 +985,7 @@ connection_struct *make_connection_smb2(struct smbd_server_connection *sconn,
const char *pdev,
NTSTATUS *pstatus);
connection_struct *make_connection(struct smbd_server_connection *sconn,
+ NTTIME now,
const char *service_in,
const char *pdev, uint64_t vuid,
NTSTATUS *status);
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 4423e8e190..8db9c623f7 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -666,6 +666,7 @@ void reply_tcon(struct smb_request *req)
const char *p;
TALLOC_CTX *ctx = talloc_tos();
struct smbd_server_connection *sconn = req->sconn;
+ NTTIME now = timeval_to_nttime(&req->request_time);
START_PROFILE(SMBtcon);
@@ -695,7 +696,7 @@ void reply_tcon(struct smb_request *req)
service = service_buf;
}
- conn = make_connection(sconn,service,dev,
+ conn = make_connection(sconn, now, service, dev,
req->vuid,&nt_status);
req->conn = conn;
@@ -911,7 +912,7 @@ void reply_tcon_and_X(struct smb_request *req)
session_key_updated = true;
}
- conn = make_connection(sconn, service, client_devicetype,
+ conn = make_connection(sconn, now, service, client_devicetype,
req->vuid, &nt_status);
req->conn =conn;
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index bb28fbfcc8..2214ac0a2d 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -922,13 +922,13 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
****************************************************************************/
static connection_struct *make_connection_smb1(struct smbd_server_connection *sconn,
+ NTTIME now,
int snum, struct user_struct *vuser,
const char *pdev,
NTSTATUS *pstatus)
{
struct smbXsrv_tcon *tcon;
NTSTATUS status;
- NTTIME now = 0;
struct connection_struct *conn;
status = smb1srv_tcon_create(sconn->conn, now, &tcon);
@@ -1025,6 +1025,7 @@ connection_struct *make_connection_smb2(struct smbd_server_connection *sconn,
****************************************************************************/
connection_struct *make_connection(struct smbd_server_connection *sconn,
+ NTTIME now,
const char *service_in,
const char *pdev, uint64_t vuid,
NTSTATUS *status)
@@ -1078,7 +1079,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn,
}
DEBUG(5, ("making a connection to [homes] service "
"created at session setup time\n"));
- return make_connection_smb1(sconn,
+ return make_connection_smb1(sconn, now,
vuser->homes_snum,
vuser,
dev, status);
@@ -1087,7 +1088,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn,
lp_servicename(talloc_tos(), vuser->homes_snum))) {
DEBUG(5, ("making a connection to 'homes' service [%s] "
"created at session setup time\n", service_in));
- return make_connection_smb1(sconn,
+ return make_connection_smb1(sconn, now,
vuser->homes_snum,
vuser,
dev, status);
@@ -1139,7 +1140,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn,
DEBUG(5, ("making a connection to 'normal' service %s\n", service));
- return make_connection_smb1(sconn, snum, vuser,
+ return make_connection_smb1(sconn, now, snum, vuser,
dev, status);
}