[BUG] Dedicated server connection issues with IPv6 networks
Hi again, as you can already see (link text) we're working in an Android / IOS multiplayer project, and due the new apple policies (link text) we forced to make our app to be IPv6 capable, and here is when a new issue appears. Following the instructions provided by apple (link text) we setup a IPv6 network to perform our own tests.
If we connect any device using the IPv6 network we're unable to connect to the dedicated server using the open command pointing to the IPv4 address (the server host is an AWS EC2 with IPv4 and IPv6 support). But, if we use a ipv4 client network it works perfect.
We're made some changes to the engine code regarding your answer to enable ARM64 support to the dedicated server: (link text)
After read the links listed next we assume that Unreal 4.14 is already ipv6 capable.
I've finally could sit down and write everything...
So - here's a pull request. https://github.com/EpicGames/UnrealEngine/pull/4397/files
Main issue is in the IpConnection.cpp LowLevelSend method. There is an ResolveInfo copying the address to the RemoteAddr. But it is doing it by copying only 4 bytes, not 16 (which is the size of IPv6).
The host name resolver is bad too in my opinion. There will be problems if you try to connect using IPv4 network and IPv4 server.
There are 4 new methods: SetIPv6 and GetIPv6 for explicitly getting and setting IP Address using IPv6 byte code and IsBSDIPv6 which checks is the Address is binded to the BSDIPv6 socket and CreateInternetAddr6 for proper creating and then cacheing the resolved address.
There is a lot of going on with interfaces and there might be bugs. I will look at this in the future, but I think this is a good solution.
We are using it in our project and we have dedicated server on Linux and game on iOS and Android working pretty nice on any combination of IPv4 and IPv6 networks.
Follow this question
Once you sign in you will be able to subscribe for any updates here