From ff9d60b0d5b27369073a329cd5ceb5d6c94bdf84 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Tue, 30 Jun 2020 23:19:53 +0200 Subject: Fix some of the fallout of the latest reorg --- minecproxy/server.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'minecproxy/server.c') 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; -- cgit v1.2.3