diff options
Diffstat (limited to 'source3/smbd/process.c')
| -rw-r--r-- | source3/smbd/process.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 6068816ad9..dd120f9bd2 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -2349,9 +2349,21 @@ static bool keepalive_fn(const struct timeval *now, void *private_data)  static bool deadtime_fn(const struct timeval *now, void *private_data)  {  	struct smbd_server_connection *sconn = smbd_server_conn; + +	if (sconn->allow_smb2) { +		/* TODO: implement real idle check */ +		if (sconn->smb2.sessions.list) { +			return true; +		} +		DEBUG( 2, ( "Closing idle SMB2 connection\n" ) ); +		messaging_send(smbd_messaging_context(), procid_self(), +			       MSG_SHUTDOWN, &data_blob_null); +		return false; +	} +  	if ((conn_num_open(sconn) == 0)  	    || (conn_idle_all(sconn, now->tv_sec))) { -		DEBUG( 2, ( "Closing idle connection\n" ) ); +		DEBUG( 2, ( "Closing idle SMB1 connection\n" ) );  		messaging_send(smbd_messaging_context(), procid_self(),  			       MSG_SHUTDOWN, &data_blob_null);  		return False;  | 
