mirror of
https://github.com/samba-team/samba.git
synced 2025-08-04 08:22:08 +03:00
r15088: Remove all time() and gettimeofday() calls out of the mainline
packet processing code. Only do these when needed (ie. in the
idle timeout code). We drop an unneccessary global here too.
Jeremy.
(This used to be commit 8272a5ab06
)
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
a2e2032d08
commit
010c725b36
@ -23,8 +23,6 @@
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
extern struct timeval smb_last_time;
|
||||
|
||||
#undef DBGC_CLASS
|
||||
#define DBGC_CLASS DBGC_AUTH
|
||||
|
||||
@ -87,7 +85,7 @@ static BOOL logon_hours_ok(struct samu *sampass)
|
||||
return True;
|
||||
}
|
||||
|
||||
lasttime = (time_t)smb_last_time.tv_sec;
|
||||
lasttime = time(NULL);
|
||||
utctime = gmtime(&lasttime);
|
||||
|
||||
/* find the corresponding byte and bit */
|
||||
|
@ -567,6 +567,7 @@ typedef struct connection_struct {
|
||||
NT_USER_TOKEN *nt_user_token;
|
||||
|
||||
time_t lastused;
|
||||
time_t lastused_count;
|
||||
BOOL used;
|
||||
int num_files_open;
|
||||
unsigned int num_smb_operations; /* Count of smb operations on this tree. */
|
||||
|
@ -154,8 +154,9 @@ find_again:
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
close all conn structures
|
||||
Close all conn structures.
|
||||
****************************************************************************/
|
||||
|
||||
void conn_close_all(void)
|
||||
{
|
||||
connection_struct *conn, *next;
|
||||
@ -178,13 +179,20 @@ BOOL conn_idle_all(time_t t, int deadtime)
|
||||
|
||||
for (conn=Connections;conn;conn=next) {
|
||||
next=conn->next;
|
||||
/* close dirptrs on connections that are idle */
|
||||
if ((t-conn->lastused) > DPTR_IDLE_TIMEOUT)
|
||||
dptr_idlecnum(conn);
|
||||
|
||||
if (conn->num_files_open > 0 ||
|
||||
(t-conn->lastused)<deadtime)
|
||||
/* Update if connection wasn't idle. */
|
||||
if (conn->lastused != conn->lastused_count) {
|
||||
conn->lastused = t;
|
||||
}
|
||||
|
||||
/* close dirptrs on connections that are idle */
|
||||
if ((t-conn->lastused) > DPTR_IDLE_TIMEOUT) {
|
||||
dptr_idlecnum(conn);
|
||||
}
|
||||
|
||||
if (conn->num_files_open > 0 || (t-conn->lastused)<deadtime) {
|
||||
allidle = False;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -27,7 +27,6 @@ static int32 exclusive_oplocks_open = 0;
|
||||
static int32 level_II_oplocks_open = 0;
|
||||
BOOL global_client_failed_oplock_break = False;
|
||||
|
||||
extern struct timeval smb_last_time;
|
||||
extern uint32 global_client_caps;
|
||||
extern int smb_read_error;
|
||||
|
||||
@ -277,21 +276,10 @@ static char *new_break_smb_message(TALLOC_CTX *mem_ctx,
|
||||
|
||||
static void wait_before_sending_break(void)
|
||||
{
|
||||
struct timeval cur_tv;
|
||||
long wait_left = (long)lp_oplock_break_wait_time();
|
||||
long wait_time = (long)lp_oplock_break_wait_time();
|
||||
|
||||
if (wait_left == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
GetTimeOfDay(&cur_tv);
|
||||
|
||||
wait_left -= ((cur_tv.tv_sec - smb_last_time.tv_sec)*1000) +
|
||||
((cur_tv.tv_usec - smb_last_time.tv_usec)/1000);
|
||||
|
||||
if(wait_left > 0) {
|
||||
wait_left = MIN(wait_left, 1000);
|
||||
sys_usleep(wait_left * 1000);
|
||||
if (wait_time) {
|
||||
smb_msleep(wait_time);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,8 +26,6 @@ extern int keepalive;
|
||||
extern struct auth_context *negprot_global_auth_context;
|
||||
extern int smb_echo_count;
|
||||
|
||||
struct timeval smb_last_time;
|
||||
|
||||
static char *InBuffer = NULL;
|
||||
static char *OutBuffer = NULL;
|
||||
static char *current_inbuf = NULL;
|
||||
@ -1011,8 +1009,6 @@ static int construct_reply(char *inbuf,char *outbuf,int size,int bufsize)
|
||||
int outsize = 0;
|
||||
int msg_type = CVAL(inbuf,0);
|
||||
|
||||
GetTimeOfDay(&smb_last_time);
|
||||
|
||||
chain_size = 0;
|
||||
file_chain_reset();
|
||||
reset_chain_p();
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
extern struct timeval smb_last_time;
|
||||
extern userdom_struct current_user_info;
|
||||
|
||||
/****************************************************************************
|
||||
@ -140,7 +139,7 @@ BOOL set_current_service(connection_struct *conn, uint16 flags, BOOL do_chdir)
|
||||
return(False);
|
||||
}
|
||||
|
||||
conn->lastused = smb_last_time.tv_sec;
|
||||
conn->lastused_count++;
|
||||
|
||||
snum = SNUM(conn);
|
||||
|
||||
@ -601,7 +600,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
|
||||
safe_strcpy(conn->client_address, client_addr(),
|
||||
sizeof(conn->client_address)-1);
|
||||
conn->num_files_open = 0;
|
||||
conn->lastused = time(NULL);
|
||||
conn->lastused = conn->lastused_count = time(NULL);
|
||||
conn->service = snum;
|
||||
conn->used = True;
|
||||
conn->printer = (strncmp(dev,"LPT",3) == 0);
|
||||
|
Reference in New Issue
Block a user