aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mod_c2s,mod_s2s: Adapt to XEP-xxxx: Stream Limits AdvertisementKim Alvefur2022-10-206-9/+29
| | | | Thanks MattJ
* mod_s2s: Avoid sending too large stanzasKim Alvefur2021-03-161-0/+5
| | | | | | | | Just dropping them isn't great but hopefully something more sensible can be done in the future. Will need work to ensure that this signal is handled correctly in sending modules etc.
* mod_s2s: Record stanza size limit advertised by other serversKim Alvefur2021-03-161-0/+4
| | | | For future use, i.e. canceling sending of stanzas that exceed the limit
* mod_s2s: Advertise stanza size limit to other serversKim Alvefur2021-03-161-0/+5
| | | | So they can, like, not send big stanzas.
* mod_c2s: Advertise stanza size limit to clientsKim Alvefur2021-03-161-0/+4
| | | | | | | Should help clients avoid sending stanzas that will get their stream killed. Custom namespace while ironing out the protocol. My spoon is too big!
* mod_smacks: Factor out resumption token table key generationKim Alvefur2022-11-131-4/+8
| | | | So that happens in a single place, where it can be changed easier.
* Merge 0.12->trunkKim Alvefur2022-12-12181-1973/+6130
|\
| * mod_smacks: Only track resumable sessionsKim Alvefur2022-11-181-1/+3
| | | | | | | | Required due to track_session() having moved here
| * util.hashring: Support associating arbitrary data with nodesMatthew Wild2022-12-022-9/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this API, a 'node' is always a simple text string. Sometimes the caller may have a more complex structure representing a node, but the hash ring is really only concerned with the node's name. This API change allows :add_nodes() to take a table of `node_name = value` pairs, as well as the simple array of node names previously accepted. The 'value' of the selected node is returned as a new second result from :get_node(). If no value is passed when a node is added, it defaults to `true` (as before, but this was never previously exposed).
| * util.hashring: tests: don't randomize order - they are written in a ↵Matthew Wild2022-12-021-0/+1
| | | | | | | | sequential style
| * Merge 0.12->trunkMatthew Wild2022-11-042-5/+22
| |\
| * \ Merge 0.12->trunkMatthew Wild2022-10-311-4/+11
| |\ \
| * \ \ Merge 0.12->trunkKim Alvefur2022-10-241-1/+5
| |\ \ \
| * | | | util.prosodyctl.cert: Remove Lua 5.1 os.execute() return value compatKim Alvefur2022-10-201-1/+1
| | | | |
| * | | | util.prosodyctl: Remove Lua 5.1 os.execute() return value compatKim Alvefur2022-10-201-2/+1
| | | | |
| * | | | util.openssl: Remove Lua 5.1 os.execute() return value compatKim Alvefur2022-10-201-2/+1
| | | | |
| * | | | util.human.io: Fix handling of os.execute() return values in Lua 5.2+Kim Alvefur2022-10-201-3/+3
| | | | | | | | | | | | | | | | | | | | Wrong part of Lua 5.1 compat removed in 0f4feaf9ca64
| * | | | util.mathcompat: Module to ease reuse of math.type()Kim Alvefur2022-10-207-10/+41
| | | | | | | | | | | | | | | | | | | | | | | | | Mostly to ensure it is available during tests, as util.startup is not invoked there
| * | | | util.startup: Provide a common Lua 5.3+ math.type() for Lua 5.2Kim Alvefur2022-10-194-9/+17
| | | | | | | | | | | | | | | | | | | | Code deduplication
| * | | | Merge 0.12->trunkKim Alvefur2022-10-201-1/+1
| |\ \ \ \
| * | | | | util.smqueue: Improve testsKim Alvefur2022-10-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | Result of mutation testing. One mutant remaining.
| * | | | | util.jsonpointer: Improve testsKim Alvefur2022-10-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Result of mutation testing Remaining mutants are mostly relating to the math.type() fallback. Another case being that array[#array+1] == array[#array+2] and thus doesn't matter.
| * | | | | util.datamapper: Remove leftover debug assert (Only Teal, not included in build)Kim Alvefur2022-10-191-4/+0
| | | | | |
| * | | | | mod_blocklist: Add option 'migrate_legacy_blocking' to disable migration ↵Kim Alvefur2022-10-172-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from mod_privacy Tiny performance improvement for new users by skipping this check. Most servers should have gone trough the migration for all active users long ago. As a suitable first step of phasing out this code, we make it possible to disable it first. Later it can be disabled by default, before finally the code is deleted.
| * | | | | util.stanza: Add new methods to Teal interface specificationKim Alvefur2022-10-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | at_top: 21217f7e82b9 get_child_with_attr: 39164ea2ab9e get_child_attr: e8934ce6ea0f add_error: 5f182bccf33f
| * | | | | mod_c2s: Include stream attributes in stream-features eventMatthew Wild2022-10-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | We need this to access 'from' in SASL2/FAST.
| * | | | | mod_tokenauth: Allow attaching an arbitrary data table to a tokenMatthew Wild2022-10-131-1/+2
| | | | | |
| * | | | | util.cache: Add some missing test casesMatthew Wild2022-10-131-0/+52
| | | | | | | | | | | | | | | | | | | | | | | | Found via mutation testing.
| * | | | | util.jid: Add test for invalid domain but valid UTF-8 (thanks jonas)Matthew Wild2022-10-111-0/+1
| | | | | |
| * | | | | util.jid: Simplify boolean logic in conditionalsMatthew Wild2022-10-111-3/+3
| | | | | |
| * | | | | util.jid: Remove redundant check from split() (micro-optimization?)Matthew Wild2022-10-111-2/+1
| | | | | |
| * | | | | util.jid: Add missing test casesMatthew Wild2022-10-111-0/+40
| | | | | | | | | | | | | | | | | | | | | | | | (98% mutant score, single remaining mutant is a string.sub equivalent)
| * | | | | .luacheckrc: Add test_mutants.sh.lua to the ignore listMatthew Wild2022-10-111-0/+1
| | | | | |
| * | | | | tools: Add initial mutation testing scriptMatthew Wild2022-10-111-0/+217
| | | | | |
| * | | | | util.dbuffer: Add a bunch of missing test casesMatthew Wild2022-10-111-2/+70
| | | | | | | | | | | | | | | | | | | | | | | | Found via mutation testing.
| * | | | | util.dbuffer: Add efficient shortcuts for discard() in certain casesMatthew Wild2022-10-111-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the buffer is already empty, nothing to do. If we're throwing away the whole buffer, we can just empty it and avoid read_chunk() (which in turn may collapse()). These shortcuts are much more efficient.
| * | | | | util.dbuffer: Remove redundant code (read_chunk() cannot fail at this point)Matthew Wild2022-10-111-7/+3
| | | | | |
| * | | | | Merge 0.12->trunkKim Alvefur2022-10-092-10/+16
| |\ \ \ \ \
| * | | | | | util.datetime: Add some missing test casesMatthew Wild2022-10-081-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | You guessed it, mutation testing.
| * | | | | | util.roles: Fix tests to use autogenerated role idMatthew Wild2022-10-081-1/+1
| | | | | | |
| * | | | | | util.roles: Add some more missing test casesMatthew Wild2022-10-081-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Found via mutation testing.
| * | | | | | util.promise: Fix field name in failing test (introduced in 2639e0e1c378)Matthew Wild2022-10-071-1/+1
| | | | | | |
| * | | | | | util.promise: Add some missing test cases (found through mutation testing)Matthew Wild2022-10-071-0/+25
| | | | | | |
| * | | | | | util.promise: Remove line that was supposed to be removed in eb9814372c54Matthew Wild2022-10-071-1/+0
| | | | | | |
| * | | | | | util.promise: Remove some redundant checks, add tests confirming redundancyMatthew Wild2022-10-072-4/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This lines don't appear to do anything useful, and all tests pass when they are removed. Discovered via mutation testing. I added extra tests to exercise this code, because I wasn't certain that there were no side-effects caused by removal. Everything appears to be fine, thanks to the "pending" check at the start of promise_settle().
| * | | | | | util.roles: Add a :policies() method to iterate through available policiesMatthew Wild2022-10-071-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't expose the policies directly, to force people to go through :may(). However, there are times when we really just need to know what policies a role has inside it (e.g. for reporting or debugging purposes).
| * | | | | | util.roles: Add testsMatthew Wild2022-10-071-0/+116
| | | | | | |
| * | | | | | util.roles: Return nil if the role has no explicit policy (fixes inheritance)Matthew Wild2022-10-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, if the first inherited role had no opinion, it returned false and prevented further consultation of other inherited roles. This bug was found thanks to the implementation of missing test cases identified through mutation testing.
| * | | | | | mod_smacks: Change boolean attribute from '1' to 'true' for compatibilityMatthew Wild2022-10-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conversations 2.10.10 and earlier expect this to be literally 'true' and don't recognise '1'. This leads to it not attempting resumption with Prosody at all since this change was introduced in 36ba170c4fd0. Thanks to Zash for noticing, debugging and diagnosing this issue. This issue is fixed in Conversations commit 052c58f3 (unreleased at the time of writing).
| * | | | | | util.iterators: join: Work even with only a single iterator in the chainMatthew Wild2022-10-062-1/+10
| | | | | | |