aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gmid.h2
-rw-r--r--server.c30
2 files changed, 21 insertions, 11 deletions
diff --git a/gmid.h b/gmid.h
index c7b1c4e..2078a2c 100644
--- a/gmid.h
+++ b/gmid.h
@@ -370,6 +370,8 @@ void start_reply(struct client*, int, const char*);
void client_close(struct client *);
struct client *client_by_id(int);
void do_accept(int, short, void *);
+void server_init(struct privsep *, struct privsep_proc *, void *);
+int server_configure_done(struct conf *);
void server(struct privsep *ps, struct privsep_proc *);
int client_tree_cmp(struct client *, struct client *);
diff --git a/server.c b/server.c
index ae46559..eba98da 100644
--- a/server.c
+++ b/server.c
@@ -73,7 +73,6 @@ static void client_close_ev(int, short, void *);
static void handle_siginfo(int, short, void*);
-static void server_init(struct privsep *, struct privsep_proc *, void *);
static int server_dispatch_parent(int, struct privsep_proc *, struct imsg *);
static int server_dispatch_logger(int, struct privsep_proc *, struct imsg *);
@@ -1432,7 +1431,7 @@ server(struct privsep *ps, struct privsep_proc *p)
proc_run(ps, p, procs, nitems(procs), server_init, NULL);
}
-static void
+void
server_init(struct privsep *ps, struct privsep_proc *p, void *arg)
{
SPLAY_INIT(&clients);
@@ -1448,6 +1447,22 @@ server_init(struct privsep *ps, struct privsep_proc *p, void *arg)
sandbox_server_process();
}
+int
+server_configure_done(struct conf *conf)
+{
+ if (load_default_mime(&conf->mime) == -1)
+ fatal("can't load default mime");
+ sort_mime(&conf->mime);
+ setup_tls();
+ load_vhosts();
+ if (conf->sock4 != -1)
+ event_add(&conf->evsock4, NULL);
+ if (conf->sock6 != -1)
+ event_add(&conf->evsock6, NULL);
+
+ return 0;
+}
+
static int
server_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg)
{
@@ -1474,15 +1489,8 @@ server_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg)
case IMSG_RECONF_END:
if (config_recv(conf, imsg) == -1)
return -1;
- if (load_default_mime(&conf->mime) == -1)
- fatal("can't load default mime");
- sort_mime(&conf->mime);
- setup_tls();
- load_vhosts();
- if (conf->sock4 != -1)
- event_add(&conf->evsock4, NULL);
- if (conf->sock6 != -1)
- event_add(&conf->evsock6, NULL);
+ if (server_configure_done(conf) == -1)
+ return -1;
break;
default:
return -1;