gstrtspconnection: messages_bytes not decreased
authorJoakim Johansson <joakimj@axis.com>
Thu, 3 Oct 2019 10:03:09 +0000 (12:03 +0200)
committerSebastian Dröge <slomo@coaxion.net>
Mon, 21 Oct 2019 09:58:27 +0000 (09:58 +0000)
The watch->messages_bytes is not decreased when the write operation
from the backlog is only partly successfull.

This commit decreases the watch->messages_bytes for the successfully
sent messages.

Fixes #679

gst-libs/gst/rtsp/gstrtspconnection.c

index ca091c5..a9ea51f 100644 (file)
@@ -4013,6 +4013,7 @@ gst_rtsp_source_dispatch_write (GPollableOutputStream * stream,
           /* all data of this message is sent, check body and otherwise
            * skip the whole message for next time */
           bytes_written -= (msg->data_size - msg->data_offset);
+          watch->messages_bytes -= (msg->data_size - msg->data_offset);
           msg->data_offset = msg->data_size;
 
           if (msg->body_data) {
@@ -4026,6 +4027,7 @@ gst_rtsp_source_dispatch_write (GPollableOutputStream * stream,
           if (bytes_written + msg->body_offset >= body_size) {
             /* body written, drop this message */
             bytes_written -= body_size - msg->body_offset;
+            watch->messages_bytes -= body_size - msg->body_offset;
             msg->body_offset = body_size;
             drop_messages++;
 
@@ -4037,11 +4039,13 @@ gst_rtsp_source_dispatch_write (GPollableOutputStream * stream,
             gst_rtsp_serialized_message_clear (msg);
           } else {
             msg->body_offset += bytes_written;
+            watch->messages_bytes -= bytes_written;
             bytes_written = 0;
           }
         } else {
           /* Need to continue sending from the data of this message */
           msg->data_offset += bytes_written;
+          watch->messages_bytes -= bytes_written;
           bytes_written = 0;
         }
       }