Mercurial > prosody-hg
comparison net/http/server.lua @ 13100:18ffe7833446
net.http.server: Assign an ID to each request, shared with response
Goal is improve tracking of individual HTTP requests throughout its
life-cycle. Having a single ID to use in logging should help here.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 14 May 2023 18:38:22 +0200 |
| parents | ba409c67353b |
| children | c975dafa4303 |
comparison
equal
deleted
inserted
replaced
| 13099:a1ba503610ed | 13100:18ffe7833446 |
|---|---|
| 12 local codes = require "prosody.net.http.codes"; | 12 local codes = require "prosody.net.http.codes"; |
| 13 local promise = require "prosody.util.promise"; | 13 local promise = require "prosody.util.promise"; |
| 14 local errors = require "prosody.util.error"; | 14 local errors = require "prosody.util.error"; |
| 15 local blocksize = 2^16; | 15 local blocksize = 2^16; |
| 16 local async = require "prosody.util.async"; | 16 local async = require "prosody.util.async"; |
| 17 local id = require"prosody.util.id"; | |
| 17 | 18 |
| 18 local _M = {}; | 19 local _M = {}; |
| 19 | 20 |
| 20 local sessions = {}; | 21 local sessions = {}; |
| 21 local incomplete = {}; | 22 local incomplete = {}; |
| 126 end | 127 end |
| 127 handle_request(conn, request, done); wait(); | 128 handle_request(conn, request, done); wait(); |
| 128 end, runner_callbacks, session); | 129 end, runner_callbacks, session); |
| 129 local function success_cb(request) | 130 local function success_cb(request) |
| 130 --log("debug", "success_cb: %s", request.path); | 131 --log("debug", "success_cb: %s", request.path); |
| 132 request.id = id.short(); | |
| 131 request.ip = ip; | 133 request.ip = ip; |
| 132 request.secure = secure; | 134 request.secure = secure; |
| 133 session.thread:run(request); | 135 session.thread:run(request); |
| 134 end | 136 end |
| 135 local function error_cb(err) | 137 local function error_cb(err) |
| 247 end | 249 end |
| 248 | 250 |
| 249 local is_head_request = request.method == "HEAD"; | 251 local is_head_request = request.method == "HEAD"; |
| 250 | 252 |
| 251 local response = { | 253 local response = { |
| 254 id = request.id; | |
| 252 request = request; | 255 request = request; |
| 253 is_head_request = is_head_request; | 256 is_head_request = is_head_request; |
| 254 status_code = 200; | 257 status_code = 200; |
| 255 headers = { date = date_header, connection = response_conn_header }; | 258 headers = { date = date_header, connection = response_conn_header }; |
| 256 persistent = persistent; | 259 persistent = persistent; |
