diff options
author | Sunpoet Po-Chuan Hsieh <sunpoet@FreeBSD.org> | 2019-09-03 19:12:45 +0000 |
---|---|---|
committer | Sunpoet Po-Chuan Hsieh <sunpoet@FreeBSD.org> | 2019-09-03 19:12:45 +0000 |
commit | eefe67ff8361a65f309da52ee13de042ee8b5bbf (patch) | |
tree | e2021ae4ab42e24b0ff4e13a99d14633a5316faf /audio/libshout | |
parent | 13aab65e2bcc993552d873d5d4930b210bbd9f71 (diff) | |
download | ports-eefe67ff8361a65f309da52ee13de042ee8b5bbf.tar.gz ports-eefe67ff8361a65f309da52ee13de042ee8b5bbf.zip |
Fix blocking state of connections
- Bump PORTREVISION for package change
PR: 240222
Submitted by: acm
Obtained from: https://gitlab.xiph.org/xiph/icecast-libshout/commit/0ac7ed9e84c3871d4427acc1ce59dca5e4af21ef
https://gitlab.xiph.org/xiph/icecast-libshout/commit/b807c1e2550718bdc73d65ac1b05255d18f45c54
Notes
Notes:
svn path=/head/; revision=511026
Diffstat (limited to 'audio/libshout')
-rw-r--r-- | audio/libshout/Makefile | 2 | ||||
-rw-r--r-- | audio/libshout/files/patch-include-shout-shout.h.in | 26 | ||||
-rw-r--r-- | audio/libshout/files/patch-src-connection.c | 59 | ||||
-rw-r--r-- | audio/libshout/files/patch-src-shout.c | 25 |
4 files changed, 111 insertions, 1 deletions
diff --git a/audio/libshout/Makefile b/audio/libshout/Makefile index aa79e050c481..e7fff83fe03e 100644 --- a/audio/libshout/Makefile +++ b/audio/libshout/Makefile @@ -3,7 +3,7 @@ PORTNAME= libshout PORTVERSION= 2.4.3 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= audio net MASTER_SITES= https://downloads.xiph.org/releases/libshout/ \ https://svn.xiph.org/releases/libshout/ \ diff --git a/audio/libshout/files/patch-include-shout-shout.h.in b/audio/libshout/files/patch-include-shout-shout.h.in new file mode 100644 index 000000000000..2f31584f9d84 --- /dev/null +++ b/audio/libshout/files/patch-include-shout-shout.h.in @@ -0,0 +1,26 @@ +Obtained from: https://gitlab.xiph.org/xiph/icecast-libshout/commit/0ac7ed9e84c3871d4427acc1ce59dca5e4af21ef + +--- include/shout/shout.h.in.orig 2019-05-22 09:05:32 UTC ++++ 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, un + 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/audio/libshout/files/patch-src-connection.c b/audio/libshout/files/patch-src-connection.c new file mode 100644 index 000000000000..8920d1b0ae22 --- /dev/null +++ b/audio/libshout/files/patch-src-connection.c @@ -0,0 +1,59 @@ +Obtained from: https://gitlab.xiph.org/xiph/icecast-libshout/commit/0ac7ed9e84c3871d4427acc1ce59dca5e4af21ef + https://gitlab.xiph.org/xiph/icecast-libshout/commit/b807c1e2550718bdc73d65ac1b05255d18f45c54 + +--- src/connection.c.orig 2019-05-20 19:32:59 UTC ++++ src/connection.c +@@ -118,7 +118,7 @@ static struct timeval shout_connection_i + .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 s + } + 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_ite + 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_sel + } + 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_con + 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) ++ if (con->impl == shout_icy_impl) + 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/audio/libshout/files/patch-src-shout.c b/audio/libshout/files/patch-src-shout.c new file mode 100644 index 000000000000..295aa2ae6dd2 --- /dev/null +++ b/audio/libshout/files/patch-src-shout.c @@ -0,0 +1,25 @@ +Obtained from: https://gitlab.xiph.org/xiph/icecast-libshout/commit/0ac7ed9e84c3871d4427acc1ce59dca5e4af21ef + +--- src/shout.c.orig 2019-05-22 09:05:32 UTC ++++ src/shout.c +@@ -417,7 +417,7 @@ int shout_set_metadata(shout_t *self, sh + #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 + + 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) |