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;