gstrtspconnection: messages_bytes not decreased

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
This commit is contained in:
Joakim Johansson 2019-10-03 12:03:09 +02:00 committed by Sebastian Dröge
parent 30672ba7d1
commit f2b3e9b4a1

View file

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