udpsink: bind to the given interface
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 24 Jun 2013 15:11:35 +0000 (17:11 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 24 Jun 2013 15:13:05 +0000 (17:13 +0200)
Actually call BINDTODEVICE to bind to the interface as given by the
property.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702819

gst/udp/gstmultiudpsink.c

index c11ff06..cb2674b 100644 (file)
@@ -1132,6 +1132,19 @@ gst_multiudpsink_start (GstBaseSink * bsink)
   }
 #endif
 
+#ifdef SO_BINDTODEVICE
+  if (sink->multi_iface) {
+    if (sink->used_socket) {
+      setsockopt (g_socket_get_fd (sink->used_socket), SOL_SOCKET,
+          SO_BINDTODEVICE, sink->multi_iface, strlen (sink->multi_iface));
+    }
+    if (sink->used_socket_v6) {
+      setsockopt (g_socket_get_fd (sink->used_socket_v6), SOL_SOCKET,
+          SO_BINDTODEVICE, sink->multi_iface, strlen (sink->multi_iface));
+    }
+  }
+#endif
+
   if (sink->used_socket)
     g_socket_set_broadcast (sink->used_socket, TRUE);
   if (sink->used_socket_v6)