Annotate

tools/linedebug.lua @ 12885:3a6dae39c70e 0.12

net.http.server: Add new API to get HTTP request from a connection This information is sometimes necessary in the context where we have a connection that we know (or believe to be) associated with an incoming HTTP request. For example, it can be used to retrieve the IP address of a request (which may differ from the IP address of the connection, due to X-Forwarded-For and co). Thanks to the Jitsi team for highlighting this gap in the API.
author Matthew Wild <mwild1@gmail.com>
date Thu, 16 Feb 2023 15:59:26 +0000
parent 11193:5850d24a4ad3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11193
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local data = {}
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local getinfo = debug.getinfo;
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local function linehook(ev, li)
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local S = getinfo(2, "S");
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 if S and S.source and S.source:match"^@" then
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local file = S.source:sub(2);
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local lines = data[file];
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 if not lines then
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 lines = {};
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 data[file] = lines;
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 for line in io.lines(file) do
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 lines[#lines+1] = line;
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 io.stderr:write(ev, " ", file, " ", li, " ", lines[li], "\n");
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 debug.sethook(linehook, "l");