Software /
code /
prosody
Comparison
net/http.lua @ 10563:e8db377a2983
Merge 0.11->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 24 Dec 2019 00:39:45 +0100 |
parent | 10464:8d3acf16c404 |
child | 10803:71d04bd6cadd |
comparison
equal
deleted
inserted
replaced
10562:670afc079f68 | 10563:e8db377a2983 |
---|---|
38 | 38 |
39 -- Request-related helper functions | 39 -- Request-related helper functions |
40 local function handleerr(err) log("error", "Traceback[http]: %s", traceback(tostring(err), 2)); return err; end | 40 local function handleerr(err) log("error", "Traceback[http]: %s", traceback(tostring(err), 2)); return err; end |
41 local function log_if_failed(req, ret, ...) | 41 local function log_if_failed(req, ret, ...) |
42 if not ret then | 42 if not ret then |
43 log("error", "Request '%s': error in callback: %s", req.id, tostring((...))); | 43 log("error", "Request '%s': error in callback: %s", req.id, (...)); |
44 if not req.suppress_errors then | 44 if not req.suppress_errors then |
45 error(...); | 45 error(...); |
46 end | 46 end |
47 end | 47 end |
48 return ...; | 48 return ...; |
148 | 148 |
149 function listener.onincoming(conn, data) | 149 function listener.onincoming(conn, data) |
150 local request = requests[conn]; | 150 local request = requests[conn]; |
151 | 151 |
152 if not request then | 152 if not request then |
153 log("warn", "Received response from connection %s with no request attached!", tostring(conn)); | 153 log("warn", "Received response from connection %s with no request attached!", conn); |
154 return; | 154 return; |
155 end | 155 end |
156 | 156 |
157 if data and request.reader then | 157 if data and request.reader then |
158 request:reader(data); | 158 request:reader(data); |
258 local sslctx = false; | 258 local sslctx = false; |
259 if using_https then | 259 if using_https then |
260 sslctx = ex and ex.sslctx or self.options and self.options.sslctx; | 260 sslctx = ex and ex.sslctx or self.options and self.options.sslctx; |
261 end | 261 end |
262 | 262 |
263 local http_service = basic_resolver.new(host, port_number); | 263 local http_service = basic_resolver.new(host, port_number, "tcp", { servername = req.host }); |
264 connect(http_service, listener, { sslctx = sslctx }, req); | 264 connect(http_service, listener, { sslctx = sslctx }, req); |
265 | 265 |
266 self.events.fire_event("request", { http = self, request = req, url = u }); | 266 self.events.fire_event("request", { http = self, request = req, url = u }); |
267 return req; | 267 return req; |
268 end | 268 end |
283 }; | 283 }; |
284 return http; | 284 return http; |
285 end | 285 end |
286 | 286 |
287 local default_http = new({ | 287 local default_http = new({ |
288 sslctx = { mode = "client", protocol = "sslv23", options = { "no_sslv2", "no_sslv3" } }; | 288 sslctx = { mode = "client", protocol = "sslv23", options = { "no_sslv2", "no_sslv3" }, alpn = "http/1.1" }; |
289 suppress_errors = true; | 289 suppress_errors = true; |
290 }); | 290 }); |
291 | 291 |
292 return { | 292 return { |
293 request = function (u, ex, callback) | 293 request = function (u, ex, callback) |