diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | ext/shout2/gstshout2.c | 12 |
2 files changed, 18 insertions, 3 deletions
@@ -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: diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c index 522f8a3f..2fc3bdd4 100644 --- a/ext/shout2/gstshout2.c +++ b/ext/shout2/gstshout2.c @@ -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; } } |