mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:36:20 +00:00
gst/udp/gstudpsrc.c: OS X's bind() implementation is picky about its addrlen parameter and fails with EINVAL if it is...
Original commit message from CVS: Patch by: Daniel Franke <df at dfranke dot us> * gst/udp/gstudpsrc.c: (gst_udpsrc_create), (gst_udpsrc_start): OS X's bind() implementation is picky about its addrlen parameter and fails with EINVAL if it is larger than expected for the socket's address family. Set the length to the expected length instead. Fixes #553191.
This commit is contained in:
parent
bf8777356b
commit
edd6239979
2 changed files with 12 additions and 10 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2008-09-25 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||||
|
|
||||||
|
Patch by: Daniel Franke <df at dfranke dot us>
|
||||||
|
|
||||||
|
* gst/udp/gstudpsrc.c: (gst_udpsrc_create), (gst_udpsrc_start):
|
||||||
|
OS X's bind() implementation is picky about its addrlen parameter and
|
||||||
|
fails with EINVAL if it is larger than expected for the socket's address
|
||||||
|
family. Set the length to the expected length instead. Fixes #553191.
|
||||||
|
|
||||||
2008-09-23 Wim Taymans <wim.taymans@collabora.co.uk>
|
2008-09-23 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||||
|
|
||||||
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_open):
|
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_open):
|
||||||
|
|
|
@ -376,26 +376,18 @@ static GstFlowReturn
|
||||||
gst_udpsrc_create (GstPushSrc * psrc, GstBuffer ** buf)
|
gst_udpsrc_create (GstPushSrc * psrc, GstBuffer ** buf)
|
||||||
{
|
{
|
||||||
GstUDPSrc *udpsrc;
|
GstUDPSrc *udpsrc;
|
||||||
|
|
||||||
GstNetBuffer *outbuf;
|
GstNetBuffer *outbuf;
|
||||||
|
|
||||||
struct sockaddr_storage tmpaddr;
|
struct sockaddr_storage tmpaddr;
|
||||||
|
|
||||||
socklen_t len;
|
socklen_t len;
|
||||||
|
|
||||||
guint8 *pktdata;
|
guint8 *pktdata;
|
||||||
|
|
||||||
gint pktsize;
|
gint pktsize;
|
||||||
|
|
||||||
#ifdef G_OS_UNIX
|
#ifdef G_OS_UNIX
|
||||||
gint readsize;
|
gint readsize;
|
||||||
#elif defined G_OS_WIN32
|
#elif defined G_OS_WIN32
|
||||||
gulong readsize;
|
gulong readsize;
|
||||||
#endif
|
#endif
|
||||||
GstClockTime timeout;
|
GstClockTime timeout;
|
||||||
|
|
||||||
gint ret;
|
gint ret;
|
||||||
|
|
||||||
gboolean try_again;
|
gboolean try_again;
|
||||||
|
|
||||||
udpsrc = GST_UDPSRC_CAST (psrc);
|
udpsrc = GST_UDPSRC_CAST (psrc);
|
||||||
|
@ -787,8 +779,9 @@ gst_udpsrc_start (GstBaseSrc * bsrc)
|
||||||
goto setsockopt_error;
|
goto setsockopt_error;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (src, "binding on port %d", src->port);
|
GST_DEBUG_OBJECT (src, "binding on port %d", src->port);
|
||||||
if ((ret = bind (src->sock.fd, (struct sockaddr *) &src->myaddr,
|
/* Mac OS is picky about the size */
|
||||||
sizeof (src->myaddr))) < 0)
|
len = sizeof (struct sockaddr_in);
|
||||||
|
if ((ret = bind (src->sock.fd, (struct sockaddr *) &src->myaddr, len)) < 0)
|
||||||
goto bind_error;
|
goto bind_error;
|
||||||
|
|
||||||
len = sizeof (src->myaddr);
|
len = sizeof (src->myaddr);
|
||||||
|
|
Loading…
Reference in a new issue