aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/server.c
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2023-07-04 18:29:26 +0200
committerEgor Tensin <Egor.Tensin@gmail.com>2023-07-04 20:51:17 +0200
commita892d9a21fb321b82cb74cba2ec617a4edd7e2c9 (patch)
tree1774a176d1fbed474e8bfeea044703461745e86a /src/server.c
parenttcp_server: always clean up connection descriptors (diff)
downloadcimple-a892d9a21fb321b82cb74cba2ec617a4edd7e2c9.tar.gz
cimple-a892d9a21fb321b82cb74cba2ec617a4edd7e2c9.zip
storage: requeue old runs from storage on startup
Diffstat (limited to 'src/server.c')
-rw-r--r--src/server.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/server.c b/src/server.c
index ee605c0..acc3756 100644
--- a/src/server.c
+++ b/src/server.c
@@ -339,21 +339,26 @@ int server_create(struct server **_server, const struct settings *settings)
goto close_signalfd;
worker_queue_create(&server->worker_queue);
- run_queue_create(&server->run_queue);
ret = storage_sqlite_settings_create(&storage_settings, settings->sqlite_path);
if (ret < 0)
- goto destroy_run_queue;
+ goto destroy_worker_queue;
ret = storage_create(&server->storage, &storage_settings);
storage_settings_destroy(&storage_settings);
if (ret < 0)
+ goto destroy_worker_queue;
+
+ run_queue_create(&server->run_queue);
+
+ ret = storage_get_run_queue(&server->storage, &server->run_queue);
+ if (ret < 0)
goto destroy_run_queue;
ret = tcp_server_create(&server->tcp_server, settings->port, cmd_dispatcher_handle_conn,
server->cmd_dispatcher);
if (ret < 0)
- goto destroy_storage;
+ goto destroy_run_queue;
ret = tcp_server_add_to_event_loop(server->tcp_server, server->event_loop);
if (ret < 0)
@@ -371,12 +376,12 @@ int server_create(struct server **_server, const struct settings *settings)
destroy_tcp_server:
tcp_server_destroy(server->tcp_server);
-destroy_storage:
- storage_destroy(&server->storage);
-
destroy_run_queue:
run_queue_destroy(&server->run_queue);
+ storage_destroy(&server->storage);
+
+destroy_worker_queue:
worker_queue_destroy(&server->worker_queue);
close_signalfd: