From b92a01d3ae1d1bbb74f23469c929f60df69339be Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 5 Feb 2014 13:44:07 +0000 Subject: [PATCH] httpclient: fix parsing of IPv6 URLs (#662) --- libs/httpclient/luasrc/httpclient.lua | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libs/httpclient/luasrc/httpclient.lua b/libs/httpclient/luasrc/httpclient.lua index 93eed05c6..c866be685 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 -- 2.11.0