diff --git a/gst/udp/gstudpsink.c b/gst/udp/gstudpsink.c index bd1f75522b..224d57818d 100644 --- a/gst/udp/gstudpsink.c +++ b/gst/udp/gstudpsink.c @@ -125,11 +125,18 @@ gst_udpsink_finalize (GstUDPSink * udpsink) static gboolean gst_udpsink_set_uri (GstUDPSink * sink, const gchar * uri, GError ** error) { + gchar *host; + guint16 port; + gst_multiudpsink_remove (GST_MULTIUDPSINK (sink), sink->host, sink->port); - if (!gst_udp_parse_uri (uri, &sink->host, &sink->port)) + if (!gst_udp_parse_uri (uri, &host, &port)) goto wrong_uri; + g_free (sink->host); + sink->host = host; + sink->port = port; + g_free (sink->uri); sink->uri = g_strdup (uri);