summaryrefslogtreecommitdiff
path: root/minecproxy/server.c
diff options
context:
space:
mode:
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;