luci-base: network.js: prevent duplicate wan interface reporting
authorJo-Philipp Wich <jo@mein.io>
Wed, 6 Nov 2019 12:22:10 +0000 (13:22 +0100)
committerJo-Philipp Wich <jo@mein.io>
Wed, 6 Nov 2019 12:22:10 +0000 (13:22 +0100)
Fixes: #3269
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/htdocs/luci-static/resources/network.js

index 7c5d2b97435b5bd8e8c2261013a5d4e19616f2f9..b29a100e9624306b88b2a2bae4dcb3bb55ec8d6b 100644 (file)
@@ -1471,10 +1471,14 @@ Network = L.Class.extend(/** @lends LuCI.Network.prototype */ {
         */
        getWANNetworks: function() {
                return this.getStatusByRoute('0.0.0.0', 0).then(L.bind(function(statuses) {
-                       var rv = [];
+                       var rv = [], seen = {};
 
-                       for (var i = 0; i < statuses.length; i++)
-                               rv.push(this.instantiateNetwork(statuses[i].interface, statuses[i].proto));
+                       for (var i = 0; i < statuses.length; i++) {
+                               if (!seen.hasOwnProperty(statuses[i].interface)) {
+                                       rv.push(this.instantiateNetwork(statuses[i].interface, statuses[i].proto));
+                                       seen[statuses[i].interface] = true;
+                               }
+                       }
 
                        return rv;
                }, this));
@@ -1492,10 +1496,14 @@ Network = L.Class.extend(/** @lends LuCI.Network.prototype */ {
         */
        getWAN6Networks: function() {
                return this.getStatusByRoute('::', 0).then(L.bind(function(statuses) {
-                       var rv = [];
+                       var rv = [], seen = {};
 
-                       for (var i = 0; i < statuses.length; i++)
-                               rv.push(this.instantiateNetwork(statuses[i].interface, statuses[i].proto));
+                       for (var i = 0; i < statuses.length; i++) {
+                               if (!seen.hasOwnProperty(statuses[i].interface)) {
+                                       rv.push(this.instantiateNetwork(statuses[i].interface, statuses[i].proto));
+                                       seen[statuses[i].interface] = true;
+                               }
+                       }
 
                        return rv;
                }, this));