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" );