diff --git a/Server/Core/Helper/UPnP.cs b/Server/Core/Helper/UPnP.cs index de3748db..844b1047 100644 --- a/Server/Core/Helper/UPnP.cs +++ b/Server/Core/Helper/UPnP.cs @@ -34,12 +34,25 @@ public static void ForwardPort(ushort port) try { - UPnPNAT upnpNat = new UPnPNAT(); - IStaticPortMappingCollection portMap = upnpNat.StaticPortMappingCollection; - portMap.Add(port, "TCP", port, ipAddr, true, "xRAT 2.0.0.0 UPnP"); + IStaticPortMappingCollection portMap = new UPnPNAT().StaticPortMappingCollection; + if (portMap != null) + portMap.Add(port, "TCP", port, ipAddr, true, "xRAT 2.0 UPnP"); } - catch { return; } + catch + { } }).Start(); } + + public static void RemovePort(ushort port) + { + try + { + IStaticPortMappingCollection portMap = new UPnPNAT().StaticPortMappingCollection; + if (portMap != null) + portMap.Remove(port, "TCP"); + } + catch + { } + } } } diff --git a/Server/Forms/frmMain.cs b/Server/Forms/frmMain.cs index b0a148ce..46be1ffc 100644 --- a/Server/Forms/frmMain.cs +++ b/Server/Forms/frmMain.cs @@ -125,6 +125,9 @@ private void frmMain_FormClosing(object sender, FormClosingEventArgs e) if (listenServer.Listening) listenServer.Disconnect(); + if (XMLSettings.UseUPnP) + UPnP.RemovePort(ushort.Parse(XMLSettings.ListenPort.ToString())); + nIcon.Visible = false; }