diff options
-rw-r--r-- | src/stream.c | 16 | ||||
-rw-r--r-- | tests/stream/stream_test.err | 8 |
2 files changed, 14 insertions, 10 deletions
diff --git a/src/stream.c b/src/stream.c index c47ae3e..8a063f2 100644 --- a/src/stream.c +++ b/src/stream.c @@ -129,16 +129,18 @@ static int setsockopt_nodelay(int fd, int proto, int on) */ enum osmo_stream_cli_state { - STREAM_CLI_STATE_NONE = 0, /* No fd associated, may have timer active to try to connect again */ - STREAM_CLI_STATE_CONNECTING = 1, /* Fd associated, but connection not yet confirmed by peer or lower layers */ - STREAM_CLI_STATE_CONNECTED = 2, /* Fd associated and connection is established */ + STREAM_CLI_STATE_NONE, /* No fd associated, no timer active */ + STREAM_CLI_STATE_WAIT_RECONNECT, /* No fd associated, has timer active to try to connect again */ + STREAM_CLI_STATE_CONNECTING, /* Fd associated, but connection not yet confirmed by peer or lower layers */ + STREAM_CLI_STATE_CONNECTED, /* Fd associated and connection is established */ STREAM_CLI_STATE_MAX }; static const struct value_string stream_cli_state_names[] = { - { STREAM_CLI_STATE_NONE, " NONE" }, - { STREAM_CLI_STATE_CONNECTING, "CONNECTING" }, - { STREAM_CLI_STATE_CONNECTED, " CONNECTED" }, + { STREAM_CLI_STATE_NONE, "NONE" }, + { STREAM_CLI_STATE_WAIT_RECONNECT, "WAIT_RECONNECT" }, + { STREAM_CLI_STATE_CONNECTING, "CONNECTING" }, + { STREAM_CLI_STATE_CONNECTED, "CONNECTED" }, { 0, NULL } }; @@ -187,6 +189,7 @@ void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli) return; } + cli->state = STREAM_CLI_STATE_WAIT_RECONNECT; LOGSCLI(cli, LOGL_INFO, "retrying in %d seconds...\n", cli->reconnect_timeout); osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0); @@ -669,6 +672,7 @@ int osmo_stream_cli_open(struct osmo_stream_cli *cli) return 0; error_close_socket: + cli->state = STREAM_CLI_STATE_NONE; close(cli->ofd.fd); cli->ofd.fd = -1; return -EIO; diff --git a/tests/stream/stream_test.err b/tests/stream/stream_test.err index 04bfcfe..69a0b85 100644 --- a/tests/stream/stream_test.err +++ b/tests/stream/stream_test.err @@ -12,8 +12,8 @@ {2.000006} autoreconnecting test step 6 [client OK, server OK], FD reg 1 {2.000007} autoreconnecting test step 5 [client OK, server OK], FD reg 1 -[ CONNECTED] osmo_stream_cli_recv(): connection closed with srv -[ NONE] osmo_stream_cli_reconnect(): retrying in 9 seconds... +[CONNECTED] osmo_stream_cli_recv(): connection closed with srv +[WAIT_RECONNECT] osmo_stream_cli_reconnect(): retrying in 9 seconds... {11.000008} autoreconnecting test step 4 [client OK, server OK], FD reg 0 @@ -37,7 +37,7 @@ connection closed with srv {11.000017} non-reconnecting test step 2 [client OK, server OK], FD reg 1 {11.000018} non-reconnecting test step 1 [client OK, server OK], FD reg 1 -[ CONNECTED] osmo_stream_cli_recv(): connection closed with srv -[ NONE] osmo_stream_cli_reconnect(): not reconnecting, disabled. +[CONNECTED] osmo_stream_cli_recv(): connection closed with srv +[NONE] osmo_stream_cli_reconnect(): not reconnecting, disabled. {20.000019} non-reconnecting test step 0 [client OK, server OK], FD reg 0 |