summaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'server.c')
-rw-r--r--server.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/server.c b/server.c
index 6443c7a..1750e58 100644
--- a/server.c
+++ b/server.c
@@ -34,7 +34,7 @@ set_property(struct cfg *cfg, struct server *scfg, char **property, const char *
if (!cfg || !scfg || empty_str(value) || *property)
return false;
- *property = strdup(value);
+ *property = xstrdup(value);
if (!*property) {
perror("strdup");
return false;
@@ -65,13 +65,14 @@ server_free(struct uring_task *task)
fprintf(stderr, "Freeing scfg %s\n", scfg->name);
list_del(&scfg->list);
- free(scfg->pretty_name);
- free(scfg->start_exec);
- free(scfg->stop_exec);
- free(scfg->systemd_service);
- free(scfg->systemd_obj);
- free(scfg->name);
- free(scfg);
+ xfree(scfg->pretty_name);
+ xfree(scfg->start_exec);
+ xfree(scfg->stop_exec);
+ xfree(scfg->systemd_service);
+ xfree(scfg->systemd_obj);
+ xfree(scfg->rcon_password);
+ xfree(scfg->name);
+ xfree(scfg);
}
void
@@ -79,6 +80,7 @@ server_delete(struct cfg *cfg, struct server *scfg)
{
struct server_local *local, *ltmp;
struct sockaddr_in46 *remote, *rtmp;
+ struct sockaddr_in46 *rcon, *rctmp;
fprintf(stderr, "Removing server cfg: %s\n", scfg->name);
@@ -87,7 +89,12 @@ server_delete(struct cfg *cfg, struct server *scfg)
list_for_each_entry_safe(remote, rtmp, &scfg->remotes, list) {
list_del(&remote->list);
- free(remote);
+ xfree(remote);
+ }
+
+ list_for_each_entry_safe(rcon, rctmp, &scfg->rcons, list) {
+ list_del(&rcon->list);
+ xfree(rcon);
}
list_for_each_entry_safe(local, ltmp, &scfg->locals, list) {
@@ -120,6 +127,7 @@ server_dump(struct server *scfg)
{
struct server_local *local;
struct sockaddr_in46 *remote;
+ struct sockaddr_in46 *rcon;
char abuf[ADDRSTRLEN];
fprintf(stderr, "\nDumping server %s\n", scfg->name);
@@ -143,8 +151,8 @@ server_dump(struct server *scfg)
list_for_each_entry(remote, &scfg->remotes, list)
fprintf(stderr, " * %s\n", sockaddr_to_str(remote, abuf, sizeof(abuf)));
fprintf(stderr, " * RCon:\n");
- list_for_each_entry(remote, &scfg->rcons, list)
- fprintf(stderr, " * %s\n", sockaddr_to_str(remote, abuf, sizeof(abuf)));
+ list_for_each_entry(rcon, &scfg->rcons, list)
+ fprintf(stderr, " * %s\n", sockaddr_to_str(rcon, abuf, sizeof(abuf)));
fprintf(stderr, "\n");
}
@@ -156,7 +164,7 @@ server_local_free(struct uring_task *task)
fprintf(stderr, "%s called: task 0x%p\n", __func__, task);
list_del(&local->list);
- free(local);
+ xfree(local);
}
static void
@@ -540,7 +548,7 @@ server_add_local(struct cfg *cfg, struct server *scfg, struct sockaddr_in46 *add
sockaddr_to_str(&local->addr, local->addrstr, sizeof(local->addrstr));
fprintf(stderr, "Adding local: %s\n", local->addrstr);
list_add(&local->list, &scfg->locals);
- free(addr);
+ xfree(addr);
return true;
}
@@ -574,11 +582,11 @@ server_set_systemd_service(struct cfg *cfg, struct server *scfg,
suffix = strrchr(service, '.');
if (!suffix || strcmp(suffix, ".service")) {
- tmp = malloc(strlen(service) + strlen(".service") + 1);
+ tmp = zmalloc(strlen(service) + strlen(".service") + 1);
if (tmp)
sprintf(tmp, "%s.service", service);
} else
- tmp = strdup(service);
+ tmp = xstrdup(service);
if (!tmp) {
perror("malloc/strdup");
@@ -691,7 +699,7 @@ server_new(struct cfg *cfg, const char *name)
}
scfg->type = SERVER_TYPE_UNDEFINED;
- scfg->name = strdup(name);
+ scfg->name = xstrdup(name);
scfg->running = false;
scfg->stop_method = SERVER_STOP_METHOD_UNDEFINED;
scfg->start_method = SERVER_START_METHOD_UNDEFINED;