summaryrefslogtreecommitdiffstats
path: root/ext/shout2
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2006-04-17 19:12:36 +0000
committerTim-Philipp Müller <tim@centricular.net>2006-04-17 19:12:36 +0000
commitd0b7fc0d81abb208e7240b29fd6a58c26e0fd8f4 (patch)
tree8bdf83a36ceb6fa87ad24eb8cf0bb7757a396e5d /ext/shout2
parent5ff469042fabf9c436a1fe3b3a8eadb20ab0f5d8 (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.
Diffstat (limited to 'ext/shout2')
-rw-r--r--ext/shout2/gstshout2.c12
1 files changed, 9 insertions, 3 deletions
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;
}
}