Date: Tue, 3 Sep 2019 19:12:46 +0000 (UTC) From: Sunpoet Po-Chuan Hsieh <sunpoet@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r511026 - in head/audio/libshout: . files Message-ID: <201909031912.x83JCkIs050830@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: sunpoet Date: Tue Sep 3 19:12:45 2019 New Revision: 511026 URL: https://svnweb.freebsd.org/changeset/ports/511026 Log: 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 Added: head/audio/libshout/files/ head/audio/libshout/files/patch-include-shout-shout.h.in (contents, props changed) head/audio/libshout/files/patch-src-connection.c (contents, props changed) head/audio/libshout/files/patch-src-shout.c (contents, props changed) Modified: head/audio/libshout/Makefile Modified: head/audio/libshout/Makefile ============================================================================== --- head/audio/libshout/Makefile Tue Sep 3 19:12:40 2019 (r511025) +++ head/audio/libshout/Makefile Tue Sep 3 19:12:45 2019 (r511026) @@ -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/ \ Added: head/audio/libshout/files/patch-include-shout-shout.h.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/libshout/files/patch-include-shout-shout.h.in Tue Sep 3 19:12:45 2019 (r511026) @@ -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); + Added: head/audio/libshout/files/patch-src-connection.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/libshout/files/patch-src-connection.c Tue Sep 3 19:12:45 2019 (r511026) @@ -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); Added: head/audio/libshout/files/patch-src-shout.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/libshout/files/patch-src-shout.c Tue Sep 3 19:12:45 2019 (r511026) @@ -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)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909031912.x83JCkIs050830>