From: Jo-Philipp Wich Date: Wed, 5 Feb 2014 13:44:07 +0000 (+0000) Subject: httpclient: fix parsing of IPv6 URLs (#662) X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=b92a01d3ae1d1bbb74f23469c929f60df69339be;p=project%2Fluci.git httpclient: fix parsing of IPv6 URLs (#662) --- diff --git a/libs/httpclient/luasrc/httpclient.lua b/libs/httpclient/luasrc/httpclient.lua index 93eed05c63..c866be6855 100644 --- a/libs/httpclient/luasrc/httpclient.lua +++ b/libs/httpclient/luasrc/httpclient.lua @@ -108,11 +108,22 @@ end function request_raw(uri, options) options = options or {} local pr, auth, host, port, path - if uri:find("@") then - pr, auth, host, port, path = - uri:match("(%w+)://(.+)@([%w-.]+):?([0-9]*)(.*)") + + if uri:find("%[") then + if uri:find("@") then + pr, auth, host, port, path = uri:match("(%w+)://(.+)@(%b[]):?([0-9]*)(.*)") + host = host:sub(2,-2) + else + pr, host, port, path = uri:match("(%w+)://(%b[]):?([0-9]*)(.*)") + host = host:sub(2,-2) + end else - pr, host, port, path = uri:match("(%w+)://([%w-.]+):?([0-9]*)(.*)") + if uri:find("@") then + pr, auth, host, port, path = + uri:match("(%w+)://(.+)@([%w-.]+):?([0-9]*)(.*)") + else + pr, host, port, path = uri:match("(%w+)://([%w-.]+):?([0-9]*)(.*)") + end end if not host then