From 0bf88b87f76824cb01ce7cbf0958c10bd7eb4ba5 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 1 Nov 2012 13:53:27 +0100 Subject: [PATCH] s3:smbd: pass the current time to make_connection[_smb1]() Otherwise smbstatus reports the wrong time for tree connects. Signed-off-by: Stefan Metzmacher Reviewed-by: Christian Ambach Autobuild-User(master): Christian Ambach Autobuild-Date(master): Mon Nov 5 20:43:23 CET 2012 on sn-devel-104 (cherry picked from commit 3d9361612d30725a3d14fa4d3a085256a91800db) --- source3/smbd/proto.h | 1 + source3/smbd/reply.c | 5 +++-- source3/smbd/service.c | 9 +++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index c80ef14..221499c 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 4423e8e..8db9c62 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 bb28fbf..2214ac0 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); } -- 1.7.9.5