Fix dedicated server crash with AllowPortForward.

This commit is contained in:
Paul Chote
2016-10-30 15:31:03 +00:00
parent 7ba0c22346
commit bbe4864921
3 changed files with 5 additions and 6 deletions

View File

@@ -138,7 +138,8 @@ namespace OpenRA.Server
randomSeed = (int)DateTime.Now.ToBinary(); randomSeed = (int)DateTime.Now.ToBinary();
if (Settings.AllowPortForward) // UPnP is only supported for servers created by the game client.
if (!dedicated && Settings.AllowPortForward)
UPnP.ForwardPort(Settings.ListenPort, Settings.ExternalPort).Wait(); UPnP.ForwardPort(Settings.ListenPort, Settings.ExternalPort).Wait();
foreach (var trait in modData.Manifest.ServerTraits) foreach (var trait in modData.Manifest.ServerTraits)
@@ -209,7 +210,7 @@ namespace OpenRA.Server
if (State == ServerState.ShuttingDown) if (State == ServerState.ShuttingDown)
{ {
EndGame(); EndGame();
if (Settings.AllowPortForward) if (!dedicated && Settings.AllowPortForward)
UPnP.RemovePortForward().Wait(); UPnP.RemovePortForward().Wait();
break; break;
} }

View File

@@ -7,12 +7,11 @@ set Mod=ra
set ListenPort=1234 set ListenPort=1234
set ExternalPort=1234 set ExternalPort=1234
set AdvertiseOnline=True set AdvertiseOnline=True
set AllowPortForward=False
set EnableSingleplayer=False set EnableSingleplayer=False
set Password="" set Password=""
:loop :loop
OpenRA.Server.exe Game.Mod=%Mod% Server.Name=%Name% Server.ListenPort=%ListenPort% Server.ExternalPort=%ExternalPort% Server.AdvertiseOnline=%AdvertiseOnline% Server.AllowPortForward=%AllowPortForward% Server.EnableSingleplayer=%EnableSingleplayer% Server.Password=%Password% OpenRA.Server.exe Game.Mod=%Mod% Server.Name=%Name% Server.ListenPort=%ListenPort% Server.ExternalPort=%ExternalPort% Server.AdvertiseOnline=%AdvertiseOnline% Server.EnableSingleplayer=%EnableSingleplayer% Server.Password=%Password%
goto loop goto loop

View File

@@ -11,13 +11,12 @@ Mod="${Mod:-"ra"}"
ListenPort="${ListenPort:-"1234"}" ListenPort="${ListenPort:-"1234"}"
ExternalPort="${ExternalPort:-"1234"}" ExternalPort="${ExternalPort:-"1234"}"
AdvertiseOnline="${AdvertiseOnline:-"True"}" AdvertiseOnline="${AdvertiseOnline:-"True"}"
AllowPortForward="${AllowPortForward:-"False"}"
EnableSingleplayer="${EnableSingleplayer:-"False"}" EnableSingleplayer="${EnableSingleplayer:-"False"}"
Password="${Password:-""}" Password="${Password:-""}"
while true; do while true; do
mono --debug OpenRA.Server.exe Game.Mod=$Mod \ mono --debug OpenRA.Server.exe Game.Mod=$Mod \
Server.Name="$Name" Server.ListenPort=$ListenPort Server.ExternalPort=$ExternalPort \ Server.Name="$Name" Server.ListenPort=$ListenPort Server.ExternalPort=$ExternalPort \
Server.AdvertiseOnline=$AdvertiseOnline Server.AllowPortForward=$AllowPortForward \ Server.AdvertiseOnline=$AdvertiseOnline \
Server.EnableSingleplayer=$EnableSingleplayer Server.Password=$Password Server.EnableSingleplayer=$EnableSingleplayer Server.Password=$Password
done done