diff --git a/src/connection.c b/src/connection.c index cb60967..38a4870 100644 --- a/src/connection.c +++ b/src/connection.c @@ -1,9 +1,10 @@ /* SPDX-License-Identifier: MIT */ /* Copyright (c) 2026 Oleksandr Zhylin */ +#include "alert.h" #include "main.h" -#include #include +#include #include #include #include @@ -14,19 +15,26 @@ #include #include #include +#include -void connect_to_server(app_t *app) { +bool connect_to_server(app_t *app) { struct sockaddr_in server; server.sin_family = AF_INET; server.sin_addr.s_addr = app->params->addr; server.sin_port = app->params->port; if (-1 == connect(app->params->sd, (struct sockaddr *)&server, sizeof(server))) { - perror("connect"); - app_destroy(app, 2); + w_alert(strerror(errno)); + /* TODO: ask new server address */ + // app_destroy(app, 2); + app->query_args->state = S_ASK_SEVER_IP; + return false; } + app->query_args->state = S_WAIT_SERVER; app->params->is_connected = TRUE; + app->query_args->sd = app->params->sd; app_draw_bars(app); + return true; } void init_params(params_t *params) { diff --git a/src/connection.h b/src/connection.h index 26da6f2..5c74653 100644 --- a/src/connection.h +++ b/src/connection.h @@ -6,7 +6,7 @@ #include "main.h" #include -void connect_to_server(app_t *params); +bool connect_to_server(app_t *params); void init_params(params_t *restrict); void clear_params(params_t *params); void get_ip_port(params_t *params, char *ip, char *port); diff --git a/src/main.c b/src/main.c index fbebc15..12e3d45 100644 --- a/src/main.c +++ b/src/main.c @@ -55,10 +55,8 @@ int main(int argc, char **argv) { app->query_args->state = S_ASK_SEVER_IP; } else { connect_to_server(app); - app->query_args->state = S_WAIT_SERVER; } - app->query_args->sd = app->params->sd; app->query_args->main_ui = &(app->main_ui); query_loop(app); diff --git a/src/modals/ask_server_addr.c b/src/modals/ask_server_addr.c index 88e8368..2411fd2 100644 --- a/src/modals/ask_server_addr.c +++ b/src/modals/ask_server_addr.c @@ -25,9 +25,10 @@ void asa_modal_dialogue_callback(w_cb_args_t *args) { switch (d_args.resp_data.val.val.num) { case 1: get_ip_port(app->params, in_ip->value, in_port->value); - connect_to_server(app); - d->needs_destroy = true; - app->query_args->state = S_WAIT_SERVER; + if (connect_to_server(app)) { + d->needs_destroy = true; + app->query_args->state = S_WAIT_SERVER; + } break; case 2: app_destroy(app, 0);