Change in osmo-remsim[master]: server: Send ConfigClientBankReq with bankd_port == 0 on map delete

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/.

laforge gerrit-no-reply at lists.osmocom.org
Sun Feb 16 14:51:06 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-remsim/+/17186 )

Change subject: server: Send ConfigClientBankReq with bankd_port == 0 on map delete
......................................................................

server: Send ConfigClientBankReq with bankd_port == 0 on map delete

If a slotmap is deleted via the REST API, don't only remove it from
the bankd, but also remove it from the client.

Change-Id: Ia2fc2a098471add56cb35e74639417d865704989
Closes: OS#4399
---
M src/server/rspro_server.c
1 file changed, 20 insertions(+), 13 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c
index 723aac8..b35800f 100644
--- a/src/server/rspro_server.c
+++ b/src/server/rspro_server.c
@@ -250,20 +250,25 @@
 	/* if caller didn't provide bankd_conn, resolve it from map */
 	if (!bankd_conn)
 		bankd_conn = bankd_conn_by_id(srv, map->bank.bank_id);
-	if (!bankd_conn)
-		return;
-
-	/* obtain IP and port of bankd */
-	rc = osmo_sock_get_ip_and_port(bankd_conn->peer->ofd.fd, ip_str, sizeof(ip_str),
-					port_str, sizeof(port_str), false);
-	if (rc < 0) {
-		LOGPFSM(bankd_conn->fi, "Error during getpeername\n");
-		return;
+	if (map->state == SLMAP_S_DELETING || !bankd_conn) {
+		bankd_ip = 0;
+		bankd_port = 0;
+	} else {
+		/* obtain IP and port of bankd */
+		rc = osmo_sock_get_ip_and_port(bankd_conn->peer->ofd.fd, ip_str, sizeof(ip_str),
+						port_str, sizeof(port_str), false);
+		if (rc < 0) {
+			LOGPFSM(bankd_conn->fi, "Error during getpeername\n");
+			return;
+		}
+		bankd_ip = ntohl(inet_addr(ip_str));
+		bankd_port = 9999; /* TODO: configurable */
 	}
-	bankd_ip = ntohl(inet_addr(ip_str));
-	bankd_port = 9999; /* TODO: configurable */
+
+	/* determine if IP/port of bankd have changed */
 	if (conn->client.bankd.port != bankd_port || conn->client.bankd.ip != bankd_ip) {
-		LOGPFSM(conn->fi, "Bankd IP/Port changed to %s:%s\n", ip_str, port_str);
+		struct in_addr ia = { .s_addr = bankd_ip };
+		LOGPFSM(conn->fi, "Bankd IP/Port changed to %s:%u\n", inet_ntoa(ia), bankd_port);
 		conn->client.bankd.ip = bankd_ip;
 		conn->client.bankd.port = bankd_port;
 		changed = true;
@@ -371,9 +376,11 @@
 			break;
 		}
 		slotmaps_unlock(slotmaps);
+		/* update client! */
+		OSMO_ASSERT(map->state == SLMAP_S_DELETING);
+		_update_client_for_slotmap(map, conn->srv, conn);
 		/* slotmap_del() will remove it from both global and bank list */
 		slotmap_del(map->maps, map);
-		/* FIXME: update client! */
 		break;
 	case CLNTC_E_PUSH: /* check if any create or delete requests are pending */
 		slotmaps_wrlock(slotmaps);

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-remsim/+/17186
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-remsim
Gerrit-Branch: master
Gerrit-Change-Id: Ia2fc2a098471add56cb35e74639417d865704989
Gerrit-Change-Number: 17186
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200216/149784e1/attachment.htm>


More information about the gerrit-log mailing list