Thu, 23 Mar 2023 12:14:53 +0000
client: Fix timeout handling
Previously, the timeout handler would fire an error that would get caught and
logged by the timer code. However that error never reached the upper levels of
scansion, leading to the whole thing just hanging.
Now we just trigger resumption of the async runner, and throw the error from
there if we haven't received the stanza yet.
With this change, timeouts are now correctly handled and reported as failures.
138
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 | |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 | local response_codes = { |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 | -- Source: http://www.iana.org/assignments/http-status-codes |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 | |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 | [100] = "Continue"; -- RFC7231, Section 6.2.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 | [101] = "Switching Protocols"; -- RFC7231, Section 6.2.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 | [102] = "Processing"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 | [103] = "Early Hints"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 | -- [104-199] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 | |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 | [200] = "OK"; -- RFC7231, Section 6.3.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 | [201] = "Created"; -- RFC7231, Section 6.3.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 | [202] = "Accepted"; -- RFC7231, Section 6.3.3 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 | [203] = "Non-Authoritative Information"; -- RFC7231, Section 6.3.4 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 | [204] = "No Content"; -- RFC7231, Section 6.3.5 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 | [205] = "Reset Content"; -- RFC7231, Section 6.3.6 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 | [206] = "Partial Content"; -- RFC7233, Section 4.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 | [207] = "Multi-Status"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 | [208] = "Already Reported"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 | -- [209-225] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 | [226] = "IM Used"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 | -- [227-299] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 | |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 | [300] = "Multiple Choices"; -- RFC7231, Section 6.4.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 | [301] = "Moved Permanently"; -- RFC7231, Section 6.4.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 | [302] = "Found"; -- RFC7231, Section 6.4.3 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 | [303] = "See Other"; -- RFC7231, Section 6.4.4 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 | [304] = "Not Modified"; -- RFC7232, Section 4.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 | [305] = "Use Proxy"; -- RFC7231, Section 6.4.5 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 | -- [306] = "(Unused)"; -- RFC7231, Section 6.4.6 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 | [307] = "Temporary Redirect"; -- RFC7231, Section 6.4.7 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 | [308] = "Permanent Redirect"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 | -- [309-399] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 | |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 | [400] = "Bad Request"; -- RFC7231, Section 6.5.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 | [401] = "Unauthorized"; -- RFC7235, Section 3.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 | [402] = "Payment Required"; -- RFC7231, Section 6.5.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 | [403] = "Forbidden"; -- RFC7231, Section 6.5.3 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 | [404] = "Not Found"; -- RFC7231, Section 6.5.4 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 | [405] = "Method Not Allowed"; -- RFC7231, Section 6.5.5 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 | [406] = "Not Acceptable"; -- RFC7231, Section 6.5.6 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 | [407] = "Proxy Authentication Required"; -- RFC7235, Section 3.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 | [408] = "Request Timeout"; -- RFC7231, Section 6.5.7 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 | [409] = "Conflict"; -- RFC7231, Section 6.5.8 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 | [410] = "Gone"; -- RFC7231, Section 6.5.9 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 | [411] = "Length Required"; -- RFC7231, Section 6.5.10 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 | [412] = "Precondition Failed"; -- RFC7232, Section 4.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 | [413] = "Payload Too Large"; -- RFC7231, Section 6.5.11 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 | [414] = "URI Too Long"; -- RFC7231, Section 6.5.12 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 | [415] = "Unsupported Media Type"; -- RFC7231, Section 6.5.13 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 | [416] = "Range Not Satisfiable"; -- RFC7233, Section 4.4 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 | [417] = "Expectation Failed"; -- RFC7231, Section 6.5.14 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 | [418] = "I'm a teapot"; -- RFC2324, Section 2.3.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 | -- [419-420] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 | [421] = "Misdirected Request"; -- RFC7540, Section 9.1.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 | [422] = "Unprocessable Entity"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 | [423] = "Locked"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 | [424] = "Failed Dependency"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 | [425] = "Too Early"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 | [426] = "Upgrade Required"; -- RFC7231, Section 6.5.15 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 | -- [427] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 | [428] = "Precondition Required"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 | [429] = "Too Many Requests"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 | -- [430] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 | [431] = "Request Header Fields Too Large"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 | -- [432-450] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 | [451] = "Unavailable For Legal Reasons"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 | -- [452-499] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 | |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 | [500] = "Internal Server Error"; -- RFC7231, Section 6.6.1 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 | [501] = "Not Implemented"; -- RFC7231, Section 6.6.2 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 | [502] = "Bad Gateway"; -- RFC7231, Section 6.6.3 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 | [503] = "Service Unavailable"; -- RFC7231, Section 6.6.4 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 | [504] = "Gateway Timeout"; -- RFC7231, Section 6.6.5 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 | [505] = "HTTP Version Not Supported"; -- RFC7231, Section 6.6.6 |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 | [506] = "Variant Also Negotiates"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 | [507] = "Insufficient Storage"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 | [508] = "Loop Detected"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 | -- [509] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 | [510] = "Not Extended"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 | [511] = "Network Authentication Required"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 | -- [512-599] = "Unassigned"; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 | }; |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 | |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 | for k,v in pairs(response_codes) do response_codes[k] = k.." "..v; end |
561f0af6c9dc
serve/: Import dependencies required for serve mode from Prosody 329a670ae975
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 | return setmetatable(response_codes, { __index = function(_, k) return k.." Unassigned"; end }) |