diff options
author | Volker Lendecke <vlendec@samba.org> | 2007-03-18 10:57:46 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:18:41 -0500 |
commit | 7c2bc9c07083e7035028cf22e97e0c31b3e9d6a5 (patch) | |
tree | e8cc8d5acd02bad82977aee022f65fa75c39a0fa /source3/smbd/server.c | |
parent | 8d0cfddb26a354606844a10254055fb8cd54e792 (diff) | |
download | samba-7c2bc9c07083e7035028cf22e97e0c31b3e9d6a5.tar.gz samba-7c2bc9c07083e7035028cf22e97e0c31b3e9d6a5.tar.bz2 samba-7c2bc9c07083e7035028cf22e97e0c31b3e9d6a5.zip |
r21869: Move sending keepalives out of the main processing loop into idle event.
On the way, make lp_keepalive() a proper parameter.
Volker
(This used to be commit 9499fd9c803d030ce9827f8379c2e56d91bb786e)
Diffstat (limited to 'source3/smbd/server.c')
-rw-r--r-- | source3/smbd/server.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 0ae2f3e836..0d4953e5b8 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -814,6 +814,18 @@ static BOOL init_structs(void ) return True; } +/* + * Send keepalive packets to our client + */ +static BOOL keepalive_fn(const struct timeval *now, void *private_data) +{ + if (!send_keepalive(smbd_server_fd())) { + DEBUG( 2, ( "Keepalive failed - exiting.\n" ) ); + return False; + } + return True; +} + /**************************************************************************** main program. ****************************************************************************/ @@ -1107,6 +1119,20 @@ extern void build_options(BOOL screen); /* register our message handlers */ message_register(MSG_SMB_FORCE_TDIS, msg_force_tdis, NULL); + if (lp_keepalive() != 0) { + struct timeval interval; + + interval.tv_sec = lp_keepalive(); + interval.tv_usec = 0; + + if (!(event_add_idle(smbd_event_context(), NULL, + interval, "keepalive", keepalive_fn, + NULL))) { + DEBUG(0, ("Could not add keepalive event\n")); + exit(1); + } + } + smbd_process(); namecache_shutdown(); |