summaryrefslogtreecommitdiff
path: root/gst/librfb
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2016-03-24 18:27:54 -0400
committerNicolas Dufresne <nicolas.dufresne@collabora.com>2016-04-05 13:35:25 -0400
commit89f3f162a54a04654bdb87ffb522efffae46ec80 (patch)
treef4402f3deb25bf0bec620d36e61cd93fd644a1e1 /gst/librfb
parent0eb5722af68df00bc21806752e32ec0ab67a3eb9 (diff)
downloadgstreamer-plugins-bad-89f3f162a54a04654bdb87ffb522efffae46ec80.tar.gz
rfbsrc: Check for connection being closed
Although it's not very well documented, g_input_stream_read_all() will set the number of bytes read to 0 if the connection is closed rather then returning an error.
Diffstat (limited to 'gst/librfb')
-rw-r--r--gst/librfb/rfbdecoder.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gst/librfb/rfbdecoder.c b/gst/librfb/rfbdecoder.c
index 9142f1dcb..e6eb70135 100644
--- a/gst/librfb/rfbdecoder.c
+++ b/gst/librfb/rfbdecoder.c
@@ -188,6 +188,7 @@ rfb_decoder_read (RfbDecoder * decoder, guint32 len)
{
GInputStream *in;
GError *err = NULL;
+ gsize count = 0;
if (!decoder->connection)
return FALSE;
@@ -204,10 +205,16 @@ rfb_decoder_read (RfbDecoder * decoder, guint32 len)
decoder->data_len = len;
}
- if (!g_input_stream_read_all (in, decoder->data, len, NULL,
+ if (!g_input_stream_read_all (in, decoder->data, len, &count,
decoder->cancellable, &err))
goto recv_error;
+ if (count == 0) {
+ g_set_error_literal (&err, G_IO_ERROR, G_IO_ERROR_BROKEN_PIPE,
+ "Connection was closed.");
+ goto recv_error;
+ }
+
return decoder->data;
recv_error: