shout2: Add compatibility for libshout >= 2.4.2

In libshout >=2.4.2 shout_open() can return SHOUTERR_RETRY in addition
to SHOUTERR_BUSY.

The nonblocking example in libshout fixes the problem in a similar
way, as mentioned by the author in this issue:
https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2316

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/848

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1363>
This commit is contained in:
Tobias Reineke 2021-11-18 16:27:17 +00:00 committed by Nirbheek Chauhan
parent 92f8b54657
commit 9e2f679ae1

View file

@ -576,7 +576,13 @@ gst_shout2send_connect (GstShout2send * sink)
ret = shout_open (sink->conn); ret = shout_open (sink->conn);
/* wait for connection or timeout */ /* wait for connection or timeout */
#ifdef SHOUTERR_RETRY
/* starting with libshout 2.4.2, shout_open() has broken API + ABI and
* can also return SHOUTERR_RETRY (a new define) to mean "try again" */
while (ret == SHOUTERR_BUSY || ret == SHOUTERR_RETRY) {
#else
while (ret == SHOUTERR_BUSY) { while (ret == SHOUTERR_BUSY) {
#endif
if (gst_util_get_timestamp () - start_ts > sink->timeout * GST_MSECOND) { if (gst_util_get_timestamp () - start_ts > sink->timeout * GST_MSECOND) {
goto connection_timeout; goto connection_timeout;
} }