Browse Source

UPnP discovery fix for devices that send multiple response packets

Fix UPnP discovery and port mapping issues reported in #896
Caleb Callaway 11 years ago
parent
commit
b7bb3bfee2
1 changed files with 11 additions and 0 deletions
  1. 11 0
      internal/upnp/upnp.go

+ 11 - 0
internal/upnp/upnp.go

@@ -210,6 +210,17 @@ Mx: %d
 
 	// Collect our results from the result handlers using the result channel
 	for result := range resultChannel {
+		// Check for existing results (some routers send multiple response packets)
+		for _, existingResult := range results {
+			if existingResult.uuid == result.uuid {
+				if debug {
+					l.Debugln("Already processed device with UUID", existingResult.uuid, "continuing...")
+				}
+				continue
+			}
+		}
+
+		// No existing results, okay to append
 		results = append(results, result)
 	}