souphttpclientsink: Free queued buffers in ::reset
authorNirbheek Chauhan <nirbheek@centricular.com>
Wed, 1 Oct 2014 17:35:03 +0000 (23:05 +0530)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 2 Oct 2014 06:48:27 +0000 (09:48 +0300)
::render sets a new callback for writing out new buffers only if there aren't
already buffers queued for writing with a previously-scheduled callback.
However, if the previously-scheduled callback is interrupted by a state change
(either manually or due to an error) and there are still buffers in the queue,
restarting the pipeline will result in buffers being queued forever, and no
callbacks will ever be scheduled, and no buffers will be written out.

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

ext/soup/gstsouphttpclientsink.c

index 904d71c..a1bfa1b 100644 (file)
@@ -244,6 +244,9 @@ gst_soup_http_client_sink_init (GstSoupHttpClientSink * souphttpsink)
 static void
 gst_soup_http_client_sink_reset (GstSoupHttpClientSink * souphttpsink)
 {
+  g_list_free_full (souphttpsink->queued_buffers,
+      (GDestroyNotify) gst_buffer_unref);
+  souphttpsink->queued_buffers = NULL;
   g_free (souphttpsink->reason_phrase);
   souphttpsink->reason_phrase = NULL;
   souphttpsink->status_code = 0;