aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/sccp
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-04-05 18:13:40 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-04-05 22:00:24 +0200
commitb71517f07ec46558bc6032bdaa27650f8bef634d (patch)
tree2c25fafabb3c22965945332c7180e8435093166b /openbsc/src/sccp
parent3c1221e2b23876cf0cb4170281eceb73e3395efd (diff)
[sccp] Add a force_free method for connections
E.g. when the underlying connection transport medium is gone one needs to force to close SCCP connections, add this helper. It will remove the connection from the list of connections and it will free the data.
Diffstat (limited to 'openbsc/src/sccp')
-rw-r--r--openbsc/src/sccp/sccp.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/openbsc/src/sccp/sccp.c b/openbsc/src/sccp/sccp.c
index 4bd87c8ed..e0fd02e0e 100644
--- a/openbsc/src/sccp/sccp.c
+++ b/openbsc/src/sccp/sccp.c
@@ -1198,6 +1198,17 @@ int sccp_connection_free(struct sccp_connection *connection)
return 0;
}
+int sccp_connection_force_free(struct sccp_connection *con)
+{
+ if (con->connection_state > SCCP_CONNECTION_STATE_NONE &&
+ con->connection_state < SCCP_CONNECTION_STATE_RELEASE_COMPLETE)
+ llist_del(&con->list);
+
+ con->connection_state = SCCP_CONNECTION_STATE_REFUSED;
+ sccp_connection_free(con);
+ return 0;
+}
+
struct sccp_connection *sccp_connection_socket(void)
{
return talloc_zero(tall_sccp_ctx, struct sccp_connection);