tcpserversink: don't error out if clients send us something, just ignore it
authorTim-Philipp Müller <tim@centricular.com>
Sat, 4 Apr 2015 20:38:40 +0000 (21:38 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 4 Apr 2015 20:38:40 +0000 (21:38 +0100)
We don't expect clients to send us any data, but if they do, just
ignore it. Web browsers might send us an HTTP request for example,
but some will still be happy if we just send them data without
a proper HTTP response.

There was a bug in the reading code path. We only have a small
read buffer and would provoke an EWOULDBLOCK trying to read
because we don't bail out of the loop early enough.

https://bugzilla.gnome.org/show_bug.cgi?id=743834

gst/tcp/gstmultisocketsink.c

index 22a7e33..aed9808 100644 (file)
@@ -575,7 +575,7 @@ gst_multi_socket_sink_handle_client_read (GstMultiSocketSink * sink,
     GST_DEBUG_OBJECT (sink, "%s client wants us to read", mhclient->debug);
 
     navail = g_socket_get_available_bytes (mhclient->handle.socket);
-    if (navail < 0)
+    if (navail <= 0)
       break;
 
     nread =