commit - 99c8e404c0aa688453b2438227d88b8781b9a21f
commit + 19d20c12ec99892dbf57f969d478e4108851679e
blob - d9dca464a473c11fc3bad9cac8d40909794c4d98
blob + af1e66d4707e36023c88149e74504cf6212a2afd
--- 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 - ff1fed836b983907bed2d75f26d0d48b47d78a6b
blob + 4695b254224421da1c01284653f9c8469a11dce4
--- 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:
fatalx("unexpected signal");
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);
}