summaryrefslogtreecommitdiff
path: root/cfgdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'cfgdir.c')
-rw-r--r--cfgdir.c34
1 files changed, 10 insertions, 24 deletions
diff --git a/cfgdir.c b/cfgdir.c
index 9fa0c78..8793486 100644
--- a/cfgdir.c
+++ b/cfgdir.c
@@ -98,7 +98,7 @@ struct cfg_key_value_map scfg_key_map[] = {
static void
scfg_parse(struct cfg *cfg, struct server *scfg)
{
- char *pos = &scfg->buf[0];
+ char *pos = &scfg->tbuf.buf[0];
if (!config_parse_header(cfg, "server", &pos))
return;
@@ -219,8 +219,6 @@ scfg_parse(struct cfg *cfg, struct server *scfg)
break;
}
}
-
- //printf("Cfg:\n%s\n\n", pos);
}
static void
@@ -228,27 +226,16 @@ scfg_read_cb(struct cfg *cfg, struct uring_task *task, int res)
{
struct server *scfg = container_of(task, struct server, task);
- printf("Asked to parse server cfg %s (bytes %i)\n", scfg->name, res);
-
if (res < 0) {
- perrordie("read");
- } else if (res > 0) {
- scfg->len += res;
- if (scfg->len + 1 >= sizeof(scfg->buf)) {
- fprintf(stderr, "Server config too large\n");
- server_delete(cfg, scfg);
- return;
- }
-
- uring_read(cfg, &scfg->task, scfg->buf + scfg->len, sizeof(scfg->buf) - scfg->len, scfg->len, scfg_read_cb);
- return;
- } else {
- /* EOF */
- scfg->buf[scfg->len] = '\0';
- uring_task_close_fd(cfg, &scfg->task);
- scfg_parse(cfg, scfg);
- server_commit(cfg, scfg);
+ fprintf(stderr, "%s: error reading config file for %s: %s\n",
+ __func__, scfg->name, strerror(-res));
+ server_delete(cfg, scfg);
}
+
+ printf("Asked to parse server cfg %s (bytes %i)\n", scfg->name, res);
+ uring_task_close_fd(cfg, &scfg->task);
+ scfg_parse(cfg, scfg);
+ server_commit(cfg, scfg);
}
static void
@@ -265,8 +252,7 @@ scfg_open_cb(struct cfg *cfg, struct uring_task *task, int res)
printf("Asked to read server cfg %s (fd %i)\n", scfg->name, res);
uring_task_set_fd(&scfg->task, res);
- scfg->len = 0;
- uring_read(cfg, &scfg->task, scfg->buf, sizeof(scfg->buf), 0, scfg_read_cb);
+ uring_tbuf_read_until_eof(cfg, &scfg->task, scfg_read_cb);
}
static bool