diff options
| author | Anders Betts <anders.betts@gmail.com> | 2026-09-18 12:54:16 +0200 |
|---|---|---|
| committer | Anders Betts <anders.betts@gmail.com> | 2026-09-18 12:54:16 +0200 |
| commit | c6869bb32bd0031118d9bdf8b8ce8a562eb18f8f (patch) | |
| tree | d46b203da958e530e280e0ce8d6debc55b711c69 | |
| parent | 33b8635d06f785f9d088d4c9485d89f00898424a (diff) | |
| download | bokf-c6869bb32bd0031118d9bdf8b8ce8a562eb18f8f.tar.gz bokf-c6869bb32bd0031118d9bdf8b8ce8a562eb18f8f.zip | |
bokftui: wait for the server before auto-login (reload during deploy)v0.1.19
| -rw-r--r-- | clients/bokftui.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/clients/bokftui.c b/clients/bokftui.c index 25e5464..ceaf525 100644 --- a/clients/bokftui.c +++ b/clients/bokftui.c @@ -4119,6 +4119,15 @@ static void config_save(const struct app *a) chmod(path, 0600); } +static int server_reachable(const char *socket) +{ + struct client_conn c; + if (client_connect(socket, &c) != 0) + return 0; + client_close(&c); + return 1; +} + /* Connects and opens a session. Returns 0 on success, -2 when the connection failed and -1 when the server rejected the login. */ static int try_login(struct app *a, const char *user, const char *pass, @@ -4399,6 +4408,19 @@ int main(int argc, char **argv) const char *env_session = getenv("BOKFD_SESSION"); const char *session_arg = cli_session ? cli_session : env_session; + const char *token = getenv("BOKFD_TOKEN"); + const char *env_pass = getenv("BOKFD_PASSWORD"); + int have_auto = (session_arg && *session_arg) || (token && *token) || + (app.username[0] && env_pass && *env_pass); + if (have_auto) { + for (int i = 0; i < 30; i++) { + if (server_reachable(app.socket)) + break; + mvprintw(LINES / 2, 2, "Ansluter till servern... (%ds)", i + 1); + refresh(); + sleep(1); + } + } int stale_session = 0; if (session_arg && *session_arg && client_connect(app.socket, &app.conn) == 0) { @@ -4413,7 +4435,6 @@ int main(int argc, char **argv) free(resp); } - const char *token = getenv("BOKFD_TOKEN"); if (!app.session[0] && token && *token) { char *err = NULL; if (try_login(&app, NULL, NULL, token, &err) == 0) @@ -4424,7 +4445,6 @@ int main(int argc, char **argv) free(err); } } - const char *env_pass = getenv("BOKFD_PASSWORD"); if (!app.session[0] && app.username[0] && env_pass && *env_pass) { char *err = NULL; if (try_login(&app, app.username, env_pass, NULL, &err) == 0) { |
