diff --git a/htroot/ConfigBasic.html b/htroot/ConfigBasic.html
index c60f32407..4e6e91d9a 100644
--- a/htroot/ConfigBasic.html
+++ b/htroot/ConfigBasic.html
@@ -86,6 +86,7 @@
+ #(success)#::
Configuration was not successful. This may take a moment.::
#(/success)#
#(/upnp)#
diff --git a/htroot/ConfigBasic.java b/htroot/ConfigBasic.java
index 428bbfa0a..2ee2915cb 100644
--- a/htroot/ConfigBasic.java
+++ b/htroot/ConfigBasic.java
@@ -212,8 +212,11 @@ public class ConfigBasic {
prop.put("nextStep", NEXTSTEP_FINISHED);
}
+ final boolean upnp_enabled = env.getConfigBool(plasmaSwitchboardConstants.UPNP_ENABLED, false);
prop.put("upnp", "1");
- prop.put("upnp_enabled", (env.getConfigBool(plasmaSwitchboardConstants.UPNP_ENABLED, false)) ? "1" : "0");
+ prop.put("upnp_enabled", upnp_enabled ? "1" : "0");
+ if (upnp_enabled) prop.put("upnp_success", (UPnP.getMappedPort() > 0) ? "2" : "1");
+ else prop.put("upnp_success", "0");
// set default values
prop.putHTML("defaultName", env.getConfig("peerName", ""));
diff --git a/source/de/anomic/net/UPnP.java b/source/de/anomic/net/UPnP.java
index 19010a95e..d7be4c543 100644
--- a/source/de/anomic/net/UPnP.java
+++ b/source/de/anomic/net/UPnP.java
@@ -111,12 +111,14 @@ public class UPnP {
if (port < 1) return;
if (mappedPort > 0) deletePortMapping(); // delete old mapping first
if (mappedPort == 0 && ((IGDs != null && localHostIP != null) || init())) {
- mappedPort = port;
for (InternetGatewayDevice IGD : IGDs) {
try {
- boolean mapped = IGD.addPortMapping(mappedName, null, mappedPort, mappedPort, localHostIP, 0, mappedProtocol);
- String msg = "port " + mappedPort + " on device "+ IGD.getIGDRootDevice().getFriendlyName();
- if (mapped) log.logInfo("mapped " + msg);
+ boolean mapped = IGD.addPortMapping(mappedName, null, port, port, localHostIP, 0, mappedProtocol);
+ String msg = "port " + port + " on device "+ IGD.getIGDRootDevice().getFriendlyName();
+ if (mapped) {
+ log.logInfo("mapped " + msg);
+ mappedPort = port;
+ }
else log.logWarning("could not map " + msg);
} catch (IOException e) {} catch (UPNPResponseException e) { log.logSevere("mapping error: " + e.getMessage()); }
}