diff options
author | Jeremy Allison <jra@samba.org> | 2011-07-07 14:59:41 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2011-07-08 01:14:53 +0200 |
commit | 8dc7029561b4d2e02b1f12583b7b871fd4d2ba14 (patch) | |
tree | eae69cfe1317e08b390365451df97a92d8d73892 /source3/smbd/smb2_server.c | |
parent | eea210eba7c20e6d04b13cf8ccd3011ee7c99157 (diff) | |
download | samba-8dc7029561b4d2e02b1f12583b7b871fd4d2ba14.tar.gz samba-8dc7029561b4d2e02b1f12583b7b871fd4d2ba14.tar.bz2 samba-8dc7029561b4d2e02b1f12583b7b871fd4d2ba14.zip |
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
Diffstat (limited to 'source3/smbd/smb2_server.c')
-rw-r--r-- | source3/smbd/smb2_server.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index 90f4767203..5882572162 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -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(); + } } |