From 9ca19d7f71f74a81ff3a49ed3e5342b9fb6ba26a Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Fri, 7 Sep 2012 23:40:54 -0300 Subject: LuaSocket's http.request crashes when given URLs missing the scheme part. --- src/luarocks/fs/lua.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua index 6012a454..2231dde5 100644 --- a/src/luarocks/fs/lua.lua +++ b/src/luarocks/fs/lua.lua @@ -488,7 +488,15 @@ local redirect_protocols = { local function http_request(url, http, loop_control) local result = {} - local res, status, headers, err = http.request { url = url, proxy = cfg.proxy, redirect = false, sink = ltn12.sink.table(result) } + + local proxy = cfg.proxy + if type(proxy) ~= "string" then proxy = nil end + -- LuaSocket's http.request crashes when given URLs missing the scheme part. + if proxy and not proxy:find("://") then + proxy = "http://" .. proxy + end + + local res, status, headers, err = http.request { url = url, proxy = proxy, redirect = false, sink = ltn12.sink.table(result) } if not res then return nil, status elseif status == 301 or status == 302 then -- cgit v1.2.3-55-g6feb