Merge 0.10->trunk
[prosody.git] / net / http.lua
index b87c9396473f2c337dc33cf567ce91b670742a21..b78f84382b40137484b3261ce541ded64c153d27 100644 (file)
@@ -23,7 +23,7 @@ local assert, error = assert, error
 
 local log = require "util.logger".init("http");
 
-module "http"
+local _ENV = nil;
 
 local requests = {}; -- Open requests
 
@@ -71,6 +71,17 @@ function listener.ondisconnect(conn, err)
        requests[conn] = nil;
 end
 
+function listener.ondetach(conn)
+       requests[conn] = nil;
+end
+
+local function destroy_request(request)
+       if request.conn then
+               request.conn = nil;
+               request.handler:close()
+       end
+end
+
 local function request_reader(request, data, err)
        if not request.parser then
                local function error_cb(reason)
@@ -102,7 +113,7 @@ local function request_reader(request, data, err)
 end
 
 local function handleerr(err) log("error", "Traceback[http]: %s", traceback(tostring(err), 2)); end
-function request(u, ex, callback)
+local function request(u, ex, callback)
        local req = url.parse(u);
 
        if not (req and req.host) then
@@ -161,7 +172,7 @@ function request(u, ex, callback)
 
        local sslctx = false;
        if using_https then
-               sslctx = ex and ex.sslctx or { mode = "client", protocol = "sslv23", options = { "no_sslv2" } };
+               sslctx = ex and ex.sslctx or { mode = "client", protocol = "sslv23", options = { "no_sslv2", "no_sslv3" } };
        end
 
        local handler, conn = server.addclient(host, port_number, listener, "*a", sslctx)
@@ -180,17 +191,12 @@ function request(u, ex, callback)
        return req;
 end
 
-function destroy_request(request)
-       if request.conn then
-               request.conn = nil;
-               request.handler:close()
-       end
-end
-
-local urlencode, urldecode = util_http.urlencode, util_http.urldecode;
-local formencode, formdecode = util_http.formencode, util_http.formdecode;
-
-_M.urlencode, _M.urldecode = urlencode, urldecode;
-_M.formencode, _M.formdecode = formencode, formdecode;
-
-return _M;
+return {
+       request = request;
+       
+       -- COMPAT
+       urlencode = util_http.urlencode;
+       urldecode = util_http.urldecode;
+       formencode = util_http.formencode;
+       formdecode = util_http.formdecode;
+};