mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 09:40:37 +00:00
srt: Do not ignore SRT socket error event
... and set SRT_EPOLL_IN flag if the client is not sender (i.e., source element) since waiting readable event for srt_recvmsg() makes more sense. https://bugzilla.gnome.org/show_bug.cgi?id=796842
This commit is contained in:
parent
f46af953c1
commit
32140dcb84
2 changed files with 7 additions and 5 deletions
|
@ -43,6 +43,9 @@ gst_srt_client_connect (GstElement * elem, int sender,
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
gpointer sa;
|
gpointer sa;
|
||||||
size_t sa_len;
|
size_t sa_len;
|
||||||
|
int poll_event = SRT_EPOLL_ERR;
|
||||||
|
|
||||||
|
poll_event |= sender ? SRT_EPOLL_OUT : SRT_EPOLL_IN;
|
||||||
|
|
||||||
if (host == NULL) {
|
if (host == NULL) {
|
||||||
GST_ELEMENT_ERROR (elem, RESOURCE, OPEN_READ, ("Invalid host"),
|
GST_ELEMENT_ERROR (elem, RESOURCE, OPEN_READ, ("Invalid host"),
|
||||||
|
@ -137,8 +140,7 @@ gst_srt_client_connect (GstElement * elem, int sender,
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
srt_epoll_add_usock (*poll_id, sock, &(int) {
|
srt_epoll_add_usock (*poll_id, sock, &poll_event);
|
||||||
SRT_EPOLL_OUT});
|
|
||||||
|
|
||||||
if (srt_connect (sock, sa, sa_len) == SRT_ERROR) {
|
if (srt_connect (sock, sa, sa_len) == SRT_ERROR) {
|
||||||
GST_ELEMENT_ERROR (elem, RESOURCE, OPEN_READ, ("Connection error"),
|
GST_ELEMENT_ERROR (elem, RESOURCE, OPEN_READ, ("Connection error"),
|
||||||
|
@ -235,7 +237,7 @@ gst_srt_server_listen (GstElement * elem, int sender, const gchar * host,
|
||||||
}
|
}
|
||||||
|
|
||||||
srt_epoll_add_usock (*poll_id, sock, &(int) {
|
srt_epoll_add_usock (*poll_id, sock, &(int) {
|
||||||
SRT_EPOLL_IN});
|
SRT_EPOLL_IN | SRT_EPOLL_ERR});
|
||||||
|
|
||||||
if (srt_bind (sock, &sa, sa_len) == SRT_ERROR) {
|
if (srt_bind (sock, &sa, sa_len) == SRT_ERROR) {
|
||||||
GST_WARNING_OBJECT (elem, "failed to bind SRT server socket (reason: %s)",
|
GST_WARNING_OBJECT (elem, "failed to bind SRT server socket (reason: %s)",
|
||||||
|
|
|
@ -175,8 +175,8 @@ gst_srt_client_src_fill (GstPushSrc * src, GstBuffer * outbuf)
|
||||||
SRTSOCKET ready[2];
|
SRTSOCKET ready[2];
|
||||||
gint recv_len;
|
gint recv_len;
|
||||||
|
|
||||||
if (srt_epoll_wait (priv->poll_id, 0, 0, ready, &(int) {
|
if (srt_epoll_wait (priv->poll_id, ready, &(int) {
|
||||||
2}, priv->poll_timeout, 0, 0, 0, 0) == -1) {
|
2}, 0, 0, priv->poll_timeout, 0, 0, 0, 0) == -1) {
|
||||||
|
|
||||||
/* Assuming that timeout error is normal */
|
/* Assuming that timeout error is normal */
|
||||||
if (srt_getlasterror (NULL) != SRT_ETIMEOUT) {
|
if (srt_getlasterror (NULL) != SRT_ETIMEOUT) {
|
||||||
|
|
Loading…
Reference in a new issue