From a24dcc61d799bb24574a90266ba47432485fcb20 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Tue, 6 Jul 2021 17:48:47 +0200 Subject: [PATCH] mgcp_send_dummy: Check RTP destination is available before attempt tx Several log messages showing "Failed to send dummy RTP packet." were seen in a osmo-mgw on the field. Let's re-use the function to check and provide more information on what's wrong to ease debugging. Related: SYS#5498 Change-Id: Iee6ac1f4d24c131e3bf40c37e6fdc252e5208ec8 --- src/libosmo-mgcp/mgcp_network.c | 6 ++++++ tests/mgcp/mgcp_test.c | 4 ++++ tests/mgcp/mgcp_test.ok | 7 ------- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c index dfa952bea..5b3ea51c3 100644 --- a/src/libosmo-mgcp/mgcp_network.c +++ b/src/libosmo-mgcp/mgcp_network.c @@ -1037,6 +1037,12 @@ int mgcp_send_dummy(struct mgcp_endpoint *endp, struct mgcp_conn_rtp *conn) LOGPCONN(conn->conn, DRTP, LOGL_DEBUG, "sending dummy packet... %s\n", mgcp_conn_dump(conn->conn)); + /* Before we try to deliver the packet, we check if the destination + * port and IP-Address make sense at all. If not, we will be unable + * to deliver the packet. */ + if (check_rtp_destin(conn) != 0) + goto failed; + rc = mgcp_udp_send(conn->end.rtp.fd, &conn->end.addr, conn->end.rtp_port, rtp_dummy_payload, sizeof(rtp_dummy_payload)); diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index e6862e533..5bb7b2734 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -634,6 +634,10 @@ ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, dummy_packets += 1; } + /* Make sure address+port are valid */ + OSMO_ASSERT(dest_host); + OSMO_ASSERT(dest_port); + return len; } diff --git a/tests/mgcp/mgcp_test.ok b/tests/mgcp/mgcp_test.ok index 9c4814706..d3f8a26bd 100644 --- a/tests/mgcp/mgcp_test.ok +++ b/tests/mgcp/mgcp_test.ok @@ -118,7 +118,6 @@ checking response: using message with patched conn_id for comparison Response matches our expectations. (response contains a connection id) -Dummy packets: 2 ================================================ Testing MDCX4_PT1 @@ -142,7 +141,6 @@ checking response: using message with patched conn_id for comparison Response matches our expectations. (response contains a connection id) -Dummy packets: 2 ================================================ Testing MDCX4_PT2 @@ -166,7 +164,6 @@ checking response: using message with patched conn_id for comparison Response matches our expectations. (response contains a connection id) -Dummy packets: 2 ================================================ Testing MDCX4_PT3 @@ -190,7 +187,6 @@ checking response: using message with patched conn_id for comparison Response matches our expectations. (response contains a connection id) -Dummy packets: 2 ================================================ Testing MDCX4_PT4 @@ -214,7 +210,6 @@ checking response: using message with patched conn_id for comparison Response matches our expectations. (response contains a connection id) -Dummy packets: 2 ================================================ Testing MDCX4_SO @@ -253,7 +248,6 @@ checking response: using message with patched conn_id for comparison Response matches our expectations. (response contains a connection id) -Dummy packets: 2 ================================================ Testing DLCX @@ -441,7 +435,6 @@ checking response: using message with patched conn_id for comparison Response matches our expectations. (response contains a connection id) -Dummy packets: 2 ================================================ Testing CRCX