<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-remsim/+/17186">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">server: Send ConfigClientBankReq with bankd_port==0 on map delete<br><br>If a slotmap is deleted via the REST API, don't only remove it from<br>the bankd, but also remove it from the client.<br><br>Change-Id: Ia2fc2a098471add56cb35e74639417d865704989<br>Closes: OS#4399<br>---<br>M src/server/rspro_server.c<br>1 file changed, 20 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/86/17186/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c</span><br><span>index 723aac8..b35800f 100644</span><br><span>--- a/src/server/rspro_server.c</span><br><span>+++ b/src/server/rspro_server.c</span><br><span>@@ -250,20 +250,25 @@</span><br><span> /* if caller didn't provide bankd_conn, resolve it from map */</span><br><span> if (!bankd_conn)</span><br><span> bankd_conn = bankd_conn_by_id(srv, map->bank.bank_id);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!bankd_conn)</span><br><span style="color: hsl(0, 100%, 40%);">- return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* obtain IP and port of bankd */</span><br><span style="color: hsl(0, 100%, 40%);">- rc = osmo_sock_get_ip_and_port(bankd_conn->peer->ofd.fd, ip_str, sizeof(ip_str),</span><br><span style="color: hsl(0, 100%, 40%);">- port_str, sizeof(port_str), false);</span><br><span style="color: hsl(0, 100%, 40%);">- if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGPFSM(bankd_conn->fi, "Error during getpeername\n");</span><br><span style="color: hsl(0, 100%, 40%);">- return;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (map->state == SLMAP_S_DELETING || !bankd_conn) {</span><br><span style="color: hsl(120, 100%, 40%);">+ bankd_ip = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ bankd_port = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* obtain IP and port of bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = osmo_sock_get_ip_and_port(bankd_conn->peer->ofd.fd, ip_str, sizeof(ip_str),</span><br><span style="color: hsl(120, 100%, 40%);">+ port_str, sizeof(port_str), false);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGPFSM(bankd_conn->fi, "Error during getpeername\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ return;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ bankd_ip = ntohl(inet_addr(ip_str));</span><br><span style="color: hsl(120, 100%, 40%);">+ bankd_port = 9999; /* TODO: configurable */</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- bankd_ip = ntohl(inet_addr(ip_str));</span><br><span style="color: hsl(0, 100%, 40%);">- bankd_port = 9999; /* TODO: configurable */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* determine if IP/port of bankd have changed */</span><br><span> if (conn->client.bankd.port != bankd_port || conn->client.bankd.ip != bankd_ip) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGPFSM(conn->fi, "Bankd IP/Port changed to %s:%s\n", ip_str, port_str);</span><br><span style="color: hsl(120, 100%, 40%);">+ struct in_addr ia = { .s_addr = bankd_ip };</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGPFSM(conn->fi, "Bankd IP/Port changed to %s:%u\n", inet_ntoa(ia), bankd_port);</span><br><span> conn->client.bankd.ip = bankd_ip;</span><br><span> conn->client.bankd.port = bankd_port;</span><br><span> changed = true;</span><br><span>@@ -371,9 +376,11 @@</span><br><span> break;</span><br><span> }</span><br><span> slotmaps_unlock(slotmaps);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* update client! */</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(map->state == SLMAP_S_DELETING);</span><br><span style="color: hsl(120, 100%, 40%);">+ _update_client_for_slotmap(map, conn->srv, conn);</span><br><span> /* slotmap_del() will remove it from both global and bank list */</span><br><span> slotmap_del(map->maps, map);</span><br><span style="color: hsl(0, 100%, 40%);">- /* FIXME: update client! */</span><br><span> break;</span><br><span> case CLNTC_E_PUSH: /* check if any create or delete requests are pending */</span><br><span> slotmaps_wrlock(slotmaps);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-remsim/+/17186">change 17186</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/c/osmo-remsim/+/17186"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-remsim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ia2fc2a098471add56cb35e74639417d865704989 </div>
<div style="display:none"> Gerrit-Change-Number: 17186 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>