diff options
author | Kim Alvefur <zash@zash.se> | 2014-09-11 01:17:56 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2014-09-11 01:17:56 +0200 |
commit | fb0e709aa2d5fb52da6fb643a3cdfd921e8cde33 (patch) | |
tree | 147e215854eea3b4657112876b5c45863c73acc8 /net/http.lua | |
parent | a685dfb89e5c8895a767011961d2289810b72a1e (diff) | |
parent | 15303b0d3a84572090e81dc7c737b575184135b6 (diff) | |
download | prosody-fb0e709aa2d5fb52da6fb643a3cdfd921e8cde33.tar.gz prosody-fb0e709aa2d5fb52da6fb643a3cdfd921e8cde33.zip |
Merge 0.10->trunk
Diffstat (limited to 'net/http.lua')
-rw-r--r-- | net/http.lua | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/net/http.lua b/net/http.lua index 0c0ef967..35e02fdf 100644 --- a/net/http.lua +++ b/net/http.lua @@ -6,7 +6,6 @@ -- COPYING file in the source package for more information. -- -local socket = require "socket" local b64 = require "util.encodings".base64.encode; local url = require "socket.url" local httpstream_new = require "net.http.parser".new; @@ -164,21 +163,17 @@ function request(u, ex, callback) end local port_number = port and tonumber(port) or (using_https and 443 or 80); - -- Connect the socket, and wrap it with net.server - local conn = socket.tcp(); - conn:settimeout(10); - local ok, err = conn:connect(host, port_number); - if not ok and err ~= "timeout" then - callback(nil, 0, req); - return nil, err; - end - local sslctx = false; if using_https then sslctx = ex and ex.sslctx or { mode = "client", protocol = "sslv23", options = { "no_sslv2" } }; end - req.handler, req.conn = assert(server.wrapclient(conn, host, port_number, listener, "*a", sslctx)); + local handler, conn = server.addclient(host, port_number, listener, "*a", sslctx) + if not handler then + callback(nil, 0, req); + return nil, conn; + end + req.handler, req.conn = handler, conn req.write = function (...) return req.handler:write(...); end req.callback = function (content, code, request, response) log("debug", "Calling callback, status %s", code or "---"); return select(2, xpcall(function () return callback(content, code, request, response) end, handleerr)); end |