[raiguard][2.0.72][mac] Crash when IPv6 server has visibility.public = true

__init__
Burner Inserter
Burner Inserter
Posts: 11
Joined: Tue Apr 25, 2017 9:47 am
Contact:

[raiguard][2.0.72][mac] Crash when IPv6 server has visibility.public = true

Post by __init__ »

I tested both intel macOS 10.15.7 and apple silicon macOS 15.7.2:

Code: Select all

factorio --bind :: --server-settings server-settings.json --start-server saves/test.zip
There is an IPv6 host exposure entry on my router and it is reachable form the outside (tested using nmap from a remote server):

Code: Select all

nmap -Pn -6 -sU -p 34197 2a02:908:4c14:4140:c7f6:23b1:4047:9e9d
And depending on whether or not the Factorio server is running it correctly says:
34197/udp closed unknown
or
34197/udp open|filtered unknown
However, once I toggle the "visibility.public" setting in server-settings.json from false to true the server fails to start:
2.680 Info UDPSocket.cpp:37: Opening socket at (IP ADDR:({[::]:34197}))
2.680 Hosting game at IP ADDR:({[::]:34197})
2.681 Info HttpSharedState.cpp:57: Downloading https://auth.factorio.com/generate-serv ... _version=6
3.077 Info AuthServerConnector.cpp:112: Obtained serverPadlock for serverHash () from the auth server.
3.077 Info ServerMultiplayerManager.cpp:808: updateTick(4796) changing state from(CreatingGame) to(InGame)
3.079 Info ServerRouter.cpp:668: Asking pingpong servers (pingpong1.factorio.com:34197, pingpong2.factorio.com:34197, pingpong3.factorio.com:34197, pingpong4.factorio.com:34197) for own address
3.080 Error CommandLineMultiplayer.cpp:355: Hosting multiplayer game failed: Sendto (IP ADDR:({45.79.173.216:34197})) failed (9: Bad file descriptor)
User avatar
raiguard
Factorio Staff
Factorio Staff
Posts: 817
Joined: Wed Dec 13, 2017 8:29 pm
Contact:

Re: [raiguard][2.0.72][mac] Crash when IPv6 server has visibility.public = true

Post by raiguard »

This (and several other IPv6 issues) are happening because our networking stack incorrectly tries to route all v4 traffic through a v4 socket and all v6 traffic through a v6 socket, instead of routing v4 through the v6 socket when v6 is in use.

It's on my list to fix, but it's lower priority than other things I'm working on.
Don't forget, you're here forever.
Post Reply

Return to “Assigned”