diff options
| -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) { |
