aboutsummaryrefslogtreecommitdiffstats
path: root/src/stream.c
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-01-28 13:13:36 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2020-01-28 13:18:36 +0100
commit7f8e0502e2b5692441fb8c281ef5556172591883 (patch)
tree1dc70e9e13ef3e4e57a6f2dacf0fb4da7681c61f /src/stream.c
parent6326e8ff85a176edd5235f6e2e718e7577cfacd6 (diff)
stream: Add new WAIT_RECONNECT cli state
It's not really needed right now from logic point of view, since we reused NONE for that. But it makes logging and logic clearer, and will make it easier if we decide to move it to FSMs at a later point in time. Other state value_string names are also modified with its whitespace removed since anyway we'd need to change them to match WAIT_RECONNECT length. Let's drop the space because imho it's not that useful and anyway if we move to FSMs at some point then we won't have them anyway. Change-Id: I7b9a6da87081c418b0d14bab5f34369c5eca6fe8
Diffstat (limited to 'src/stream.c')
-rw-r--r--src/stream.c16
1 files changed, 10 insertions, 6 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;