From 19f49de92e176495f3e0640502d4a330eacbf59e Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 7 Apr 2008 09:21:19 +0200 Subject: smbd: make it possible to disable get_file_infos() on searches metze (This used to be commit 404a865a34c3a7c67131b3f99e92c11b2abe3e39) --- source3/smbd/trans2.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'source3/smbd/trans2.c') diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 9e56434d5c..05e8375d05 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -1207,6 +1207,7 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, int info_level, int requires_resume_key, bool dont_descend, + bool ask_sharemode, char **ppdata, char *base_data, char *end_data, @@ -1238,7 +1239,6 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, bool needslash = ( conn->dirpath[strlen(conn->dirpath) -1] != '/'); bool check_mangled_names = lp_manglednames(conn->params); char mangled_name[13]; /* mangled 8.3 name. */ - struct timespec write_time_ts; *out_of_space = False; *got_exact_match = False; @@ -1398,10 +1398,15 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx, adate_ts = get_atimespec(&sbuf); create_date_ts = get_create_timespec(&sbuf,lp_fake_dir_create_times(SNUM(conn))); - get_file_infos(vfs_file_id_from_sbuf(conn, &sbuf), - NULL, &write_time_ts); - if (!null_timespec(write_time_ts)) { - mdate_ts = write_time_ts; + if (ask_sharemode) { + struct timespec write_time_ts; + struct file_id fileid; + + fileid = vfs_file_id_from_sbuf(conn, &sbuf); + get_file_infos(fileid, NULL, &write_time_ts); + if (!null_timespec(write_time_ts)) { + mdate_ts = write_time_ts; + } } if (lp_dos_filetime_resolution(SNUM(conn))) { @@ -1873,6 +1878,7 @@ static void call_trans2findfirst(connection_struct *conn, SMB_STRUCT_STAT sbuf; struct ea_list *ea_list = NULL; NTSTATUS ntstatus = NT_STATUS_OK; + bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); TALLOC_CTX *ctx = talloc_tos(); if (total_params < 13) { @@ -2069,6 +2075,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd req->flags2, mask,dirtype,info_level, requires_resume_key,dont_descend, + ask_sharemode, &p,pdata,data_end, space_remaining, &out_of_space, &got_exact_match, @@ -2205,6 +2212,7 @@ static void call_trans2findnext(connection_struct *conn, int space_remaining; struct ea_list *ea_list = NULL; NTSTATUS ntstatus = NT_STATUS_OK; + bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); TALLOC_CTX *ctx = talloc_tos(); if (total_params < 13) { @@ -2413,6 +2421,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd req->flags2, mask,dirtype,info_level, requires_resume_key,dont_descend, + ask_sharemode, &p,pdata,data_end, space_remaining, &out_of_space, &got_exact_match, -- cgit