Browse Source

Handle query parameters in UPnP control URL (fixes #211)

Jakob Borg 11 years ago
parent
commit
91c4ff6009
1 changed files with 16 additions and 4 deletions
  1. 16 4
      upnp/upnp.go

+ 16 - 4
upnp/upnp.go

@@ -203,12 +203,24 @@ func getServiceURL(rootURL string) (string, error) {
 	}
 
 	u, _ := url.Parse(rootURL)
-	if svc.ControlURL[0] == '/' {
-		u.Path = svc.ControlURL
+	replaceRawPath(u, svc.ControlURL)
+	return u.String(), nil
+}
+
+func replaceRawPath(u *url.URL, rp string) {
+	var p, q string
+	fs := strings.Split(rp, "?")
+	p = fs[0]
+	if len(fs) > 1 {
+		q = fs[1]
+	}
+
+	if p[0] == '/' {
+		u.Path = p
 	} else {
-		u.Path += svc.ControlURL
+		u.Path += p
 	}
-	return u.String(), nil
+	u.RawQuery = q
 }
 
 func soapRequest(url, function, message string) error {