[arch-commits] Commit in libshout/repos (4 files)
Felix Yan
felixonmars at archlinux.org
Sat May 16 12:23:46 UTC 2020
Date: Saturday, May 16, 2020 @ 12:23:46
Author: felixonmars
Revision: 384513
archrelease: copy trunk to staging-x86_64
Added:
libshout/repos/staging-x86_64/
libshout/repos/staging-x86_64/PKGBUILD
(from rev 384512, libshout/trunk/PKGBUILD)
libshout/repos/staging-x86_64/corrected-blocking-state.patch
(from rev 384512, libshout/trunk/corrected-blocking-state.patch)
libshout/repos/staging-x86_64/icy-port-increment.patch
(from rev 384512, libshout/trunk/icy-port-increment.patch)
--------------------------------+
PKGBUILD | 37 +++++++++++
corrected-blocking-state.patch | 125 +++++++++++++++++++++++++++++++++++++++
icy-port-increment.patch | 29 +++++++++
3 files changed, 191 insertions(+)
Copied: libshout/repos/staging-x86_64/PKGBUILD (from rev 384512, libshout/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD (rev 0)
+++ staging-x86_64/PKGBUILD 2020-05-16 12:23:46 UTC (rev 384513)
@@ -0,0 +1,37 @@
+# Maintainer: Giovanni Scafora <giovanni at archlinux.org>
+# Contributor: arjan <arjan at archlinux.org>
+# Contributor: Jason Chu <jchu at xentac.net>
+
+pkgname=libshout
+pkgver=2.4.3
+pkgrel=3
+epoch=1
+pkgdesc="Library for accessing a shoutcast/icecast server"
+arch=('x86_64')
+depends=('libvorbis' 'libtheora' 'speex' 'openssl')
+url="https://www.icecast.org/"
+options=('!emptydirs')
+license=('LGPL')
+source=("https://downloads.xiph.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ corrected-blocking-state.patch
+ icy-port-increment.patch)
+sha512sums=('fe36778c6640e620f27504cb21234940e18a65a33f9178bf7e77d4baf854a9affc82d85db8ed8c1c8e2d80399685d8be10106fff5be1ddf76e03e2ffeeed1d34'
+ '53aab9c3fd5b044eff731f46a51f646366ab48a2c910493035599ef0e1d65c1f7655753d12a2c7958125a1e834476763838547c44a110b85fea9d9b8650a440c'
+ 'cc00b0e2b41e28fc5bd13f1d159a22b8475d90448b51aac619e7d317a404b88c7631562056cc0c320ad2634daca592e68f3ac8b58e8a6ab166d913bd8625ba9a')
+
+prepare() {
+ cd ${pkgname}-${pkgver}
+ patch -Np1 -i ../corrected-blocking-state.patch
+ patch -Np1 -i ../icy-port-increment.patch
+}
+
+build() {
+ cd ${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+
+package() {
+ cd ${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+}
Copied: libshout/repos/staging-x86_64/corrected-blocking-state.patch (from rev 384512, libshout/trunk/corrected-blocking-state.patch)
===================================================================
--- staging-x86_64/corrected-blocking-state.patch (rev 0)
+++ staging-x86_64/corrected-blocking-state.patch 2020-05-16 12:23:46 UTC (rev 384513)
@@ -0,0 +1,125 @@
+From 0ac7ed9e84c3871d4427acc1ce59dca5e4af21ef Mon Sep 17 00:00:00 2001
+From: Philipp Schafft <lion at lion.leolix.org>
+Date: Wed, 26 Jun 2019 18:58:44 +0000
+Subject: [PATCH] Fix: Corrected blocking state of connections
+
+Thanks to Bernd Geiser <bg at ferncast.de> for initial report.
+
+Fixes: #2309
+---
+ include/shout/shout.h.in | 8 +++++++-
+ src/connection.c | 13 +++++++------
+ src/shout.c | 7 +++++--
+ 3 files changed, 19 insertions(+), 9 deletions(-)
+
+diff --git a/include/shout/shout.h.in b/include/shout/shout.h.in
+index 6fda58b..297ff17 100644
+--- a/include/shout/shout.h.in
++++ b/include/shout/shout.h.in
+@@ -85,6 +85,11 @@ extern "C" {
+ #define SHOUT_TLS_RFC2818 ( 11) /* Use TLS for transport layer like HTTPS [RFC2818] does. */
+ #define SHOUT_TLS_RFC2817 ( 12) /* Use TLS via HTTP Upgrade:-header [RFC2817]. */
+
++/* Possible values for blocking */
++#define SHOUT_BLOCKING_DEFAULT (255) /* Use the default blocking setting. */
++#define SHOUT_BLOCKING_FULL ( 0) /* Block in all I/O related functions */
++#define SHOUT_BLOCKING_NONE ( 1) /* Do not block in I/O related functions */
++
+ #define SHOUT_AI_BITRATE "bitrate"
+ #define SHOUT_AI_SAMPLERATE "samplerate"
+ #define SHOUT_AI_CHANNELS "channels"
+@@ -244,7 +249,8 @@ int shout_set_protocol(shout_t *self, unsigned int protocol);
+ unsigned int shout_get_protocol(shout_t *self);
+
+ /* Instructs libshout to use nonblocking I/O. Must be called before
+- * shout_open (no switching back and forth midstream at the moment). */
++ * shout_open (no switching back and forth midstream at the moment).
++ * nonblocking is one of SHOUT_BLOCKING_xxx. */
+ int shout_set_nonblocking(shout_t* self, unsigned int nonblocking);
+ unsigned int shout_get_nonblocking(shout_t *self);
+
+diff --git a/src/connection.c b/src/connection.c
+index 07fc587..01b15ba 100644
+--- a/src/connection.c
++++ b/src/connection.c
+@@ -118,7 +118,7 @@ static struct timeval shout_connection_iter__wait_for_io__get_timeout(shout_conn
+ .tv_usec = (timeout % 1000) * 1000
+ };
+ return tv;
+- } else if (con->nonblocking) {
++ } else if (con->nonblocking == SHOUT_BLOCKING_NONE) {
+ return tv_nonblocking;
+ } else {
+ return tv_blocking;
+@@ -167,7 +167,7 @@ static shout_connection_return_state_t shout_connection_iter__socket(shout_conne
+ }
+ break;
+ case SHOUT_SOCKSTATE_CONNECTING:
+- if (con->nonblocking) {
++ if (con->nonblocking == SHOUT_BLOCKING_NONE) {
+ ret = shout_connection_iter__wait_for_io(con, shout, 1, 1, 0);
+ if (ret != SHOUT_RS_DONE) {
+ return ret;
+@@ -460,7 +460,7 @@ int shout_connection_iter(shout_connection_t *con, shout_t *shou
+ break; \
+ case SHOUT_RS_TIMEOUT: \
+ case SHOUT_RS_NOTNOW: \
+- if (con->nonblocking) \
++ if (con->nonblocking == SHOUT_BLOCKING_NONE) \
+ return SHOUTERR_RETRY; \
+ retry = 1; \
+ break; \
+@@ -518,7 +518,7 @@ int shout_connection_select_tlsmode(shout_connection_t *con, int
+ }
+ int shout_connection_set_nonblocking(shout_connection_t *con, unsigned int nonblocking)
+ {
+- if (!con)
++ if (!con || (nonblocking != SHOUT_BLOCKING_DEFAULT && nonblocking != SHOUT_BLOCKING_FULL && nonblocking != SHOUT_BLOCKING_NONE))
+ return SHOUTERR_INSANE;
+
+ if (con->socket != SOCK_ERROR)
+@@ -563,13 +563,14 @@ int shout_connection_connect(shout_connection_t *con, shout_t *s
+ if (con->socket != SOCK_ERROR || con->current_socket_state != SHOUT_SOCKSTATE_UNCONNECTED)
+ return SHOUTERR_BUSY;
+
+- shout_connection_set_nonblocking(con, shout_get_nonblocking(shout));
++ if (con->nonblocking == SHOUT_BLOCKING_DEFAULT)
++ shout_connection_set_nonblocking(con, shout_get_nonblocking(shout));
+
+ port = shout->port;
+ if (shout_get_protocol(shout) == SHOUT_PROTOCOL_ICY)
+ port++;
+
+- if (con->nonblocking) {
++ if (con->nonblocking == SHOUT_BLOCKING_NONE) {
+ con->socket = sock_connect_non_blocking(shout->host, port);
+ } else {
+ con->socket = sock_connect(shout->host, port);
+diff --git a/src/shout.c b/src/shout.c
+index 1439c14..9845d13 100644
+--- a/src/shout.c
++++ b/src/shout.c
+@@ -417,7 +417,7 @@ int shout_set_metadata(shout_t *self, shout_metadata_t *metadata)
+ #ifdef HAVE_OPENSSL
+ shout_connection_select_tlsmode(connection, self->tls_mode);
+ #endif
+- shout_connection_set_nonblocking(connection, 0);
++ shout_connection_set_nonblocking(connection, SHOUT_BLOCKING_FULL);
+
+ connection->target_message_state = SHOUT_MSGSTATE_PARSED_FINAL;
+
+@@ -989,7 +989,10 @@ unsigned int shout_get_protocol(shout_t *self)
+
+ int shout_set_nonblocking(shout_t *self, unsigned int nonblocking)
+ {
+- if (!self || (nonblocking != 0 && nonblocking != 1))
++ if (nonblocking == SHOUT_BLOCKING_DEFAULT)
++ nonblocking = SHOUT_BLOCKING_FULL;
++
++ if (!self || (nonblocking != SHOUT_BLOCKING_FULL && nonblocking != SHOUT_BLOCKING_NONE))
+ return SHOUTERR_INSANE;
+
+ if (self->connection)
+--
+2.22.0
+
Copied: libshout/repos/staging-x86_64/icy-port-increment.patch (from rev 384512, libshout/trunk/icy-port-increment.patch)
===================================================================
--- staging-x86_64/icy-port-increment.patch (rev 0)
+++ staging-x86_64/icy-port-increment.patch 2020-05-16 12:23:46 UTC (rev 384513)
@@ -0,0 +1,29 @@
+From b807c1e2550718bdc73d65ac1b05255d18f45c54 Mon Sep 17 00:00:00 2001
+From: Philipp Schafft <lion at lion.leolix.org>
+Date: Wed, 26 Jun 2019 19:30:25 +0000
+Subject: [PATCH] Fix: Do the ICY port increment only when using the ICY
+ implementation
+
+This makes metadata work again on ICY servers.
+
+Fixes: #2310
+---
+ src/connection.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/connection.c b/src/connection.c
+index 01b15ba..0fd00ab 100644
+--- a/src/connection.c
++++ b/src/connection.c
+@@ -567,7 +567,7 @@ int shout_connection_connect(shout_connection_t *con, shout_t *s
+ shout_connection_set_nonblocking(con, shout_get_nonblocking(shout));
+
+ port = shout->port;
+- if (shout_get_protocol(shout) == SHOUT_PROTOCOL_ICY)
++ if (con->impl == shout_icy_impl)
+ port++;
+
+ if (con->nonblocking == SHOUT_BLOCKING_NONE) {
+--
+2.22.0
+
More information about the arch-commits
mailing list