Commit 717ac057 authored by Peter Korsgaard's avatar Peter Korsgaard
Browse files

gst1-plugins-good: unbreak (dyn|multi)udpsink for systems without IPv6 support



Patch from upstream git.

Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent cdba648e
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
From 118876702467d6063e9c9745b7d093682ad16472 Mon Sep 17 00:00:00 2001
From: Peter Korsgaard <jacmet@sunsite.dk>
Date: Fri, 19 Jul 2013 15:24:08 +0200
Subject: [PATCH] (dyn|multi)udpsink: unbreak on !IPv6 systems after 130268bc
 (Bind socket before using it)

The g_socket functions only touch the error argument on errors, so clear
err back to NULL in case g_socket_new (G_SOCKET_FAMILY_IPV6) failed, as
we check for err != NULL later on to know if g_socket_bind() failed,
otherwise we errously fail on systems without IPv6 support.

https://bugzilla.gnome.org/show_bug.cgi?id=704553
---
 gst/udp/gstdynudpsink.c   |    1 +
 gst/udp/gstmultiudpsink.c |    1 +
 2 files changed, 2 insertions(+)

diff --git a/gst/udp/gstdynudpsink.c b/gst/udp/gstdynudpsink.c
index 4690bde..fadbd7f 100644
--- a/gst/udp/gstdynudpsink.c
+++ b/gst/udp/gstdynudpsink.c
@@ -316,6 +316,7 @@ gst_dynudpsink_start (GstBaseSink * bsink)
     if ((udpsink->used_socket =
             g_socket_new (G_SOCKET_FAMILY_IPV6,
                 G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL) {
+      g_clear_error (&err);
       udpsink->family = G_SOCKET_FAMILY_IPV4;
       if ((udpsink->used_socket = g_socket_new (G_SOCKET_FAMILY_IPV4,
                   G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL)
diff --git a/gst/udp/gstmultiudpsink.c b/gst/udp/gstmultiudpsink.c
index 92d1bac..69011c7 100644
--- a/gst/udp/gstmultiudpsink.c
+++ b/gst/udp/gstmultiudpsink.c
@@ -868,6 +868,7 @@ gst_multiudpsink_start (GstBaseSink * bsink)
     if (sink->force_ipv4 || (sink->used_socket =
             g_socket_new (G_SOCKET_FAMILY_IPV6,
                 G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL) {
+      g_clear_error (&err);
       if ((sink->used_socket = g_socket_new (G_SOCKET_FAMILY_IPV4,
                   G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL)
         goto no_socket;
-- 
1.7.10.4