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
62 lines
2.1 KiB
Text
62 lines
2.1 KiB
Text
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;
|