ortp: disable SO_REUSEADDR + SO_REUSEPORT
ortp >= 0.24.0 doesn't differentiate between SO_REUSEADDR and SO_REUSEPORT, and has both enabled by default. The latter means that we can end up with non-unique port bindings as we will not fail to bind the same port twice. This should have caused visible problems not only when operating multiple osmo-bts on one machine (rare), but also with a single osmo-bts. Once the range (default 16384-17407 ) wraps, there is a risk of new sockets (for new cals) colliding with old ones. As two ports (RTP+RTCP) are used per call, this means every 512 voice calls we expect the BTS to wrap. And from that point onwards there's a risk of overlapping with previously allocated sockets. Change-Id: I4fc9eee561c7958c70c63b4ffdc6cb700b795e28 Closes: OS#4444
This commit is contained in:
parent
9104597d76
commit
54c919ec48
|
@ -378,6 +378,12 @@ struct osmo_rtp_socket *osmo_rtp_socket_create(void *talloc_ctx, unsigned int fl
|
|||
rtp_session_set_profile(rs->sess, osmo_pt_profile);
|
||||
rtp_session_set_jitter_compensation(rs->sess, 100);
|
||||
|
||||
/* ortp >= 0.24.0 doesn't differentiate between SO_REUSEADDR and
|
||||
* SO_REUSEPORT, and has both enabled by default. The latter means that
|
||||
* we can end up with non-unique port bindings as we will not fail to
|
||||
* bind the same port twice */
|
||||
rtp_session_set_reuseaddr(rs->sess, false);
|
||||
|
||||
rtp_session_signal_connect(rs->sess, "ssrc_changed",
|
||||
(RtpCallback) ortp_sig_cb_ssrc,
|
||||
RTP_SIGNAL_PTR_CAST(rs));
|
||||
|
|
|
@ -54,7 +54,7 @@ static void test_bind_fail(void)
|
|||
else {
|
||||
printf("FAILED - second bind to port %u worked\n", port[0]);
|
||||
fflush(stdout);
|
||||
//OSMO_ASSERT(0);
|
||||
OSMO_ASSERT(0);
|
||||
}
|
||||
|
||||
osmo_rtp_socket_free(rs[0]);
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
First bind to any random local port...
|
||||
Now try to bind another socket to the same port: FAILED - second bind to port 16384 worked
|
||||
Now try to bind another socket to the same port: OK (EADDRINUSE)
|
||||
|
|
Loading…
Reference in New Issue