Skip site navigation (1)Skip section navigation (2)
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>