Bind skirmish servers to a random available port

This commit is contained in:
Paul Chote
2011-05-23 19:04:41 +12:00
parent a288c5df15
commit 124f19f00b
4 changed files with 23 additions and 30 deletions

View File

@@ -45,22 +45,27 @@ namespace OpenRA.Server
public ModData ModData;
public Map Map;
bool shutdown = false;
volatile bool shutdown = false;
public void Shutdown()
{
shutdown = true;
}
public Server(IPAddress ip, int port, string[] mods, ServerSettings settings, ModData modData)
public Server(IPEndPoint endpoint, string[] mods, ServerSettings settings, ModData modData)
{
Log.AddChannel("server", "server.log");
listener = new TcpListener(endpoint);
listener.Start();
var localEndpoint = (IPEndPoint)listener.LocalEndpoint;
Ip = localEndpoint.Address;
Port = localEndpoint.Port;
Settings = settings;
Ip = ip;
Port = port;
listener = new TcpListener(ip, port);
randomSeed = (int)DateTime.Now.ToBinary();
ModData = modData;
randomSeed = (int)DateTime.Now.ToBinary();
foreach (var trait in modData.Manifest.ServerTraits)
ServerTraits.Add( modData.ObjectCreator.CreateObject<ServerTrait>(trait) );
@@ -80,19 +85,6 @@ namespace OpenRA.Server
new Thread( _ =>
{
while (true)
{
try
{
listener.Start();
break;
}
catch (Exception)
{
Thread.Sleep(100);
}
}
var timeout = ServerTraits.WithInterface<ITick>().Min(t => t.TickTimeout);
for( ; ; )
{