Commit 9fb5134f authored by Max Kellermann's avatar Max Kellermann

db/upnp/Util: handle absolute URI paths properly in caturl()

Fixes problems with some UPnP servers.
parent 9aeb23df
...@@ -45,14 +45,27 @@ trimstring(std::string &s, const char *ws) ...@@ -45,14 +45,27 @@ trimstring(std::string &s, const char *ws)
std::string std::string
caturl(const std::string &s1, const std::string &s2) caturl(const std::string &s1, const std::string &s2)
{ {
std::string out(s1); if (s2.front() == '/') {
if (out.back() == '/') { /* absolute path: replace the whole URI path in s1 */
if (s2.front() == '/')
out.erase(out.size()-1); auto i = s1.find("://");
} else { if (i == s1.npos)
if (s2.front() != '/') /* no scheme: override s1 completely */
out.push_back('/'); return s2;
/* find the first slash after the host part */
i = s1.find('/', i + 3);
if (i == s1.npos)
/* there's no URI path - simply append s2 */
i = s1.length();
return s1.substr(0, i) + s2;
} }
std::string out(s1);
if (out.back() != '/')
out.push_back('/');
out += s2; out += s2;
return out; return out;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment