Change in libosmo-netif[master]: Stream client: fix disconnection logic

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Max gerrit-no-reply at lists.osmocom.org
Tue Feb 5 16:43:39 UTC 2019


Max has submitted this change and it was merged. ( https://gerrit.osmocom.org/12760 )

Change subject: Stream client: fix disconnection logic
......................................................................

Stream client: fix disconnection logic

Previously closing the client did not alter its state, so we might
end-up with a client without any file descriptors, but being in state
STREAM_CLI_STATE_CONNECTED. Fix this inconsistency by setting
appropriate state.

Related issue is that reconnect function, which is always (at least in
the library and examples) called when some problem with the connection
is detected, closed the connection only after checking whether
reconnection is enabled. This might result in another inconsistency
fixed in this patch by moving the check below connection cleanup.

While at it, also move connection close logging to appropriate place:
it's confusing to see logs about connection being closed while in
reality it wasn't even established.

Change-Id: If41ed60bd625488c283d1e8a2b078e640f04c78e
---
M src/stream.c
1 file changed, 8 insertions(+), 2 deletions(-)

Approvals:
  Jenkins Builder: Verified
  osmith: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved



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 @@
  *  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 @@
 	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)

-- 
To view, visit https://gerrit.osmocom.org/12760
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: If41ed60bd625488c283d1e8a2b078e640f04c78e
Gerrit-Change-Number: 12760
Gerrit-PatchSet: 5
Gerrit-Owner: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Pablo Neira Ayuso <pablo at gnumonks.org>
Gerrit-Reviewer: daniel <dwillmann at sysmocom.de>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190205/f91150a9/attachment.htm>


More information about the gerrit-log mailing list