Clan Server Admins please read!! - BindPort error.

  • Hey - turns out IRC is out and something a little more modern has taken it's place... A little thing called Discord!

    Join our community @ https://discord.gg/JuaSzXBZrk for a pick-up game, or just to rekindle with fellow community members.

Psychotic

OFF/GONE/IDLE/AWAY/NA/DND/AFK/BUSY!!!!!
Feb 26, 2002
2,672
0
Spain
Open your server's unrealtournament.ini file. Locate [IpServer.UdpServerQuery] tag. Should read something like this:

[IpServer.UdpServerQuery]
GameName=ut
bTeamInfo=true
OldQueryPortNumber=7778
bRestartServerOnPortSwap=True
MinNetVer=0
Remove the lines in red if they exist and reboot the server. It will prevent your server crashing in case of bindport* error.


Thx Stylefish and DJ for telling me about the problem on 2v2 servers. It happened on league servers as well but on 2v2 ones it was specially annoying because the server would restart on Mazon without mapvoting, then comes OceanFloor, then OceanFloorAL which caused bindport again, crashing the server -> restart on Mazon... and so on...


¤ What's the so called "bindport error" about?

Old problem on assault servers, caused by two of the following maps coming together: AutoRIP, Ballistic, OceanFloor & OceanFloorAL. Order doesn't matter so you can guess how many different cases we have: up to 12 map combinations :\

¤ Right, but what does it exactly do?

Result of bindport error is the server becoming not quereable, and webadmin not working. Sometimes it crashes clients as well with a huge error msg, specially on AutoRIP and OceanFloorAL. Problem is the server will appear offline on your browser (not quereable) when you restart UT, even though it's still running "normally" and there are other players in.

¤ What should I do if it happens?

If this happens to you on a match remember you can join the server by IP.

Go to menus->Multiplayer->Open Location ; and type server IP:port there.

Also you can join from console, type:

open serverIP:port

¤ How can I "fix" a server which entered bindport state?

Server will be quereable and webadmin will work again on the next map change, even if the change is to one of the 4 maps which causes bindport.

¤ I'm not server admin, just another player. Does this affect me?

Don't worry about league games. Maplists order is modified automatically to prevent these maps coming together.
As for matches on clan servers, try to avoid such maplists... and if it happens you know how to deal with it now.
Many matches has been played with the server entering bindport state and noone noticed... they would notice if the server crashed though :P so please for now apply the fix explained on top ^^

¤ Ok but... what is UTA League going to do about this?

Sorry AutoRIP and OceanFloor "lovers" but we are not going to remove the maps for now.
:mad:damn!! so close... :D

By studying the problem on 2v2 servers I found useful info about bindport:

i.e: I said the server becomes not quereable... that's actually not true. On 7777/7778 servers, query port becomes 7781. Not sure how it affects servers running on other ports but it's not always "old port + 3".
My guess is webadmin doesn't work for the same reason, it's prolly changed to another random port you don't know, therefore you can't access it.

Maybe forcing OldQueryPortNumber to be always = 0 , this makes query port to be = game port + 1.
Or bRestartServerOnPortSwap to be = false , its default value, this is what made the servers crash/restart btw .... blabla.... ahh well... you can live without knowing this can't you? :D

Still looking into it, we might be able to fix it soon ;)

If you have further info about this problem from your experience please post it here, could help, thx :)
 
Last edited:
¤ What should I do if it happens?

If this happens to you on a match remember you can join the server by IP.

Go to menus->Multiplayer->Open Location ; and type server IP:port there.

Also you can join from console, type:

open serverIP:port

Thats one, an OLD error :p: Brought it up about a year ago ;)

Anyway, what you said to do above to 'fix' it doesnt always work, whenever i used to get it in 6v6 matches, even trying to join by the IP wouldnt work (would just be stuck on 'Connecting')
 
/me slaps Psy
the name is bindport, not blindport.
CS is gonna hunt you down :P
 
Yes baha it's OLD but not everyone knows.... and it didn't crash servers before afaik ^^

[edit]
And the "fix" I meant to prevent the server crashing....
problems to rejoin? :confused:
[/edit]

lol@Neph, Mr. Perfect :o shup :P
 
Last edited:
{R-C}'s server has never had those lines in the ini.

It doesnt crash but it does as you say become un-quereable until next map change. Is that as it should be or should the removal of those lines prevent crashing and also make it querable all the time?
 
Removing the lines prevents the server crashing in case of bindport, but it won't fix bindport problem itself (not quereable, webadmin not working, etc).
There is not a solution for it atm, working on it...
 
Psychotic said:
i.e: I said the server becomes not quereable... that's actually not true. On 7777/7778 servers, query port becomes 7781. Not sure how it affects servers running on other ports but it's not always "old port + 3".
My guess is webadmin doesn't work for the same reason, it's prolly changed to another random port you don't know, therefore you can't access it.

