Mercurial > prosody-hg
comparison net/http.lua @ 6791:e813e8cf6046
Merge 0.10->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 20 Aug 2015 13:05:22 +0200 |
| parents | 8fed6ea12098 647adfd8f738 |
| children | 17a4e89a4780 |
comparison
equal
deleted
inserted
replaced
| 6776:4412a2307c89 | 6791:e813e8cf6046 |
|---|---|
| 21 tonumber, tostring, xpcall, select, debug.traceback; | 21 tonumber, tostring, xpcall, select, debug.traceback; |
| 22 local assert, error = assert, error | 22 local assert, error = assert, error |
| 23 | 23 |
| 24 local log = require "util.logger".init("http"); | 24 local log = require "util.logger".init("http"); |
| 25 | 25 |
| 26 module "http" | 26 local _ENV = nil; |
| 27 | 27 |
| 28 local requests = {}; -- Open requests | 28 local requests = {}; -- Open requests |
| 29 | 29 |
| 30 local listener = { default_port = 80, default_mode = "*a" }; | 30 local listener = { default_port = 80, default_mode = "*a" }; |
| 31 | 31 |
| 71 requests[conn] = nil; | 71 requests[conn] = nil; |
| 72 end | 72 end |
| 73 | 73 |
| 74 function listener.ondetach(conn) | 74 function listener.ondetach(conn) |
| 75 requests[conn] = nil; | 75 requests[conn] = nil; |
| 76 end | |
| 77 | |
| 78 local function destroy_request(request) | |
| 79 if request.conn then | |
| 80 request.conn = nil; | |
| 81 request.handler:close() | |
| 82 end | |
| 76 end | 83 end |
| 77 | 84 |
| 78 local function request_reader(request, data, err) | 85 local function request_reader(request, data, err) |
| 79 if not request.parser then | 86 if not request.parser then |
| 80 local function error_cb(reason) | 87 local function error_cb(reason) |
| 104 end | 111 end |
| 105 request.parser:feed(data); | 112 request.parser:feed(data); |
| 106 end | 113 end |
| 107 | 114 |
| 108 local function handleerr(err) log("error", "Traceback[http]: %s", traceback(tostring(err), 2)); end | 115 local function handleerr(err) log("error", "Traceback[http]: %s", traceback(tostring(err), 2)); end |
| 109 function request(u, ex, callback) | 116 local function request(u, ex, callback) |
| 110 local req = url.parse(u); | 117 local req = url.parse(u); |
| 111 | 118 |
| 112 if not (req and req.host) then | 119 if not (req and req.host) then |
| 113 callback(nil, 0, req); | 120 callback(nil, 0, req); |
| 114 return nil, "invalid-url"; | 121 return nil, "invalid-url"; |
| 182 | 189 |
| 183 requests[req.handler] = req; | 190 requests[req.handler] = req; |
| 184 return req; | 191 return req; |
| 185 end | 192 end |
| 186 | 193 |
| 187 function destroy_request(request) | 194 return { |
| 188 if request.conn then | 195 request = request; |
| 189 request.conn = nil; | 196 |
| 190 request.handler:close() | 197 -- COMPAT |
| 191 end | 198 urlencode = util_http.urlencode; |
| 192 end | 199 urldecode = util_http.urldecode; |
| 193 | 200 formencode = util_http.formencode; |
| 194 local urlencode, urldecode = util_http.urlencode, util_http.urldecode; | 201 formdecode = util_http.formdecode; |
| 195 local formencode, formdecode = util_http.formencode, util_http.formdecode; | 202 }; |
| 196 | |
| 197 _M.urlencode, _M.urldecode = urlencode, urldecode; | |
| 198 _M.formencode, _M.formdecode = formencode, formdecode; | |
| 199 | |
| 200 return _M; |
