Date: Sun, 22 Aug 2010 20:04:48 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r211638 - projects/sv/usr.sbin/netdumpsrv Message-ID: <201008222004.o7MK4mrP013343@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Sun Aug 22 20:04:48 2010 New Revision: 211638 URL: http://svn.freebsd.org/changeset/base/211638 Log: More style cleanups for other functions. Modified: projects/sv/usr.sbin/netdumpsrv/netdump_server.c Modified: projects/sv/usr.sbin/netdumpsrv/netdump_server.c ============================================================================== --- projects/sv/usr.sbin/netdumpsrv/netdump_server.c Sun Aug 22 19:57:41 2010 (r211637) +++ projects/sv/usr.sbin/netdumpsrv/netdump_server.c Sun Aug 22 20:04:48 2010 (r211638) @@ -50,6 +50,7 @@ #define MAX_DUMPS 256 /* Dumps per IP before to be cleaned out. */ #define CLIENT_TIMEOUT 120 /* Clients timeout (secs). */ +#define CLIENT_TPASS 10 /* Clients timeout pass (secs). */ #define PFLAGS_ABIND 0x01 #define PFLAGS_DDIR 0x02 @@ -95,6 +96,7 @@ static struct in_addr bindip; /* Miscellaneous handlers. */ static struct pidfh *pfh; static time_t now; +static time_t last_timeout_check; static int do_shutdown; static int sock; @@ -277,88 +279,78 @@ alloc_client(struct sockaddr_in *sip) return (client); } -static void free_client(struct netdump_client *client) +static void +free_client(struct netdump_client *client) { - assert(client != NULL); + assert(client != NULL); - /* Remove from the list. Ignore errors from close() routines. */ - SLIST_REMOVE(&clients, client, netdump_client, iter); - fclose(client->infofile); - close(client->corefd); - close(client->sock); - free(client); + /* Remove from the list. Ignore errors from close() routines. */ + SLIST_REMOVE(&clients, client, netdump_client, iter); + fclose(client->infofile); + close(client->corefd); + close(client->sock); + free(client); } -static void exec_handler(struct netdump_client *client, const char *reason) +static void +exec_handler(struct netdump_client *client, const char *reason) { - int pid; + int pid; - assert(client != NULL); + assert(client != NULL); - /* If no script is specified this is a no-op. */ - if ((pflags & PFLAGS_SCRIPT) == 0) - return; + /* If no script is specified this is a no-op. */ + if ((pflags & PFLAGS_SCRIPT) == 0) + return; - pid=fork(); + pid = fork(); - /* - * The function is invoked in critical conditions, thus just exiting - * without reporting errors is fine. - */ - if (pid == -1) - { - LOGERR_PERROR("fork()"); - return; - } - else if (pid) - { - return; - } - else - { - close(sock); - pidfile_close(pfh); - if (execl(handler_script, handler_script, reason, client_ntoa(client), - client->hostname, client->infofilename, client->corefilename, - NULL) == -1) { + /* + * The function is invoked in critical conditions, thus just exiting + * without reporting errors is fine. + */ + if (pid == -1) { LOGERR_PERROR("fork()"); - _exit(1); + return; + } else if (pid != 0) { + close(sock); + pidfile_close(pfh); + if (execl(handler_script, handler_script, reason, + client_ntoa(client), client->hostname, + client->infofilename, client->corefilename, NULL) == -1) { + LOGERR_PERROR("fork()"); + _exit(1); + } } - } } -static void handle_timeout(struct netdump_client *client) +static void +handle_timeout(struct netdump_client *client) { - assert(client != NULL); + assert(client != NULL); - LOGINFO("Client %s timed out\n", client_ntoa(client)); - client_pinfo(client, "Dump incomplete: client timed out\n"); - exec_handler(client, "timeout"); - free_client(client); + LOGINFO("Client %s timed out\n", client_ntoa(client)); + client_pinfo(client, "Dump incomplete: client timed out\n"); + exec_handler(client, "timeout"); + free_client(client); } -static void timeout_clients() +static void +timeout_clients() { - static time_t last_timeout_check; - struct netdump_client *client, *tmp; + struct netdump_client *client, *tmp; - /* Only time out clients every 10 seconds */ - if (now - last_timeout_check < 10) - { - return; - } - - last_timeout_check = now; - - /* Traverse the list looking for stale clients */ - SLIST_FOREACH_SAFE(client, &clients, iter, tmp) { - if (client->last_msg+CLIENT_TIMEOUT < now) - { - handle_timeout(client); - } - } + /* Only time out clients every 10 seconds. */ + if (now - last_timeout_check < CLIENT_TPASS) + return; + last_timeout_check = now; + + /* Traverse the list looking for stale clients. */ + SLIST_FOREACH_SAFE(client, &clients, iter, tmp) + if (client->last_msg + CLIENT_TIMEOUT < now) + handle_timeout(client); } static void send_ack(struct netdump_client *client, struct netdump_msg *msg)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008222004.o7MK4mrP013343>