commit - cab13f2dcc894c20d7f67f0905bf9396acb6fec9
commit + 40538e52bf546dc48be253772ea579110e483b37
blob - 806994beb389a3a5c37e7c67175b8ea7bace5ee5
blob + a1aa062175156f6d078a385bc3fa3185e178b2bb
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
imsgbuf_clear(&gotwebd_env->iev_server->ibuf);
free(gotwebd_env->iev_server);
}
+
+ sockets_purge(gotwebd_env);
+
+ while (!TAILQ_EMPTY(&gotwebd_env->servers)) {
+ struct server *srv;
+
+ srv = TAILQ_FIRST(&gotwebd_env->servers);
+ TAILQ_REMOVE(&gotwebd_env->servers, srv, entry);
+ free(srv);
+ }
+
free(gotwebd_env);
exit(0);
blob - f66b9f38c71db3ea73f08f317e7446e2d3929e59
blob + f998ee471383cb9f2e81359a8bf4012acd12e644
--- gotwebd/gotwebd.c
+++ gotwebd/gotwebd.c
int gotwebd_configure(struct gotwebd *, uid_t, gid_t);
void gotwebd_configure_done(struct gotwebd *);
void gotwebd_sighdlr(int sig, short event, void *arg);
-void gotwebd_shutdown(void);
+void gotwebd_shutdown(int);
void gotwebd_dispatch_server(int, short, void *);
void gotwebd_dispatch_gotweb(int, short, void *);
break;
case SIGTERM:
case SIGINT:
- gotwebd_shutdown();
+ gotwebd_shutdown(0);
break;
default:
log_warn("unexpected signal %d", sig);
if (proc_type == GOTWEBD_PROC_PARENT) {
if (parse_config(env->gotwebd_conffile, env) == -1)
- exit(1);
+ gotwebd_shutdown(1);
if (no_action) {
fprintf(stderr, "configuration OK\n");
- exit(0);
+ gotwebd_shutdown(0);
}
if (env->user)
log_debug("%s gotwebd exiting", getprogname());
+ gotwebd_shutdown(0);
return (0);
}
}
void
-gotwebd_shutdown(void)
+gotwebd_shutdown(int exit_code)
{
struct gotwebd *env = gotwebd_env;
pid_t pid;
free(gotwebd_env);
log_warnx("gotwebd terminating");
- exit(0);
+ exit(exit_code);
}