Issue with incorrect server travel address when multiple listen servers are running

Regarding UE-66752

Dedicated servers running on the non-default port such as 7778 are unable to change map due to an incorrect server URL.

It looks like this may be due to a change to GetAddressURL in World.cpp for version 4.23

EDIT: On further inspection, while GetAddressURL has been changed (broken), I’ve traced this back to a change with ProcessServerTravel() in GameModeBase.cpp .

The previous (4.22) code worked, not sure why this was made but it’s affecting any server which has two running dedicated listen servers on it. It seems like every update lately has some game breaker that doesn’t get resolved for months.

Check out the the server log below

[2019.09.25-04.49.43:785][635]LogGameState: Match State Changed from InProgress to LeavingMap
[2019.09.25-04.49.43:789][635]LogGameMode: ProcessServerTravel: /Game/Levels/not_epic
[2019.09.25-04.49.43:793][635]LogLongPackageNames: Warning: URL: :7780//Game/Levels/not_epic: Name may not contain the following characters: ':'
[2019.09.25-04.49.43:796][635]LogNet: TravelFailure: InvalidURL, Reason for Failure: 'Invalid URL: :7780//Game/Levels/not_epic'
[2019.09.25-04.49.43:799][635]LogBlueprintUserMessages: [GameInstance] GameInstance Travel Error:  InvalidURL

The ProcessServerTravel function was changed to use a modified NextURL which has .ToString() called on it rather than using the passed in URL. Why this change? Also why does FURL::ToString() return a url in the form :7778//map/path ?

Please address this asap so we can get on with using the awesome new features in update 4.23

Thanks.

Hello! I bumped into this thread because the issue has not been resolved in 4.24.3. Have you been able to fix/bypass the issue?