rtspconnection: only send new data immediately if there are no queued messages
authorOgnyan Tonchev <ognyan@axis.com>
Mon, 30 Jan 2012 14:55:26 +0000 (15:55 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 17 Feb 2012 14:40:35 +0000 (14:40 +0000)
Even if watch->messages->length is 0 there may still be some
data from a message that was only written partially at the
previous attempt stored in watch->write_data, so check for
that as well. We don't want to write data into the middle
of another message, which could happen when there wasn't
enough bandwidth.

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

gst-libs/gst/rtsp/gstrtspconnection.c

index c7b0f32..731add3 100644 (file)
@@ -3490,7 +3490,7 @@ gst_rtsp_watch_write_data (GstRTSPWatch * watch, const guint8 * data,
   g_mutex_lock (watch->mutex);
 
   /* try to send the message synchronously first */
-  if (watch->messages->length == 0) {
+  if (watch->messages->length == 0 && watch->write_data == NULL) {
     res = write_bytes (watch->writefd.fd, data, &off, size);
     if (res != GST_RTSP_EINTR) {
       if (id != NULL)