Bug 171616 - audio/esound: small hardcoded read/write timeouts
Summary: audio/esound: small hardcoded read/write timeouts
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-gnome (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-09-13 19:50 UTC by Gabor Fischer
Modified: 2012-12-29 05:40 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gabor Fischer 2012-09-13 19:50:06 UTC
libesd use hardcoded socket-io timeout = 100ms. This is too small for slow WIFI connections and sound servers on Windows.

The problem has been solved by the debian team:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637064

On that page, there is a patch, created by Konstantin Khlebnikov, which fixes the problem.

That patch should be added to the FreeBSD port audio/esound.

Fix: 

Apply patch found at http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637064
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2012-09-13 19:50:53 UTC
Responsible Changed
From-To: freebsd-ports-bugs->gnome

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 dfilter service freebsd_committer freebsd_triage 2012-12-29 05:39:31 UTC
Author: mezz
Date: Sat Dec 29 05:39:23 2012
New Revision: 309607
URL: http://svnweb.freebsd.org/changeset/ports/309607

Log:
  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

Added:
  head/audio/esound/files/patch-esound-increase-timeouts   (contents, props changed)
Modified:
  head/audio/esound/Makefile   (contents, props changed)

Modified: head/audio/esound/Makefile
==============================================================================
--- head/audio/esound/Makefile	Sat Dec 29 05:29:56 2012	(r309606)
+++ head/audio/esound/Makefile	Sat Dec 29 05:39:23 2012	(r309607)
@@ -8,6 +8,7 @@
 
 PORTNAME=	esound
 PORTVERSION=	0.2.41
+PORTREVISION=	1
 CATEGORIES=	audio
 MASTER_SITES=	GNOME
 DIST_SUBDIR=	gnome

Added: head/audio/esound/files/patch-esound-increase-timeouts
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/audio/esound/files/patch-esound-increase-timeouts	Sat Dec 29 05:39:23 2012	(r309607)
@@ -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;
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 3 Jeremy Messenger freebsd_committer freebsd_triage 2012-12-29 05:39:32 UTC
State Changed
From-To: open->closed

Committed, thanks!