Commit 961c9852 authored by Laurent Glayal's avatar Laurent Glayal Committed by Wim Taymans
Browse files

gst/udp/gstudpsrc.c: When the socket is used by the app for other purposes,...

gst/udp/gstudpsrc.c: When the socket is used by the app for other purposes, don't generate an error if there is activ...

Original commit message from CVS:
Based on patch by: Laurent Glayal  <spglegle yahoo fr>
* gst/udp/gstudpsrc.c: (gst_udpsrc_create):
When the socket is used by the app for other purposes, don't generate an
error if there is activaty on the socket that is not data related.
Fixes #487488.
parent 279fe5fa
2007-10-18 Wim Taymans <wim.taymans@gmail.com>
Based on patch by: Laurent Glayal <spglegle yahoo fr>
* gst/udp/gstudpsrc.c: (gst_udpsrc_create):
When the socket is used by the app for other purposes, don't generate an
error if there is activaty on the socket that is not data related.
Fixes #487488.
2007-10-18 Wim Taymans <wim.taymans@gmail.com>
 
* sys/v4l2/v4l2src_calls.c: (gst_v4l2_buffer_finalize),
......
......@@ -377,6 +377,7 @@ gst_udpsrc_create (GstPushSrc * psrc, GstBuffer ** buf)
udpsrc = GST_UDPSRC (psrc);
retry:
/* quick check, avoid going in select when we already have data */
readsize = 0;
if ((ret = IOCTL_SOCKET (udpsrc->sock, FIONREAD, &readsize)) < 0)
......@@ -450,8 +451,12 @@ gst_udpsrc_create (GstPushSrc * psrc, GstBuffer ** buf)
if ((ret = IOCTL_SOCKET (udpsrc->sock, FIONREAD, &readsize)) < 0)
goto ioctl_failed;
/* if we get here and there is nothing to read from the socket, the select got
* woken up by activity on the socket but it was not a read. We how someone
* will also do something with the socket so that we don't go into an infinite
* loop in the select(). */
if (!readsize)
goto nothing_to_read;
goto retry;
no_select:
GST_LOG_OBJECT (udpsrc, "ioctl says %d bytes available", (int) readsize);
......@@ -514,13 +519,6 @@ ioctl_failed:
("ioctl failed %d: %s (%d)", ret, g_strerror (errno), errno));
return GST_FLOW_ERROR;
}
nothing_to_read:
{
GST_ELEMENT_ERROR (udpsrc, RESOURCE, READ, (NULL),
("ioctl returned readsize 0 %d: %s (%d)", ret, g_strerror (errno),
errno));
return GST_FLOW_ERROR;
}
receive_error:
{
g_free (pktdata);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment