aboutsummaryrefslogtreecommitdiffstats
path: root/src/stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stream.c')
-rw-r--r--src/stream.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/stream.c b/src/stream.c
index 7cc77c9..7b97d2a 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -169,12 +169,13 @@ void osmo_stream_cli_close(struct osmo_stream_cli *cli);
* connection (if any) and schedule a re-connect timer */
void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli)
{
+ osmo_stream_cli_close(cli);
+
if (cli->reconnect_timeout < 0) {
LOGSCLI(cli, LOGL_DEBUG, "not reconnecting, disabled.\n");
return;
}
- LOGSCLI(cli, LOGL_DEBUG, "connection closed\n");
- osmo_stream_cli_close(cli);
+
LOGSCLI(cli, LOGL_DEBUG, "retrying in %d seconds...\n",
cli->reconnect_timeout);
osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0);
@@ -192,6 +193,11 @@ void osmo_stream_cli_close(struct osmo_stream_cli *cli)
osmo_fd_unregister(&cli->ofd);
close(cli->ofd.fd);
cli->ofd.fd = -1;
+
+ if (cli->state == STREAM_CLI_STATE_CONNECTED)
+ LOGSCLI(cli, LOGL_DEBUG, "connection closed\n");
+
+ cli->state = STREAM_CLI_STATE_NONE;
}
static void osmo_stream_cli_read(struct osmo_stream_cli *cli)