aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mod_smacks: Remove obsolete commentKim Alvefur2021-12-021-5/+0
| | | | It dates back to the initial commit in prosody-modules 9a7671720dec
* mod_smacks: Avoid duplicated queueing using flag on session instead of stanzaKim Alvefur2021-12-021-2/+4
| | | | Mutating the stanza like this is Really Bad Practice.
* mod_smacks: Remove dead conditionalKim Alvefur2021-12-021-1/+1
| | | | | `cached_stanza` can't be falsy because util.stanza.clone() would have thrown rather than return nil, or `._cached=true` would have.
* mod_smacks: Ensure hibernating session is not connectedKim Alvefur2021-12-021-0/+3
| | | | | Turns out that if you destroy a session from inside prosody, it goes into hibernation but stays connected and continues processing stanzas.
* mod_smacks: Reorder imports etcKim Alvefur2021-12-011-13/+15
| | | | Mostly sorted by name of import (sort -k4) and grouped by kind
* mod_smacks: Fix empty cache checkKim Alvefur2021-12-011-1/+1
| | | | | In Lua, every value except `nil` and `false` are considered true in boolean expressions, even `0` as here, which means this was dead code.
* mod_smacks: Use stanza type checking function for correctnessKim Alvefur2021-12-011-1/+1
| | | | | Non-stanza tables with an 'attr' field might be rare in Prosody, but better to be Correct
* mod_smacks: Remove redundant fieldsKim Alvefur2021-12-011-7/+1
| | | | | | Given that the registry is scoped per user and the module is scoped per host, there seems no point to checking or storing both username and host here.
* mod_smacks: Factor out formatting of 'h' valueKim Alvefur2021-12-011-4/+6
|
* mod_smacks: Remove dead legacy code for 0.10Kim Alvefur2021-12-011-17/+0
|
* mod_smacks: Use new pre-session-close event instead of monkeypatchKim Alvefur2021-12-011-13/+16
| | | | Much cleaner.
* mod_c2s: Add event just before closing as sessionKim Alvefur2021-12-011-0/+3
| | | | | | To allow modules to do things just before the session is closed. The '(pre-)resource-unbind' events are fired after the stream is closed, leaving no way to send something.
* util.dependencies: Fix typo (thanks jonas’)Kim Alvefur2021-11-301-1/+1
| | | | | | | | | | vim> Change "sevral" to: 1 "several" 2 "sacral" 3 "spiral" 4 "feral" 5 "serial" jonas’> I choose 4.
* net.server_epoll: Prevent loop attempting to send last data after closeKim Alvefur2021-11-301-0/+1
| | | | | | | | | | | | | | If the connection is closed by the peer, any buffered data is given a last chance to be sent (see f27b9319e0da). If the connection is Really closed, no attempt to write will occur, instead epoll will raise the error flag and :onreadable() will be invoked again, where it will try to :close() again for the same reason, thus looping until the connection somehow gets destroyed. By clearing the _connected flag, the second time it passes :onreadable() it should go directly to :destroy(), breaking the loop. Thanks Link Mauve for reporting
* mod_storage_sql: Return cached total where it makes senseKim Alvefur2021-11-301-4/+9
| | | | | This should skip the summary SQL query when not needed, ie when the cached value can be used directly.
* mod_storage_sql: Adjust handling of 'total' for multi-id queriesKim Alvefur2021-11-301-2/+3
| | | | | Otherwise a query for a set of ids may cause that value to be cached, despite only covering a subset.
* mod_storage_sql: Fix traceback on multi-user deletionKim Alvefur2021-11-301-2/+6
| | | | | | | jid.join(true, ...) fails. Since we don't know which users this affects, best to clear the whole cache.
* mod_mam,mod_muc_mam: Simplify deletion when multi-user-deletion is supportedKim Alvefur2021-11-302-13/+54
| | | | More code, but less of it needs to run and no extra tracking is needed.
* mod_storage_sql: Expose multi-user deletion capabilityKim Alvefur2021-11-301-0/+1
| | | | | archive_store:delete(true) deletes messages for all users, which would allow some simplification when this is supported.
* configure: Silence warning about echo -n [shellcheck]Kim Alvefur2021-11-291-1/+2
| | | | Seems SC2039 has been replaced, so should be phased out.
* configure: Remove variable noop (thanks shellcheck)Kim Alvefur2021-11-291-1/+0
|
* util.async tests: Explicitly import match from luassert (luacheck)Matthew Wild2021-11-291-0/+1
|
* util.startup: Initialize util.async at startupMatthew Wild2021-11-291-0/+9
|
* util.async: Add next-tick configurationMatthew Wild2021-11-292-2/+54
| | | | | | | | Running woken runners in the next iteration of the event loop prevents unexpected recursion, unexpected tracebacks, and is generally more predictable. The pattern is borrowed from util.promise, where we're now doing the same.
* util.async: Add sleep() method with configurable scheduling backendMatthew Wild2021-11-292-0/+69
| | | | | | | | | No scheduler set by default, so it will error (we plan to initialize it in util.startup). We wanted to avoid a hard dependency on util.timer (which in turn depends on network backends, etc.), and we didn't add timer.sleep() because we didn't want to add a hard dependency on util.async for things that don't need it.
* util.stanza: Adjust pretty printing for symmetryKim Alvefur2021-11-291-1/+1
| | | | | Self-closing <tags/> and <?processing instructions?> had some asymmetries in applied colors.
* util.dependencies: Discourage Lua 5.1Kim Alvefur2021-11-281-0/+2
| | | | Search for 'Lua 5.1' for reasons.
* util.dependencies: Consider Lua 5.4 Supported:tm:Kim Alvefur2021-11-281-1/+1
| | | | | I have been running my own server exclusively on Lua 5.4 for months and apart from packaging issues I remember on major issues.
* util.prosodyctl.check: Support direct TLS connectivity checksKim Alvefur2021-11-281-0/+6
| | | | | | Currently only supported with OJN Assumption: the direct_tls_ports are not empty when set.
* doap: Remove stray ... is that a tab or a space?Kim Alvefur2021-11-281-1/+1
|
* doap: Fill in the mandatory 'status' field everywhereKim Alvefur2021-11-281-2/+59
| | | | Some of these may be debatable, investigation and patches welcome.
* mod_admin_shell: Remove now redundant promise awaiting in dns:lookup()Kim Alvefur2021-11-271-6/+1
|
* mod_admin_shell: Remove now redundant promise awaiting in xmpp:ping()Kim Alvefur2021-11-271-6/+3
|
* mod_smacks: Remove left-over debug loggingKim Alvefur2021-11-271-1/+0
| | | | | Wrong level, missing argument, whatever it was meant to shed light on has been resolved and forgotten.
* util.promise: Fix testKim Alvefur2021-11-261-1/+1
| | | | | Could not reproduce locally but it complained in CI that > spec/util_promise_spec.lua:676: Cannot spy on type 'nil', only on functions or callable elements
* mod_admin_shell: Fix indentationKim Alvefur2021-11-261-13/+13
| | | | It was all of for some reason
* mod_admin_shell: Wait for promisesKim Alvefur2021-11-261-0/+5
| | | | I've typed `>require"util.async".wait_for(...)` for the last time!
* util.startup: Integrate util.promise with net.server main loopKim Alvefur2019-01-051-0/+8
|
* util.promise: Support delayed promise executionKim Alvefur2019-01-052-5/+26
|
* mod_admin_shell: Reduce width of 'Status' columnKim Alvefur2021-11-261-3/+3
| | | | | 'unavailable' was the longest possibility, dropping it probably differentiates available from unavailable more, in less space.
* mod_admin_shell: Reduce width of 'Security' column (thanks Link Mauve)Kim Alvefur2021-11-261-3/+3
| | | | Tricky to represent "secure, but no details" in short enough space.
* mod_vcard_legacy: Also respect avatar:metadata access restrictionsEmmanuel Gil Peyrot2021-11-251-1/+1
| | | | | Zash notes this seems to have been lost in 1b657605ea29, probably by mistake.
* mod_admin_shell: Fix showing default HTTP path in module:infoKim Alvefur2021-11-251-1/+1
| | | | Thanks mod_http_openmetrics
* mod_http_openmetrics: Serve HTTP from global contextKim Alvefur2021-11-251-9/+7
| | | | | | | | | | | | Makes GET /metrics work regardless of the value of the Host header. This was not possible before 220468f7a103 which added the ability to have global HTTP modules, which was partly why the per-host part was kept while the module lived among the community modules. Another reason was to provide some semblance of security by obscurity by only loading the module on e.g. a 'localhost' VirtualHost or Component. The new IP limits obsoletes this.
* teal: Describe the module API interfaceKim Alvefur2021-03-241-0/+145
| | | | Helps when writing modules in Teal
* util.prosodyctl.check: Add mod_http_openmetrics settings to known globalsKim Alvefur2021-11-251-0/+2
|
* CHANGES: Mention mod_http_openmetricsKim Alvefur2021-11-241-0/+1
|
* mod_smacks: Optimize scheduling of ack requestsKim Alvefur2021-11-241-1/+2
| | | | | | Taking advantage of the new callbacks added in dcf38ac6a38c and 9c450185bac1 avoids extra timers, extra syscalls and sending the `<r>` in its own TCP segment, improving efficiency.
* mod_smacks: Refactor ack requesting to avoid some timer roundtripsKim Alvefur2021-11-241-56/+62
| | | | | | | | | | The function was too large to comprehend! Breaking it up helps readability and reuse. The timer round rip is only to avoid ordering weirdness when sending from inside a stanza filter. No need when handling <r> and <a> CSI interactions both boiled down to sending an <r> immediately.
* mod_smacks: Fix timer lifetimes to follow session instead of moduleKim Alvefur2021-11-241-8/+12
| | | | | | | module:add_timer() creates a timer that stops working after the module is reloaded or unloaded, in order to prevent leaks. However, when the timers control vital session behavior, breakage occurs after reload. E.g. sessions would stop requesting acks and stop responding to acks.