aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* MUC: Use fully qualified importHEADorigin/mastermasterKim Alvefur10 hours1-1/+1
| | | | | | Seems to be hard to break old habits? Ref #1223
* muc: Update link to XEP-0421 (instead of inbox)Kim Alvefur11 hours1-1/+1
|
* mod_smacks: Run session destruction code in session's async contextMatthew Wild2 days1-7/+11
| | | | | This is the Right Thing and should fix various potential issues and race conditions.
* mod_c2s, mod_s2s: Support for queuing callbacks to run in session threadMatthew Wild2 days2-23/+32
| | | | | | | | | This allows certain session-specific code that needs to run in the async context, but is itself triggered outside of that context (e.g. timers), to be queued. An example of this is the session destruction code of mod_smacks, when the hibernation timeout is reached.
* util.pposix: Add fdopen() to return a Lua file object from an fdMatthew Wild4 days1-0/+32
| | | | Now we can, for example, read/write pipes using Lua's standard I/O routines.
* mod_smacks: Fix previous commit for case of no session foundKim Alvefur5 days1-1/+1
|
* mod_smacks: Prevent traceback on attempting to resume destroyed sessionKim Alvefur5 days1-0/+5
| | | | | This shouldn't be possible, but seems to happen anyway after net.server somehow calling the close handler twice, which also should not happen.
* net.server_epoll: Don't try to flush buffer on closed connectionsKim Alvefur5 days1-1/+2
| | | | | | | | | Attempt to fix a bug where connections are somehow closed twice, leading to bad things happening elsewhere. With LuaSec, closed connections are generally already too closed to write anything to anyway since it does not support unidirectional shutdown.
* net.server_epoll: Revert opportunistic_writes tweakKim Alvefur5 days1-3/+0
| | | | Added in f0b2c026e542 and not sure why
* util.stanza: Handle Clark notation for attributes in :find()Kim Alvefur7 days2-0/+4
|
* util.stanza: Handle namespace prefixes for attributes in :find()Kim Alvefur7 days3-3/+10
| | | | | | More correct handling of namespaces here. This works with both prefixes from the parser and hacky .attr["foo:bar"]
* util.datamanager: fix duplicated word in log messageJonas Schäfer8 days1-1/+1
|
* mod_roster: do not store number in attributeJonas Schäfer8 days1-1/+1
| | | | | | | | | Attributes are strings. That definitely is a number. So we tostring() it. This is important when the API becomes stricter, for whatever reason that might happen. Practically, this moves the overhead of converting to a string to a place where it is visible.
* core.loggingmanager: Bump expected util.pposix versionKim Alvefur8 days1-1/+1
| | | | Otherwise no syslog or console detection
* util.startup: Bump expected util.pposix versionKim Alvefur8 days1-1/+1
| | | | Otherwise Prosody refuses to start.
* util.pposix: Add pipe() (with support for pipe2() flags on Linux)Matthew Wild8 days1-1/+43
|
* mod_admin_shell: Report when a module is already loadedKim Alvefur8 days1-0/+6
| | | | Hopefully less confusing than "Module loaded onto 0 hosts"
* mod_admin_shell: Refactor end of module:loadKim Alvefur8 days1-1/+4
| | | | Meant to improve clarity and make improving easier
* Merge 0.12->trunkMatthew Wild8 days1-6/+4
|\
| * MUC: optimizations for broadcast of visitor presence (thanks Jitsi team)origin/0.120.12Matthew Wild8 days1-6/+4
| | | | | | | | | | This avoids doing performing unnecessary work in the case of visitors joining a MUC, no functionality changes are intended.
* | util.queue: tests: Add test for :replace() methodMatthew Wild12 days1-0/+19
| |
* | mod_s2s: Really fix logging of outgoing stanza queue countsKim Alvefur13 days1-2/+2
| | | | | | | | | | Some confusion happened in 42b98ee73ca8, possibly because .count() returns the items?
* | mod_s2s: Clone queued outgoing stanzas to prevent changesKim Alvefur14 days1-1/+1
| | | | | | | | | | | | | | This clone call was lost in 902d25cd0557 Affects e.g. presence broadcasts, where the same stanza is sent many times while mutating the 'to' attribute.
* | mod_s2s: Fix counting items in outgoing stanza queue (in logs)Kim Alvefur14 days1-2/+2
| |
* | mod_s2s: Limit size of outgoing stanza queueKim Alvefur2024-11-091-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This queue is used to buffer stanzas while waiting for an outgoing s2s connection to be established. Limit it to prevent excessive memory usage. Default chosen to approximate how many average stanzas fits in the server_epoll default max_send_buffer_size of 32 MiB Returns a custom error instead of the default core.stanza_router "Communication with remote domains is not enabled" from is sent back, which does not describe what is happening here. Closes #1106
* | net.server_epoll: Make running out of buffer space a fatal errorKim Alvefur2024-11-091-0/+6
| | | | | | | | | | | | | | Prevent Bad Things from happening when the buffer gets full. This of course opens up the possibility of intentionally killing connections by sending much stuff, which need to be mitigated with rate limits elsewhere.
* | net.server_epoll: Improve efficiency of sending much buffered dataKim Alvefur2024-11-091-34/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: The string slice operations when a lot of data gets buffered ends up being expensive and memory-consuming. We have util.dbuffer for precisely this kind of thing. I want to keep the behavior of writebuffer being upgraded from nil to a string to full buffer since the last step involves three table allocations, where the previous buffer method only used one. Avoiding those allocations for simple writes like white space keep alive feels like it would keep memory churn down. This work was started in 2020
* | mod_pubsub: Pass metadata directly into formKim Alvefur2024-11-081-12/+11
| | | | | | | | | | Reduces duplication and need to edit in two places when adding another metadata field.
* | mod_pubsub: Use new metadata methodKim Alvefur2024-11-082-16/+16
| | | | | | | | | | No longer bypasses access control to retrieve this config subset, which is also explicitly named in the service config now.
* | util.pubsub: Add method returning subset of config as metadataKim Alvefur2024-11-082-0/+29
| | | | | | | | | | | | Allows granting read only access to other sets of users using a separate access control capability, which makes sense as some properties may be intended to be public but read-only.
* | Merge 0.12->trunkMatthew Wild2024-11-081-5/+10
|\|
| * mod_bookmarks: Clarify log messages on failure to sync to modern PEP bookmarksMatthew Wild2024-11-081-2/+2
| | | | | | | | | | | | | | | | | | Previously the error messages said that it failed to "publish" to PEP, but sometimes a sync involves removing items, which can be confusing. The log was also the same for both legacy PEP and private XML bookmarks. Having different log messages makes it easier to debug the cause and location of any sync errors.
| * mod_bookmarks: Suppress error publishing empty legacy bookmarks w/ no PEP nodeMatthew Wild2024-11-081-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It appears that when: 1) The user has no bookmarks 2 node in PEP 2) The client publishes an empty bookmark set to a legacy bookmarks location 3) mod_bookmarks will attempt to purge items from the non-existent node and log an error about the failure (item-not-found). This new code will suppress an item-not-found error from the purge operation in the empty-bookmarks case, and adds a log message for any other error (this is helpful because the existing log message confusingly says it was an error *publishing* to the node, which isn't always accurate).
* | mod_http_file_share: Revert 9c62ffbdf2aeKim Alvefur2024-11-021-2/+2
| | | | | | | | No, that wasn't running in a thread, but in a next tick timer.
* | Merge 0.12->trunkKim Alvefur2024-11-021-5/+7
|\|
| * mod_smacks: Destroy timed out session in async context (fixes #1884)Kim Alvefur2024-11-021-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | Prevents ASYNC-01 due to storage interactions in a timer. Also considered modifying mod_c2s to allow passing arbitrary closures into its runner thread but this seems like a big step away from the current code for just this module. Also considered creating a dedicated runner in mod_smacks, but ensuring continuity across module reloads might be tricky. We could further improve this in the next major version.
* | mod_admin_shell: Reject attempt to add or remove roles for unrelated hostsKim Alvefur2024-11-011-0/+4
| | | | | | | | The three-argument version seems to be a left-over from 0.12
* | mod_authz_internal: Hint at roles for external JIDs being read-onlyKim Alvefur2024-11-011-1/+1
| | | | | | | | | | Roles for JIDs outside the current host are derived from configuration only with this module.
* | mod_admin_shell: Allow assigning roles to arbitrary JIDs when supportedKim Alvefur2024-11-011-1/+5
| | | | | | | | mod_authz_internal does not support this
* | scansion: Remove publisher attribute from bookmarks2 testsKim Alvefur2024-10-311-2/+2
| | | | | | | | | | Seems exposing publisher is not enabled in mod_pep, but then it'll be the user themselves most of the time
* | scansion: Import XEP-0402 test from prosody-modules rev 2c6b14207271Kim Alvefur2024-10-311-0/+181
| | | | | | | | This corresponds to the file mod_bookmarks2/tests/bookmarks2.scs
* | util.crypto: Add more ECC methodsStephen Paul Weber2024-10-292-0/+137
| | | | | | | | | | | | | | pkey_meth_derive: to derive a shared symmetric key from two ECC keys pkey_meth_public_raw: to get the raw form of the public key import_public_ec_raw: to import the raw form of the public key generate_p256_keypair: key generation for the P-256 curve
* | util.pubsub: Fix test to account for not using util.errorKim Alvefur2024-10-291-1/+1
| |
* | mod_pubsub: Move precondition error wrangling out of util.pubsubKim Alvefur2024-10-292-9/+5
| | | | | | | | | | | | | | | | | | Removes dependency on util.error from util.pubsub which was only used for this one special case. Line count reduction! Would be even nicer if templating could be done by util.error itself.
* | util.error: Use is_error() instead of is_err() everywhereKim Alvefur2024-10-293-9/+9
| | | | | | | | Continuation of 4b39691a274e
* | mod_pubsub: Allow passing additional error contextKim Alvefur2024-10-271-4/+4
| | | | | | | | Sometimes it is useful to pass additional information along.
* | mod_pubsub: Use error registryKim Alvefur2024-10-271-10/+5
| | | | | | | | | | | | | | | | | | | | This is what util.error was made for! This replaces the custom error stanza builder with common code in util.stanza that knows enough about util.error and namespaced errors. Some awkwardness remains in the way util.pubsub returns conflicting form fields.
* | doap: Update XEP for mostly editorial changesKim Alvefur2024-10-261-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | XEP-0004: Changes <reported> which is not implemented XEP-0030: A note on some implementations not advertising disco#info XEP-0106: Now references PRECIS which we don't have access to XEP-0107: Editorial fixing of a typo XEP-0133: Removal of 'Get User Password' already done in 21a1b9fb08a1, editorial changes XEP-0153: Editorial changes XEP-0198: Editorial changes and clarifications XEP-0223: Updated security considerations XEP-0292: The difference is that the iq syntax implemented in mod_vcard4 is removed. To become compliant, simply unload this module. XEP-0313: Editorial and minor changes XEP-0398: Advanced to Stable, no other changes XEP-0398: Now mentions the implementation method used in mod_vcard_legacy XEP-0402: Changes only affecting clients XEP-0421: Added requirements we already satisfy XEP-0440: Editorial changes XEP-0478: Editorial changes Due to their size, review of changes to XEP-0045 and XEP-0060 has been left for later.
* | util.dnsregistry: Refresh from IANAKim Alvefur2024-10-261-1/+6
| | | | | | | | For freshness. Not that it matters a lot for Prosody
* | Merge 0.12->trunkKim Alvefur2024-10-261-10/+10
|\|