Hello Neels Hofmeyr, Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/4227 to look at the new patch set (#7). protocol: allow wildcarded DLCX In many cases it is simpler to instruct the mgcp-gw to drop all connections at once instead of removing each connection individually. drop all connections and release the endpoint in when no connection id is supplied with the DLCX command. Change-Id: Ib5fcc72775bf72b489ff79ade36fb345d8d20736 --- M include/osmocom/mgcp_client/mgcp_client.h M src/libosmo-mgcp/mgcp_protocol.c 2 files changed, 20 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/27/4227/7 diff --git a/include/osmocom/mgcp_client/mgcp_client.h b/include/osmocom/mgcp_client/mgcp_client.h index 11680db..e91b190 100644 --- a/include/osmocom/mgcp_client/mgcp_client.h +++ b/include/osmocom/mgcp_client/mgcp_client.h @@ -36,7 +36,7 @@ char *body; struct mgcp_response_head head; uint16_t audio_port; - char audio_ip[INET_ADDRSTRLEN]; + char audio_ip[INET_ADDRSTRLEN]; }; enum mgcp_verb { diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c index c32f3d2..c5245ca 100644 --- a/src/libosmo-mgcp/mgcp_protocol.c +++ b/src/libosmo-mgcp/mgcp_protocol.c @@ -908,14 +908,31 @@ } } - /* find the connection */ + /* When no connection id is supplied, we will interpret this as a + * wildcarded DLCX and drop all connections at once. (See also + * RFC3435 Section F.7) */ + if (!ci) { + LOGP(DLMGCP, LOGL_NOTICE, + "DLCX: endpoint:%x missing ci (connectionIdentifier), will remove all connections at once\n", + ENDPOINT_NUMBER(endp)); + + mgcp_release_endp(endp); + + /* Note: In this case we do not return any statistics, + * as we assume that the client is not interested in + * this case. */ + return create_ok_response(endp, 200, "DLCX", p->trans); + } + + /* Parse the connection id */ if (mgcp_parse_ci(&conn_id, ci)) { LOGP(DLMGCP, LOGL_ERROR, - "DLCX: endpoint:%x insufficient parameters, missing ci (connectionIdentifier)\n", + "DLCX: endpoint:%x insufficient parameters, invalid ci (connectionIdentifier)\n", ENDPOINT_NUMBER(endp)); return create_err_response(endp, 400, "DLCX", p->trans); } + /* Find the connection */ conn = mgcp_conn_get_rtp(endp, conn_id); if (!conn) goto error3; -- To view, visit https://gerrit.osmocom.org/4227 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib5fcc72775bf72b489ff79ade36fb345d8d20736 Gerrit-PatchSet: 7 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter <pma...@sysmocom.de> Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr <nhofm...@sysmocom.de>