1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

Fix bug #8293 - SMB2 doesn't rotate the log files often enough.

Move the num_requests field out of the smb1 struct into the generic
struct smbd_server_connection struct. Use it to count SMB2 requests
as well as SMB1 and ensure that check_log_size() is called every 50
SMB2 requests.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Fri Jul  8 01:14:53 CEST 2011 on sn-devel-104
This commit is contained in:
Jeremy Allison 2011-07-07 14:59:41 -07:00
parent eea210eba7
commit 8dc7029561
3 changed files with 21 additions and 3 deletions

View File

@ -483,6 +483,8 @@ struct smbd_server_connection {
int dirhandles_open;
} searches;
uint64_t num_requests;
struct {
struct fd_event *fde;
@ -510,7 +512,6 @@ struct smbd_server_connection {
int ref_count;
} echo_handler;
uint64_t num_requests;
struct {
bool encrypted_passwords;
bool spnego;

View File

@ -1621,7 +1621,7 @@ static void process_smb(struct smbd_server_connection *sconn,
sconn->trans_num++;
done:
sconn->smb1.num_requests++;
sconn->num_requests++;
/* The timeout_processing function isn't run nearly
often enough to implement 'max log size' without
@ -1630,7 +1630,7 @@ done:
level 10. Checking every 50 SMBs is a nice
tradeoff of performance vs log file size overrun. */
if ((sconn->smb1.num_requests % 50) == 0 &&
if ((sconn->num_requests % 50) == 0 &&
need_to_check_log_size()) {
change_to_root_user();
check_log_size();

View File

@ -2234,6 +2234,8 @@ void smbd_smb2_first_negprot(struct smbd_server_connection *sconn,
return;
}
tevent_req_set_callback(subreq, smbd_smb2_request_incoming, sconn);
sconn->num_requests++;
}
static void smbd_smb2_request_incoming(struct tevent_req *subreq)
@ -2290,4 +2292,19 @@ next:
return;
}
tevent_req_set_callback(subreq, smbd_smb2_request_incoming, sconn);
sconn->num_requests++;
/* The timeout_processing function isn't run nearly
often enough to implement 'max log size' without
overrunning the size of the file by many megabytes.
This is especially true if we are running at debug
level 10. Checking every 50 SMB2s is a nice
tradeoff of performance vs log file size overrun. */
if ((sconn->num_requests % 50) == 0 &&
need_to_check_log_size()) {
change_to_root_user();
check_log_size();
}
}