Package: libesd0
Version: 0.2.41-9

libesd cannot connect to server if it work on slow hardware and/or on os like 
windows due to
extremely small hardcoded read/write timeout = 100ms This patch increases them 
up to 300ms.
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.

--- esound-0.2.41/esdlib.c	2008-11-18 23:35:19.000000000 +0300
+++ esound-0.2.41.xxx/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;

Reply via email to