Unable to connect to icecast2 server: socket error

Hi, I tried connecting to my icecast2 server, but I only get a socket error. Anyone got an idea whats wrong here? I don’t see any activity in access.log or error.log from icecast on my server when trying to connect with mixxx. So I guess it is a local problem of mixxx.

linked issue: Bug #1922049 “Unable to connect to icecast2 server: socket error...” : Bugs : Mixxx

system: Ubuntu 20.10
mixxx version: 2.2.4 (build master r6803)
libshout3: 2.4.4-1
icecast: 2.4.4

Here is the log:

Debug [ShoutOutput 'icecast']: ShoutConnection - run: Starting thread
Debug [ShoutOutput 'icecast']: ShoutConnection - processConnect
Debug [ShoutOutput 'icecast']: ShoutConnection - "icecast" : updating from preferences
Debug [ShoutOutput 'icecast']: ShoutConnection - Using server URL: QUrl("//source@domain.de:8000/stream")
Debug [ShoutOutput 'icecast']: RETURNING SERIAL  1425434561
Debug [ShoutOutput 'icecast']: ShoutConnection - Connection pending. Waiting...
Debug [ShoutOutput 'icecast']: ShoutConnection - Connection pending. Waiting...
Warning [ShoutOutput 'icecast']: Streaming server made error: -4
Warning [ShoutOutput 'icecast']: ShoutConnection - processConnect() socket error. Is socket already in use?
Debug [ShoutOutput 'icecast']: ShoutConnection - processConnect() returning false
Warning [ShoutOutput 'icecast']: Streaming error:  "Socket error\nPlease check your connection to the Internet and verify that your username and password are correct."

mixxx Live Broadcasting settings:

icecast.xml on server:

<icecast>
    <location>location</location>
    <admin>me@me.de</admin>

    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <burst-on-connect>1</burst-on-connect>
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <source-password>123456</source-password>
        <relay-password>123456</relay-password>
        <admin-user>admin</admin-user>
        <admin-password>123456</admin-password>
    </authentication>

    <hostname>domain.de</hostname>

    <listen-socket>
        <port>8000</port>
        <shoutcast-mount>stream</shoutcast-mount> 
    </listen-socket>
    
    <http-headers>
        <header name="Access-Control-Allow-Origin" value="*" />
    </http-headers>
    
    <fileserve>1</fileserve>

    <paths>
        <basedir>/usr/share/icecast2</basedir>
        <logdir>/var/log/icecast2</logdir>
        <webroot>/usr/share/icecast2/web</webroot>
        <adminroot>/usr/share/icecast2/admin</adminroot>
        <alias source="/" destination="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
        <logsize>10000</logsize> <!-- Max size of a logfile -->
    </logging>

    <security>
        <chroot>0</chroot>
    </security>
</icecast>

Connecting with darkice v1.3 works. darkice.cfg:

[general]
duration = 0
bufferSecs = 10

[input]
device = pulseaudio
paSourceName = default
sampleRate = 48000
bitsPerSample = 16
channel = 1

[icecast2-0]
bitrateMode = cbr
format = vorbis
bitrate = 128
quality = 0.8
server = domain.de
port = 8000
password = 123456
mountPoint = stream
name = 
description = 
url = 
genre = 
public = no

Are these Software you use on the same Machine? Please first check Firewalls etc. from the OS
Also i has something like that before were Mixxx is handled like an external program and connects like it come from outside which was blocked. Maybe the network adapter for incoming request on the icecast server blocks content from the outside, so open everything possible for testing.
I had several issues in the past, but nothing were with Mixxx. Always it was a thing of network restriction.

Are these Software you use on the same Machine?

No. Icecast is on my server, mixxx/darkice is on my home computer.

Please first check Firewalls etc.

Yeah, I did open up the relevant ports for icecast on my server. I don’t think that the problem is on the server side, because my setup is working with darkice.

I am nearly sure that it deals with the icecast setup/machine.
Please check if it makes a difference if you add the mount tag to icecast.xml:

  <mount>
	<mount-name>/standby.mp3</mount-name>
    </mount>
    <mount>
	<mount-name>/stream</mount-name>
	<fallback-mount>/standby.mp3</fallback-mount>
	<fallback-override>1</fallback-override>
    </mount>

And

I don’t think that the problem is on the server side, because my setup is working with darkice.

I had the same with Butt… Butt works, Mixxx not, but it was the icecast setup and network config.

Unfortunately there is no difference after adding the mount tag, except this new warning in error.log of icecast:
[2021-04-01 16:18:47] WARN source/source_fallback_file unable to open file "/usr/share/icecast2/web/standby.mp3"

But that is occuring while connecting with darkice. With Mixxx there is still no log entry in icecast.

That is correct, because you don’t have the File for falling Back.
But no Error show, that the connect attempt does not reach the server With mixxx.
I SAW that exact issue… But was 1 year ago when i Setup My icecast… I can only remember that it was some stupid Linux config… maybe hosts file With external IP… Or something Like that.

I validated with Wireshark, that Mixxx isn’t doing any connection attempt to my icecast server. It is definitly a local problem with Mixxx or my computer.

Libshout 2.4.1 is the most recent working version, all newer libshout releases are buggy and won’t work properly.

Is Mixxx built statically with Libshout? I don’t see any libshout when doing ldd mixxx. So the only way to replace the wrong libshout version is to recompile it myself, right?

If it’s built statically, it already uses libshout-idjc 2.4.1.

Okay, that means libshout 2.4.1 isn’t the right solution for me, because I am using it and stillt get the error. Here is one log output from mixxx 2.3.0-beta telling me about using libshout 2.4.1. I tried different mixxx versions, thats why it is 2.3.0-beta now.

Debug [Main]: "Mixxx" "2.3.0-beta" "(git unknown runknown; built on: Apr 2 2021 @ 11:56:46)" is starting...
Debug [Main]: Compile time library versions:
Debug [Main]: Qt: 5.14.2
Debug [Main]: libshout: 2.4.1
Debug [Main]: PortAudio: 1246720 PortAudio V19.6.0-devel, revision 396fe4b6699ae929d3a685b3ef8a7e97396139a4
Debug [Main]: RubberBand: 1.8.2
Debug [Main]: SoundTouch: 2.1.2
Debug [Main]: TagLib: 1.11.1
Debug [Main]: ChromaPrint: 1.5.0
Debug [Main]: Vorbis: Xiph.Org libVorbis 1.3.7
Debug [Main]: libsndfile: libsndfile-1.0.28
Debug [Main]: FLAC: 1.3.3
Debug [Main]: libmp3lame: 3.100