<p>Max has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12836">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Stream client: update logging<br><br>Introduce logging macro wrapper to properly log current client state and<br>function to aid in debugging.<br><br>Change-Id: Ie22a80dcec95998cce0b25053fdf74f23eab6e53<br>---<br>M src/stream.c<br>1 file changed, 24 insertions(+), 16 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/36/12836/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/stream.c b/src/stream.c</span><br><span>index dbbaa9c..ca67aa0 100644</span><br><span>--- a/src/stream.c</span><br><span>+++ b/src/stream.c</span><br><span>@@ -49,6 +49,8 @@</span><br><span> #include <netinet/sctp.h></span><br><span> #endif</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define LOGSCLI(cli, level, fmt, args...) LOGP(DLINP, level, "[%s] %s(): " fmt, get_value_string(stream_cli_state_names, cli->state), __func__, ## args)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! \addtogroup stream Osmocom Stream Socket</span><br><span> * @{</span><br><span> *</span><br><span>@@ -131,6 +133,13 @@</span><br><span> STREAM_CLI_STATE_MAX</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const struct value_string stream_cli_state_names[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ { STREAM_CLI_STATE_NONE, " NONE" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { STREAM_CLI_STATE_CONNECTING, "CONNECTING" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { STREAM_CLI_STATE_CONNECTED, " CONNECTED" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { 0, NULL }</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define OSMO_STREAM_CLI_F_RECONF (1 << 0)</span><br><span> #define OSMO_STREAM_CLI_F_NODELAY (1 << 1)</span><br><span> </span><br><span>@@ -160,12 +169,12 @@</span><br><span> void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli)</span><br><span> {</span><br><span> if (cli->reconnect_timeout < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "not reconnecting, disabled.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "not reconnecting, disabled.\n");</span><br><span> return;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "connection closed\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "connection closed\n");</span><br><span> osmo_stream_cli_close(cli);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "retrying in %d seconds...\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "retrying in %d seconds...\n",</span><br><span> cli->reconnect_timeout);</span><br><span> osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0);</span><br><span> cli->state = STREAM_CLI_STATE_CONNECTING;</span><br><span>@@ -186,7 +195,7 @@</span><br><span> </span><br><span> static void osmo_stream_cli_read(struct osmo_stream_cli *cli)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "message received\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "message received\n");</span><br><span> </span><br><span> if (cli->read_cb)</span><br><span> cli->read_cb(cli);</span><br><span>@@ -201,7 +210,7 @@</span><br><span> struct llist_head *lh;</span><br><span> int ret;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "sending data\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "sending data\n");</span><br><span> </span><br><span> if (llist_empty(&cli->tx_queue)) {</span><br><span> cli->ofd.when &= ~BSC_FD_WRITE;</span><br><span>@@ -212,7 +221,7 @@</span><br><span> msg = llist_entry(lh, struct msgb, list);</span><br><span> </span><br><span> if (cli->state == STREAM_CLI_STATE_CONNECTING) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_ERROR, "not connected, dropping data!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_ERROR, "not connected, dropping data!\n");</span><br><span> return 0;</span><br><span> }</span><br><span> </span><br><span>@@ -235,7 +244,7 @@</span><br><span> if (errno == EPIPE || errno == ENOTCONN) {</span><br><span> osmo_stream_cli_reconnect(cli);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_ERROR, "error to send\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_ERROR, "error to send\n");</span><br><span> }</span><br><span> msgb_free(msg);</span><br><span> return 0;</span><br><span>@@ -255,7 +264,7 @@</span><br><span> return 0;</span><br><span> }</span><br><span> ofd->when &= ~BSC_FD_WRITE;</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "connection done.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "connection done.\n");</span><br><span> cli->state = STREAM_CLI_STATE_CONNECTED;</span><br><span> if (cli->proto == IPPROTO_SCTP) {</span><br><span> #ifdef SO_NOSIGPIPE</span><br><span>@@ -263,7 +272,7 @@</span><br><span> </span><br><span> ret = setsockopt(ofd->fd, SOL_SOCKET, SO_NOSIGPIPE, (void*)&val, sizeof(val));</span><br><span> if (ret < 0)</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "Failed setting SO_NOSIGPIPE: %s\n", strerror(errno));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "Failed setting SO_NOSIGPIPE: %s\n", strerror(errno));</span><br><span> #endif</span><br><span> sctp_sock_activate_events(ofd->fd);</span><br><span> }</span><br><span>@@ -272,11 +281,11 @@</span><br><span> break;</span><br><span> case STREAM_CLI_STATE_CONNECTED:</span><br><span> if (what & BSC_FD_READ) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "connected read\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "connected read\n");</span><br><span> osmo_stream_cli_read(cli);</span><br><span> }</span><br><span> if (what & BSC_FD_WRITE) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "connected write\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "connected write\n");</span><br><span> osmo_stream_cli_write(cli);</span><br><span> }</span><br><span> break;</span><br><span>@@ -503,7 +512,7 @@</span><br><span> {</span><br><span> struct osmo_stream_cli *cli = data;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "reconnecting.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "reconnecting.\n");</span><br><span> </span><br><span> switch(cli->state) {</span><br><span> case STREAM_CLI_STATE_CONNECTING:</span><br><span>@@ -535,18 +544,17 @@</span><br><span> ret = recv(cli->ofd.fd, msg->data, msg->data_len, 0);</span><br><span> if (ret < 0) {</span><br><span> if (errno == EPIPE || errno == ECONNRESET) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">- "lost connection with srv\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_ERROR, "lost connection with srv\n");</span><br><span> }</span><br><span> osmo_stream_cli_reconnect(cli);</span><br><span> return ret;</span><br><span> } else if (ret == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_ERROR, "connection closed with srv\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_ERROR, "connection closed with srv\n");</span><br><span> osmo_stream_cli_reconnect(cli);</span><br><span> return ret;</span><br><span> }</span><br><span> msgb_put(msg, ret);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLINP, LOGL_DEBUG, "received %d bytes from srv\n", ret);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGSCLI(cli, LOGL_DEBUG, "received %d bytes from srv\n", ret);</span><br><span> return ret;</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12836">change 12836</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12836"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: libosmo-netif </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ie22a80dcec95998cce0b25053fdf74f23eab6e53 </div>
<div style="display:none"> Gerrit-Change-Number: 12836 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>