Maybe forcing OldQueryPortNumber to be always = 0 , this makes query port to be = game port + 1.
Or bRestartServerOnPortSwap to be = false , its default value, this is what made the servers crash/restart btw .... blabla.... ahh well... you can live without knowing this can't you? :D
Due to the nature of the bindPort function, it will automatically use the next available free port(s) as it requires; So as you say, it won't always be old port +3 - and there is no way of predefining how many the increment will be.

The oldqueryportnumber cannot be set / changed (i.e. it has no effect). It is simply a variable the server will set when the normal bindport fails.

So... The obvious question, is WHY does bindport fail to bind the query port of [GAMEPORT]+1 after these map conjunctions?
 
Last edited:
Correct.

Set a value for OldQueryPortNumber different than 0, the real query port, 7778 on your server.
Then load AutoRIP and read OldQueryPortNumber value. You will see it becomes 7781 straight away on the first "dodgy" map.

It means bindport error occurs on the first map (of those 4). Then you switch to another one and bindport fails again, so maybe* the server takes the value stored on OldQueryPortNumber as query port, hence the server is not quereable on its usual port.

Anyway, If this is right* ^^ solution would be as simple as making leagueAS force OldQueryPortNumber=0, at some point on the map, start of end.


[edit]
nm... can't get it to work anymore. I swear i got OldQueryPortNumber=7781 at some point on my tests... and it's the real query port in case of bindport failure :confused:
[/edit]

This is what server log said when it restarted because of bindport failure:

ScriptLog: UdpServerQuery(crt): Port 7781 successfully bound.
Critical: appError called:
Critical: UdpServerQuery as-ballistic.UdpServerQuery1 (Function IpServer.UdpServerQuery.PreBeginPlay:00C6) Assertion failed, line 70
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
 
Last edited:
Code:
0050> // Initialize.													   
0051> function PreBeginPlay()											  
0052> {																	
0053>   local int boundport;											   
0054>																	  
0055>   // Set the Tag													 
0056>   Tag = QueryName;												   
0057>																	  
0058>   // Bind the listen socket										  
0059>   boundport = BindPort(Level.Game.GetServerPort(), true);			
0060>   if( boundport == 0 )											   
0061>   {																  
0062>	   Log("UdpServerQuery: Port failed to bind.");				   
0063>	   return;														
0064>   }																  
0065>   Log("UdpServerQuery(crt): Port "$boundport$" successfully bound.");
0066>																	  
0067>   if( bRestartServerOnPortSwap )									 
0068>   {																  
0069>	   if( OldQueryPortNumber != 0 )								  
0070>		   assert( OldQueryPortNumber == boundport );				 
0071>	   OldQueryPortNumber = boundport;								
0072>	   SaveConfig();												  
0073>   }																  
0074>

Right then; it's quite obvious that according to your error log, it's quitting out at line 70. So forcing OldQueryPortNumber to 0 would skip that assertion. Worth a try?
 
Last edited:
hmmm

at my server there is just 1 line

[IpServer.UdpServerQuery]
GameName=ut


bteaminfo important?
 
@ Brave: bTeaminfo should be added with v440 patch, take a look at the readme file.

@ Timo: no m8, the log I pasted is when the server crashed (actually restarted, not crashed) because of bindport error.

To solve it we removed bRestartServerOnPortSwap, remember?
Its default value is "false", so it breaks the first condition (line 67) therefore skips everything till the end of the function, assertion included.
 
So we're still left with the question - Why is the server unable to bind the query port :|

The game port remains intact - yes?

It's just the query (and webadmin!?) ports that can't be bound.

Out of interest. Is this a general UT server problem? Or is it o/s specific?
 
Last edited:
Yup.
I can see ppl blaming LeagueAS now :P
....nope, it happens on normal Assault mode too.

o/s specific? Neither.
Tried on Win2k, WinNT and Linux servers.
 
The Bindporterror occures when a map using Triggered Textures loads after a map using theses Textures too.

Actually there are 4 common maps using these Textures:

* Oceanfloor
* OceanfloorAL
* AutoRIP
* Ballistic

If one of these maps loads after another of these (not itself) the error occures.

It is not possible to completely fix this issue, cause it is native deep inside UT. At least it should be possible to prevent the crashes in the next LeagueAS release.

Tho my advise to all AS-Mappers is: DO NOT USE TRIGGERED TEXTURES in your maps ;)
 
Last edited:
Waiting for it, pld :thumb:

Erm... didn't you say it was possible to fix it, although these textures wouldn't be shown offline.... we can live with that, imo.
Who plays assault maps offline anyway?
And if you do.... would you mind not seeing certain textures (small ones...).

Btw Timo, Rocketcommand uses a triggered texture, doesn't it?
Panel on def spawn room, showing objs state.
 
Psychotic said:
Waiting for it, pld :thumb:

Erm... didn't you say it was possible to fix it, although these textures wouldn't be shown offline.... we can live with that, imo.
Who plays assault maps offline anyway?
And if you do.... would you mind not seeing certain textures (small ones...).

Btw Timo, Rocketcommand uses a triggered texture, doesn't it?
Panel on def spawn room, showing objs state.
Nope; it uses movers iirc.