Browse Source

rtsp: allow multicast port setting in transport section

Modified-and-...
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
(cherry picked from commit d2f16ee2a0)
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
pull/135/head
Vityusha V. Vinokurov 8 years ago
committed by Rémi Denis-Courmont
parent
commit
75aaaca3fd
  1. 17
      modules/stream_out/rtsp.c

17
modules/stream_out/rtsp.c

@ -705,7 +705,9 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id,
tpt = transport_next( tpt ) )
{
bool b_multicast = true, b_unsupp = false;
bool b_multicast_port_set = false;
unsigned loport = 5004, hiport; /* from RFC3551 */
unsigned mloport = 5004, mhiport = mloport + 1;
/* Check transport protocol. */
/* Currently, we only support RTP/AVP over UDP */
@ -732,6 +734,10 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id,
== 2 )
;
else
if( sscanf( opt, "port=%u-%u", &mloport, &mhiport )
== 2 )
b_multicast_port_set = true;
else
if( strncmp( opt, "mode=", 5 ) == 0 )
{
if( strncasecmp( opt + 5, "play", 4 )
@ -756,7 +762,7 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id,
* "source" and "append" are invalid (server-only);
* "ssrc" also (as clarified per RFC2326bis).
*
* For multicast, "port", "layers", "ttl" are set by the
* For multicast, "layers", "ttl" are set by the
* stream output configuration.
*
* For unicast, we want to decide "server_port" values.
@ -780,6 +786,15 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id,
net_GetPeerAddress(id->mcast_fd, dst, &dport);
/* Checking for multicast port override */
if( b_multicast_port_set
&& ((unsigned)dport != mloport
|| (unsigned)dport + 1 != mhiport))
{
answer->i_status = 551;
continue;
}
ttl = var_InheritInteger(owner, "ttl");
if (ttl <= 0)
/* FIXME: the TTL is left to the OS default, we can

Loading…
Cancel
Save