aboutsummaryrefslogtreecommitdiffstats
path: root/p2p
diff options
context:
space:
mode:
Diffstat (limited to 'p2p')
-rw-r--r--p2p/nat/natupnp.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/p2p/nat/natupnp.go b/p2p/nat/natupnp.go
index 0bcb262bf..890a35043 100644
--- a/p2p/nat/natupnp.go
+++ b/p2p/nat/natupnp.go
@@ -133,6 +133,9 @@ func discoverUPnP() Interface {
return nil
}
+// finds devices matching the given target and calls matcher for all
+// advertised services of each device. The first non-nil service found
+// is sent into out. If no service matched, nil is sent.
func discover(out chan<- *upnp, target string, matcher func(*goupnp.RootDevice, goupnp.ServiceClient) *upnp) {
devs, err := goupnp.DiscoverDevices(target)
if err != nil {
@@ -148,7 +151,12 @@ func discover(out chan<- *upnp, target string, matcher func(*goupnp.RootDevice,
return
}
// check for a matching IGD service
- sc := goupnp.ServiceClient{service.NewSOAPClient(), devs[i].Root, service}
+ sc := goupnp.ServiceClient{
+ SOAPClient: service.NewSOAPClient(),
+ RootDevice: devs[i].Root,
+ Location: devs[i].Location,
+ Service: service,
+ }
sc.SOAPClient.HTTPClient.Timeout = soapRequestTimeout
upnp := matcher(devs[i].Root, sc)
if upnp == nil {