aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormezz <mezz@FreeBSD.org>2012-12-29 13:39:23 +0800
committermezz <mezz@FreeBSD.org>2012-12-29 13:39:23 +0800
commit0bcd8a43c506ca02728b67d95b7526d8e7e6630e (patch)
tree9596ead85a1998bad8f8aa6c0d1e0519b9a7efe5
parentff018871231c9201da51e607d3685cc2767fc605 (diff)
downloadfreebsd-ports-gnome-0bcd8a43c506ca02728b67d95b7526d8e7e6630e.tar.gz
freebsd-ports-gnome-0bcd8a43c506ca02728b67d95b7526d8e7e6630e.tar.zst
freebsd-ports-gnome-0bcd8a43c506ca02728b67d95b7526d8e7e6630e.zip
The libesd use hardcoded socket-io timeout = 100ms. This is too small for
slow WIFI connections and sound servers on Windows. It has been solved by the Debian team. Patch was created by Konstantin Khlebnikov. Bump the PORTREVISION. PR: ports/171616 Submitted by: Gabor Fischer <Gabor.Fischer@gmx.net> Obtained from: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637064
-rw-r--r--audio/esound/Makefile1
-rw-r--r--audio/esound/files/patch-esound-increase-timeouts62
2 files changed, 63 insertions, 0 deletions
diff --git a/audio/esound/Makefile b/audio/esound/Makefile
index 13e6fc4c8690..789769aa524c 100644
--- a/audio/esound/Makefile
+++ b/audio/esound/Makefile
@@ -8,6 +8,7 @@
PORTNAME= esound
PORTVERSION= 0.2.41
+PORTREVISION= 1
CATEGORIES= audio
MASTER_SITES= GNOME
DIST_SUBDIR= gnome
diff --git a/audio/esound/files/patch-esound-increase-timeouts b/audio/esound/files/patch-esound-increase-timeouts
new file mode 100644
index 000000000000..1d33c49c979f
--- /dev/null
+++ b/audio/esound/files/patch-esound-increase-timeouts
@@ -0,0 +1,62 @@
+libesd cannot connect to server if it work on slow hardware and/or on windows due to
+extremely small default read/write timeout = 100ms This patch increases them up to 300ms.
+
+--- esdlib.c.org 2008-11-18 23:35:19.000000000 +0300
++++ esdlib.c 2011-04-29 21:58:56.698001331 +0400
+@@ -30,6 +30,11 @@
+ + strlen ((ptr)->sun_path))
+ #endif
+
++#define TCP_CONNECT_TIMEOUT 1000
++#define UNIX_CONNECT_TIMEOUT 100
++#define SOCKET_READ_TIMEOUT 300
++#define SOCKET_WRITE_TIMEOUT 300
++
+ /*******************************************************************/
+ /* prototypes */
+ int esd_set_socket_buffers( int sock, int src_format,
+@@ -89,7 +94,7 @@
+
+ do {
+ pfd[0].revents = 0;
+- rv = poll (pfd, 1, 100);
++ rv = poll (pfd, 1, SOCKET_READ_TIMEOUT);
+ } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
+
+ if (rv < 1 || !(pfd[0].revents & POLLIN)) {
+@@ -137,7 +142,7 @@
+
+ do {
+ pfd[0].revents = 0;
+- rv = poll (pfd, 1, 100);
++ rv = poll (pfd, 1, SOCKET_WRITE_TIMEOUT);
+ } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
+
+ if (rv < 1 || (pfd[0].revents & (POLLERR | POLLHUP | POLLOUT)) != POLLOUT) {
+@@ -641,7 +646,7 @@
+ goto error_out;
+ }
+
+- if ( connect_timeout ( socket_out, res->ai_addr, res->ai_addrlen, 1000 ) != -1 )
++ if ( connect_timeout ( socket_out, res->ai_addr, res->ai_addrlen, TCP_CONNECT_TIMEOUT ) != -1 )
+ break;
+
+ close ( socket_out );
+@@ -727,7 +732,7 @@
+
+ if ( connect_timeout ( socket_out,
+ (struct sockaddr *) &socket_addr,
+- sizeof(struct sockaddr_in), 1000 ) < 0 )
++ sizeof(struct sockaddr_in), TCP_CONNECT_TIMEOUT ) < 0 )
+ goto error_out;
+
+ }
+@@ -779,7 +784,7 @@
+ socket_unix.sun_family = AF_UNIX;
+ strncpy(socket_unix.sun_path, ESD_UNIX_SOCKET_NAME, sizeof(socket_unix.sun_path));
+
+- if ( connect_timeout ( socket_out, (struct sockaddr *) &socket_unix, SUN_LEN(&socket_unix), 100 ) < 0 )
++ if ( connect_timeout ( socket_out, (struct sockaddr *) &socket_unix, SUN_LEN(&socket_unix), UNIX_CONNECT_TIMEOUT ) < 0 )
+ goto error_out;
+
+ return socket_out;