diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2006-04-17 19:12:36 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2006-04-17 19:12:36 +0000 |
commit | d0b7fc0d81abb208e7240b29fd6a58c26e0fd8f4 (patch) | |
tree | 8bdf83a36ceb6fa87ad24eb8cf0bb7757a396e5d | |
parent | 5ff469042fabf9c436a1fe3b3a8eadb20ab0f5d8 (diff) |
ext/shout2/gstshout2.c: Don't crash in case the connection to the server fails: don't set pointer to NULL by assignin...
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.
-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; } } |