Change in libosmo-sccp[master]: return error code from xua_srv_conn_cb() if conn is freed

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

Stefan Sperling gerrit-no-reply at lists.osmocom.org
Fri Nov 9 15:35:28 UTC 2018


Stefan Sperling has submitted this change and it was merged. ( https://gerrit.osmocom.org/11704 )

Change subject: return error code from xua_srv_conn_cb() if conn is freed
......................................................................

return error code from xua_srv_conn_cb() if conn is freed

Allow callers of xua_srv_conn_cb() to tell whether conn
was freed by returning error code EBADF, which is also
used elsewhere in osmocom programs for this purpose.

This is necessary because xua_srv_conn_cb() might be running
inside of a loop which checks for read and then write events
on the connection. If the connection is freed by xua_srv_conn_cb()
as part of processing a read event, callers should avoid further
processing of events. But if we don't return an error we are leaving
callers none the wiser and with a dangling conn pointer.

Change-Id: I7359667b2f25d6c45acc70049b2a4ee2f376a1df
Related: OS#3685
---
M src/osmo_ss7.c
1 file changed, 5 insertions(+), 1 deletion(-)

Approvals:
  Pau Espin Pedrol: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo_ss7.c b/src/osmo_ss7.c
index 9805b3b..f97876c 100644
--- a/src/osmo_ss7.c
+++ b/src/osmo_ss7.c
@@ -1424,9 +1424,11 @@
 		__func__, rc, flags);
 	if (rc < 0) {
 		osmo_stream_srv_destroy(conn);
+		rc = -EBADF;
 		goto out;
 	} else if (rc == 0) {
 		osmo_stream_srv_destroy(conn);
+		rc = -EBADF;
 		goto out;
 	} else {
 		msgb_put(msg, rc);
@@ -1440,16 +1442,18 @@
 		switch (notif->sn_header.sn_type) {
 		case SCTP_SHUTDOWN_EVENT:
 			osmo_stream_srv_destroy(conn);
+			rc = -EBADF;
 			break;
 		case SCTP_ASSOC_CHANGE:
 			if (notif->sn_assoc_change.sac_state == SCTP_RESTART)
 				xua_asp_send_xlm_prim_simple(asp, OSMO_XLM_PRIM_M_SCTP_RESTART,
 							     PRIM_OP_INDICATION);
+			rc = 0;
 			break;
 		default:
+			rc = 0;
 			break;
 		}
-		rc = 0;
 		goto out;
 	}
 

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

Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I7359667b2f25d6c45acc70049b2a4ee2f376a1df
Gerrit-Change-Number: 11704
Gerrit-PatchSet: 3
Gerrit-Owner: Stefan Sperling <ssperling at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: Stefan Sperling <ssperling at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181109/ad8f93cb/attachment.htm>


More information about the gerrit-log mailing list