diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-03-31 04:54:41 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2010-03-31 04:55:47 +0200 |
commit | 6f30b9a6ff57ca6112e6319c64c411d2bf09be79 (patch) | |
tree | 844b8f3fe158356e380d80f084b51c1aeecaf26a | |
parent | 74f36df4b30601417dc69031bf6f1af4c652e440 (diff) | |
download | samba-6f30b9a6ff57ca6112e6319c64c411d2bf09be79.tar.gz samba-6f30b9a6ff57ca6112e6319c64c411d2bf09be79.tar.bz2 samba-6f30b9a6ff57ca6112e6319c64c411d2bf09be79.zip |
s3:smbd: handle SMB2 in deadtime_fn() and avoid disconnecting non idle clients
metze
-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; |