summaryrefslogtreecommitdiff
path: root/minecproxy/server.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-30 23:19:53 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-30 23:19:53 +0200
commitff9d60b0d5b27369073a329cd5ceb5d6c94bdf84 (patch)
treece6d4b51ea19a517157ba7200f2a75b4a48232d2 /minecproxy/server.c
parentb2961ea4a792fa7e5bead6e49d399dcea55b039b (diff)
Fix some of the fallout of the latest reorg
Diffstat (limited to 'minecproxy/server.c')
-rw-r--r--minecproxy/server.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/minecproxy/server.c b/minecproxy/server.c
index e7efe5d..b06286b 100644
--- a/minecproxy/server.c
+++ b/minecproxy/server.c
@@ -100,6 +100,7 @@ static void server_dump(struct server *server)
assert_return(server);
verbose("Server %s:", server->name);
+ verbose(" * Filename: %s", server->scfg.filename);
switch (server->scfg.type) {
case SERVER_TYPE_ANNOUNCE:
verbose(" * Type: announce");
@@ -428,6 +429,12 @@ bool server_commit(struct server *server)
assert_return(server && server->name, false);
assert_task_alive_or(DBG_SRV, &server->task, return false);
+ if (!list_empty(&server->scfg.dnslookups)) {
+ debug(DBG_SRV, "%s: called with pending DNS requests",
+ server->name);
+ return false;
+ }
+
if (server->state != SERVER_STATE_INIT) {
error("called in wrong state");
return false;
@@ -438,14 +445,9 @@ bool server_commit(struct server *server)
return false;
}
- if (!list_empty(&server->scfg.dnslookups)) {
- debug(DBG_SRV, "%s: called with pending DNS requests",
- server->name);
- return true;
- }
-
if (!scfg_validate(&server->scfg)) {
- debug(DBG_SRV, "%s: config file not valid", server->name);
+ error("%s: failed to validate config file", server->name);
+ server_delete(server);
return false;
}
@@ -469,8 +471,19 @@ bool server_commit(struct server *server)
/* FIXME: error checks */
list_del(&saddr->list);
local = local_new(server, saddr);
- local_open(local);
+ if (!local) {
+ error("%s: failed to create local listener",
+ server->name);
+ server_delete(server);
+ return false;
+ }
list_add(&local->list, &server->listenings);
+ if (!local_open(local)) {
+ error("%s: failed to open listening port",
+ server->name);
+ server_delete(server);
+ return false;
+ }
}
server->state = SERVER_STATE_CFG_OK;