mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 17:50:36 +00:00
rtsp-server: stream: Don't loop forever if binding to the multicast address fails
The address/port is pre-defined by the caller of the function, so retrying is only going to loop forever. Ideally the multicast address should be checked after allocating but this doesn't happen currently, so it's better to error out cleanly then to loop forever trying the same address. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2997>
This commit is contained in:
parent
8bb230b72a
commit
2b9009f504
1 changed files with 11 additions and 3 deletions
|
@ -1507,8 +1507,10 @@ again:
|
||||||
|| multicast) {
|
|| multicast) {
|
||||||
GstRTSPAddressFlags flags;
|
GstRTSPAddressFlags flags;
|
||||||
|
|
||||||
if (addr)
|
if (addr) {
|
||||||
|
g_assert (*server_addr_out == NULL);
|
||||||
rejected_addresses = g_list_prepend (rejected_addresses, addr);
|
rejected_addresses = g_list_prepend (rejected_addresses, addr);
|
||||||
|
}
|
||||||
|
|
||||||
if (!pool)
|
if (!pool)
|
||||||
goto no_pool;
|
goto no_pool;
|
||||||
|
@ -1558,9 +1560,15 @@ again:
|
||||||
if (!g_socket_bind (rtp_socket, rtp_sockaddr, FALSE, NULL)) {
|
if (!g_socket_bind (rtp_socket, rtp_sockaddr, FALSE, NULL)) {
|
||||||
GST_DEBUG_OBJECT (stream, "rtp bind() failed, will try again");
|
GST_DEBUG_OBJECT (stream, "rtp bind() failed, will try again");
|
||||||
g_object_unref (rtp_sockaddr);
|
g_object_unref (rtp_sockaddr);
|
||||||
if (transport_settings_defined)
|
if (transport_settings_defined) {
|
||||||
goto transport_settings_error;
|
goto transport_settings_error;
|
||||||
goto again;
|
} else if (*server_addr_out && ((pool
|
||||||
|
&& gst_rtsp_address_pool_has_unicast_addresses (pool))
|
||||||
|
|| multicast)) {
|
||||||
|
goto no_address;
|
||||||
|
} else {
|
||||||
|
goto again;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
g_object_unref (rtp_sockaddr);
|
g_object_unref (rtp_sockaddr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue