udpsrc: Balance Linux value of get/set_rcvbuf
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Fri, 17 Aug 2018 18:17:39 +0000 (14:17 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Fri, 17 Aug 2018 18:24:25 +0000 (14:24 -0400)
On Linux, the kernel returns twice the size as it will allocate extra
space for accouting. We devides this value by two in order to ensure
that get/set value now match. This fixes the set buffer size validation
and allow having a nice warning when the size if surpassed and the
process does not have CAP_NET_ADMIN capabilities.

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

gst/udp/gstudpsrc.c

index 53c8e48..486938c 100644 (file)
@@ -1310,6 +1310,10 @@ gst_udpsrc_get_rcvbuf (GstUDPSrc * src)
     GST_DEBUG_OBJECT (src, "could not get udp buffer size");
     return 0;
   }
+#ifdef __linux__
+  /* Devise by 2 so that the numbers matches when we do get/set */
+  val /= 2;
+#endif
 
   return val;
 }