ext/shout2/gstshout2.c: Don't crash in case the connection to the server fails: don...
authorTim-Philipp Müller <tim@centricular.net>
Mon, 17 Apr 2006 19:12:36 +0000 (19:12 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Mon, 17 Apr 2006 19:12:36 +0000 (19:12 +0000)
Original commit message from CVS:
* ext/shout2/gstshout2.c: (gst_shout2send_render):
Don't crash in case the connection to the server fails:
don't set pointer to NULL by assigning FALSE; error out
properly by using GST_ELEMENT_ERROR and returning
GST_FLOW_ERROR (fixes #338636). Lastly, free connection
before resetting the pointer.

ChangeLog
ext/shout2/gstshout2.c

index 8dfb92cf20320d517ed95e389ae61247068d66b8..bb5acb8fb2c4300c62f7f6785ef733f593098f60 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-04-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/shout2/gstshout2.c: (gst_shout2send_render):
+         Don't crash in case the connection to the server fails:
+         don't set pointer to NULL by assigning FALSE; error out
+         properly by using GST_ELEMENT_ERROR and returning
+         GST_FLOW_ERROR (fixes #338636). Lastly, free connection
+         before resetting the pointer.
+
 2006-04-17  Jan Schmidt  <thaytan@mad.scientist.com>
 
        * gst/id3demux/id3tags.c:
index 522f8a3fd5263590a6bd5fba4d3d2e3705b9ee1c..2fc3bdd41d94cf7916d3b9af7ba66d139179abcb 100644 (file)
@@ -384,10 +384,16 @@ gst_shout2send_render (GstBaseSink * sink, GstBuffer * buf)
       shout2send->started = TRUE;
 
     } else {
-      GST_ERROR ("Couldn't connect to server: %s",
+      GST_ERROR_OBJECT (shout2send, "Couldn't connect to server: %s",
           shout_get_error (shout2send->conn));
-      shout2send->conn = FALSE;
-
+      GST_ELEMENT_ERROR (shout2send, RESOURCE, OPEN_WRITE,
+          (NULL), GST_ERROR_SYSTEM);
+      g_signal_emit (G_OBJECT (shout2send),
+          gst_shout2send_signals[SIGNAL_CONNECTION_PROBLEM], 0,
+          shout_get_errno (shout2send->conn));
+      shout_free (shout2send->conn);
+      shout2send->conn = NULL;
+      return GST_FLOW_ERROR;
     }
   }