diff --git a/gst-libs/gst/rtsp/gstrtspconnection.c b/gst-libs/gst/rtsp/gstrtspconnection.c index 088a67e7f9..19202a2c9f 100644 --- a/gst-libs/gst/rtsp/gstrtspconnection.c +++ b/gst-libs/gst/rtsp/gstrtspconnection.c @@ -1337,6 +1337,10 @@ gst_rtsp_connection_write (GstRTSPConnection * conn, const guint8 * data, else goto select_error; } + + /* could also be an error with read socket */ + if (gst_poll_fd_has_error (conn->fdset, conn->readfd)) + goto socket_error; } return GST_RTSP_OK; @@ -1353,6 +1357,10 @@ stopped: { return GST_RTSP_EINTR; } +socket_error: + { + return GST_RTSP_ENET; + } write_error: { return res; @@ -2050,6 +2058,11 @@ gst_rtsp_connection_read (GstRTSPConnection * conn, guint8 * data, guint size, else goto select_error; } + + /* could also be an error with write socket */ + if (gst_poll_fd_has_error (conn->fdset, conn->writefd)) + goto socket_error; + gst_poll_set_controllable (conn->fdset, FALSE); } return GST_RTSP_OK; @@ -2071,6 +2084,10 @@ eof: { return GST_RTSP_EEOF; } +socket_error: + { + res = GST_RTSP_ENET; + } read_error: { return res; @@ -2204,6 +2221,11 @@ gst_rtsp_connection_receive (GstRTSPConnection * conn, GstRTSPMessage * message, else goto select_error; } + + /* could also be an error with write socket */ + if (gst_poll_fd_has_error (conn->fdset, conn->writefd)) + goto socket_error; + gst_poll_set_controllable (conn->fdset, FALSE); } @@ -2233,6 +2255,11 @@ eof: res = GST_RTSP_EEOF; goto cleanup; } +socket_error: + { + res = GST_RTSP_ENET; + goto cleanup; + } read_error: cleanup: {