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