Annotate

loader.lua @ 13319:6d6291dfe735

net.http: Add simple connection pooling This should speed up repeated requests to the same site by keeping their connections around and sending more requests on them. Sending multiple requests at the same time is not supported, instead a request started while another to the same authority is in progress would open a new one and the first one to complete would go back in the pool. This could be investigated in the future. Some http servers limit the number of requests per connection and this is not tested and could cause one request to fail, but hopefully it will close the connection and prevent it from being reused.
author Kim Alvefur <zash@zash.se>
date Sat, 11 Nov 2023 23:08:34 +0100
parent 12949:2f61ebcf37c0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12948
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
1 -- Allow for both require"util.foo" and require"prosody.util.foo" for a
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
2 -- transition period while we update all require calls.
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
3
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
4 if (...) == "prosody.loader" then
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
5 if not package.path:find "prosody" then
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
6 -- For require"util.foo" also look in paths equivalent to "prosody.util.foo"
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
7 package.path = package.path:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2");
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
8 package.cpath = package.cpath:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2");
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
9 end
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
10 else
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
11 -- When requiring "prosody.x", also look for "x"
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
12 for i = #package.searchers, 1, -1 do
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
13 local search = package.searchers[i];
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
14 table.insert(package.searchers, i, function(module_name)
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
15 local lib = module_name:match("^prosody%.(.*)$");
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
16 if lib then
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
17 return search(lib);
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
18 end
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
19 end)
29983f09c913 prosody.loader: Incorporate search path rewrite patch from Debian packages
Kim Alvefur <zash@zash.se>
parents: 12947
diff changeset
20 end
12947
14a44b1a51d0 prosody.loader: Allow loading modules under 'prosody' namespace (#1223)
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 end
12949
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
22
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
23 -- Look for already loaded module with or without prefix
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
24 setmetatable(package.loaded, {
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
25 __index = function(loaded, module_name)
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
26 local suffix = module_name:match("^prosody%.(.*)$");
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
27 if suffix then
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
28 return rawget(loaded, suffix);
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
29 end
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
30 local prefixed = rawget(loaded, "prosody." .. module_name);
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
31 if prefixed ~= nil then
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
32 return prefixed;
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
33 end
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
34 end;
2f61ebcf37c0 prosody.loader: Ensure already loaded modules are found in old and new namespaces
Kim Alvefur <zash@zash.se>
parents: 12948
diff changeset
35 })