aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2023-12-01 01:52:43 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2023-12-05 13:44:25 +0100
commita213c5d1902ca5cd2e1068ad60561b581bf347af (patch)
tree5b14b0159d3e28acc3afabdfd3cf99f554c0855f
parent8241fd91ba4d06e28d7e338ca1f81c5567672d1d (diff)
check_rtp_origin: drop special case for legacy IuUP hack
We have proper IuUP support and everything about this legacy hack should be purged. The purpose of this function is to validate that RTP is coming from the expected address and port. To allow that legacy IuUP hack, which is no longer needed, we punched a hole into this validation, by adding this special case for loopback mode (suddenly we don't care who or what sends RTP and bounce it back to anyone). So let's get rid of this hole that was only needed for very early 3G voice hacking. Instead, we permit RTP for IuUP Initialization regardless of the RTP loopback/send/recv mode since I6c365559a7bd197349f0ea99f7a13b56a4bb580b Related: SYS#6657 Change-Id: I158dd046fdfcb10392cde3de8cc88dd095a05b40
-rw-r--r--src/libosmo-mgcp/mgcp_network.c30
1 files changed, 7 insertions, 23 deletions
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index 6263575ef..c5293afa9 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -847,29 +847,13 @@ static int check_rtp_origin(struct mgcp_conn_rtp *conn, struct osmo_sockaddr *ad
osmo_sockaddr_to_str(addr));
return 0;
}
- switch (conn->conn->mode) {
- case MGCP_CONN_LOOPBACK:
- /* HACK: for IuUP, we want to reply with an IuUP Initialization ACK upon the first RTP
- * message received. We currently hackishly accomplish that by putting the endpoint in
- * loopback mode and patching over the looped back RTP message to make it look like an
- * ack. We don't know the femto cell's IP address and port until the RAB Assignment
- * Response is received, but the nano3G expects an IuUP Initialization Ack before it even
- * sends the RAB Assignment Response. Hence, if the remote address is 0.0.0.0 and the
- * MGCP port is in loopback mode, allow looping back the packet to any source. */
- LOGPCONN(conn->conn, DRTP, LOGL_ERROR,
- "In loopback mode and remote address not set: allowing data from address: %s\n",
- osmo_sockaddr_to_str(addr));
- return 0;
-
- default:
- /* Receiving early media before the endpoint is configured. Instead of logging
- * this as an error that occurs on every call, keep it more low profile to not
- * confuse humans with expected errors. */
- LOGPCONN(conn->conn, DRTP, LOGL_INFO,
- "Rx RTP from %s, but remote address not set: dropping early media\n",
- osmo_sockaddr_to_str(addr));
- return -1;
- }
+ /* Receiving early media before the endpoint is configured. Instead of logging
+ * this as an error that occurs on every call, keep it more low profile to not
+ * confuse humans with expected errors. */
+ LOGPCONN(conn->conn, DRTP, LOGL_INFO,
+ "Rx RTP from %s, but remote address not set: dropping early media\n",
+ osmo_sockaddr_to_str(addr));
+ return -1;
}
/* Note: Check if the inbound RTP data comes from the same host to