diff -Nru esound-0.2.41.orig/esd.c esound-0.2.41.ipv4fix/esd.c
--- esound-0.2.41.orig/esd.c	2008-11-18 21:35:19.000000000 +0100
+++ esound-0.2.41.ipv4fix/esd.c	2009-04-26 03:23:37.000000000 +0200
@@ -112,6 +112,7 @@
 int esd_use_ipv6 = 0;          /* We need it in accept () to know if we use 
                                        AF_NET or AF_INET6*/   
 #endif
+int esd_use_ipv4 = 0;		/* force usage of IPv4 */
 static char *programname = NULL;
 
 /*******************************************************************/
@@ -401,7 +402,7 @@
     /* create the socket, and set for non-blocking */
     if (esd_use_tcpip) {
 #if defined(ENABLE_IPV6)
-      if(have_ipv6()) {
+      if(have_ipv6() && ! esd_use_ipv4 ) {
 	memset(&hints, 0, sizeof(hints));
 	hints.ai_socktype = SOCK_STREAM;
    
@@ -782,6 +783,8 @@
 	    esd_use_tcpip = 0;
 	} else if ( !strcmp( opts[ arg ], "-tcp" ) ) {
 	    esd_use_tcpip = 1;
+	} else if ( !strcmp( opts[ arg ], "-ipv4" ) ) {
+	    esd_use_ipv4 = 1;
 	} else if ( !strcmp( opts[ arg ], "-public" ) ) {
 	    esd_public = 1;
 	} else if ( !strcmp( opts[ arg ], "-promiscuous" ) ) {
@@ -812,6 +815,7 @@
 	    fprintf( stderr, "  -as SECS      free audio device after SECS of inactivity (-1 to disable)\n" );
 	    fprintf( stderr, "  -unix         use unix domain sockets instead of tcp/ip\n" );
 	    fprintf( stderr, "  -tcp          use tcp/ip sockets instead of unix domain\n" );
+	    fprintf( stderr, "  -ipv4         force use of IPv4\n" );
 	    fprintf( stderr, "  -public       make tcp/ip access public (other than localhost)\n" );
 	    fprintf( stderr, "  -promiscuous  start unlocked and owned (disable authenticaton) NOT RECOMMENDED\n" );
 	    fprintf( stderr, "  -terminate    terminate esd daemon after last client exits\n" );