aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* util.helpers: when logging events, log individual handler callsMatthew Wild2020-09-031-0/+15
|
* util.events: Add set_debug_hook() methodMatthew Wild2020-09-032-1/+57
| | | | | | Hook signature: ret = debug_hook(handler, event_name, event_data)
* MUC: Don't default room name to JID localpart (API breaking change)Kim Alvefur2020-08-292-6/+14
| | | | | | | | | | | | | Behavior with turning empty name into localpart was originally introduced in 711eb5bf94b4 This has caused some problems for clients, making it difficult to differentiate between a room actually named like the localpart from a room without a name. Breaking: The function signature of the :get_name() method changes from always returning a string to optional string.
* util.jid: Fix special escaping of '\' per XEP-0106Kim Alvefur2020-08-281-2/+6
| | | | | | | | | | | | From XEP-0106 §2. Requirements: > in certain circumstances, the escaping character itself ("\") might > also be escaped Later in §4.2 Address Transformation Algorithm it is stated that the backslash would only be escaped if it forms an escape sequence. Thus '\foo' is unaltered but '\20' must be escaped into '\5c20'. Thanks to lovetox and jonas’ for brining up.
* util.jid: Add test coverage for XEP-0106: JID Escaping functionsKim Alvefur2020-08-281-0/+50
|
* util.error: Add a wrapper for common parametersKim Alvefur2020-08-281-0/+7
| | | | Lets you set up source and registry once per module
* util.error: Add a 'source' parameter where origin module can be mentionedKim Alvefur2020-08-281-1/+2
|
* util.startup: Init util.error with defaults if none givenMatthew Wild2020-08-281-1/+1
|
* util.error: Add configuration for including traceback in tostring()Matthew Wild2020-08-281-2/+12
|
* util.error: Allow optional tracebacks to be injected on errorsMatthew Wild2020-08-282-0/+21
| | | | This allows extra debug info to be provided for development purposes.
* net.http: http.request() promise now resolves with response (breaking change)Matthew Wild2020-08-251-1/+2
| | | | | | | Promise mode is not (widely?) used, changing this now while we can, as it improves usability of the API. The request is now available as response.request, if needed.
* net.http: use new net.http.errors lib for creating error objectMatthew Wild2020-08-251-2/+2
|
* mod_posix: Remove ancient undocumented user switchingKim Alvefur2020-08-241-31/+4
| | | | | | | | | | | | | | User switching has been done by prosodyctl or init scripts for a very long time now, so this is not needed. Using this would not have worked with module reloading (e.g. to reload certificates) since ports are closed and re-bound, which would then not be allowed. Today there exists better ways to grant low ports, i.e. capabilities(7) <Zash> Why do we have this? <MattJ> Remove it
* util.dbuffer: Simplify test caseKim Alvefur2020-08-241-3/+2
| | | | | | | | | An earlier theory involved the bug being related to collapsing multiple items, so it exercised that too. Also correct the comment, it referred to the space in "hello world" in an earlier version before the test string was changed to "foobar", which was what was tested in a REPL
* util.dbuffer: Fix :sub() not working with partially-consumed chunks (thanks ↵Matthew Wild2020-08-242-2/+2
| | | | | | Zash for test case) This also appears to fix some bugs with chunk-encoded streams in net.http.parser.
* util.dbuffer: Add failing test case involving :sub after :discardKim Alvefur2020-08-241-0/+9
|
* net.server_select: Fix traceback (thanks eta)Kim Alvefur2020-08-231-1/+1
| | | | | | The `socket` here is unreferenced on disconnect. Calling :resume_writes after that causes an error when `addsocket()` tries to use it as a table index.
* mod_admin_shell: Report CSI queue length from mod_csi_simpleKim Alvefur2020-08-221-1/+5
|
* mod_admin_shell: Report CSI state in c2s:show()Kim Alvefur2020-08-221-0/+3
|
* mod_external_services: Validate services added via eventsKim Alvefur2020-08-171-0/+14
| | | | | | | | | | | | While writing developer documentation it became obvious that i was silly to have one item format for config and items API, and another format for the event API. Then there's the stanza format, but that's a common pattern. This change reduces the possible input formats to two and allows other modules the benefit of the processing and validation performed on items from the config.
* mod_external_services: Allow specifying a credential generation callbackKim Alvefur2020-07-251-1/+1
| | | | | This is especially targeted at services added via the items API. More involved credential generation should use the event hook.
* mod_external_services: Prepare to allow more credential algorithmsKim Alvefur2020-07-251-13/+25
| | | | | | Not sure what algorithms might fit here. Separation makes some sense. This is also a preparation for having a callback. (See next commit)
* mod_external_services: Support adding services via items APIKim Alvefur2020-07-251-2/+4
|
* mod_external_services: XEP-0215: External Service DiscoveryKim Alvefur2020-07-185-0/+284
|
* mod_component: Return extended error condition when not connectedKim Alvefur2020-04-131-1/+2
| | | | This might be something to write a XEP about.
* mod_component: Reply with a different error when not connectedKim Alvefur2020-04-131-1/+1
| | | | | | | | | The wait, service-unavailable is overloaded by XEP-0045 to mean that the room has reached the maximum number of users. See #1495. Bouncing errors for components is tricky since there is no way to tell that it comes from the server hosting the component, not from the other end of the component connection.
* net.http.parser: Allow configuration of the chunk size fed to the parserMatthew Wild2020-08-211-1/+3
|
* net.http.parser: Switch tests so that CRLF conversion of input data is optionalMatthew Wild2020-08-211-7/+10
|
* net.http.parser: Fix incorrect path in testMatthew Wild2020-08-211-1/+1
|
* net.http.parser: Add failing test for (large?) chunk-encoded responsesMatthew Wild2020-08-212-0/+27
|
* net.http.parser: Fix indentationKim Alvefur2020-08-201-2/+2
| | | | | Probably due to a rebase/merge with a merge tool that ignores whitespace. Happens all the time to me :(
* util.dbuffer: Fix traceback when :collapse() is called on empty bufferMatthew Wild2020-08-202-1/+13
|
* util.dataforms: Add more XEP-0211 media element test coverageKim Alvefur2020-08-161-0/+28
|
* util.dataforms: Convert media element sizes to avoid error on Lua 5.3Kim Alvefur2020-08-162-1/+16
| | | | | | | | The stanza API does not accept number values and threw an error due to the height and width attributes of the media element (XEP-0221). This part had no test coverage previously, explaining why it was not discovered until now.
* net.http.errors: Add new module for converting net.http errors to util.error ↵Matthew Wild2020-08-131-0/+115
| | | | objects
* mod_net_multiplex: Set read size/mode to that of the target listenerKim Alvefur2020-08-021-0/+3
| | | | | Otherwise it would use the configured buffer size, or previously '*a'. Using the read size set by the listener seems more sensible.
* mod_net_multiplex: Read no more than the max buffer size settingKim Alvefur2020-08-021-1/+1
| | | | | Otherwise the '*a' read mode applies, which under certain circumstances can read infinite amounts of data into memory.
* mod_http: Add way to signal that a module supports streaming uploadsKim Alvefur2020-08-011-1/+3
| | | | | | | | | | | | | | | | Fixes #726 API: module:provides("http", { streaming_uploads = true; route = { PUT = function (event) event.request.body_sink = io.tmpfile(); return true; end } })
* net.http.parser: Allow specifying sink for large request bodiesKim Alvefur2020-08-013-7/+36
| | | | | | | This enables uses such as saving uploaded files directly to a file on disk or streaming parsing of payloads. See #726
* net.http.parser: Switch to util.dbuffer for buffering incoming dataKim Alvefur2020-08-011-61/+49
| | | | | | This is primarily a step towards saving uploads directly to files, tho this should hopefully be more efficient than collapsing the entire buffer to a single string every now and then.
* Merge 0.11->trunkKim Alvefur2020-08-080-0/+0
|\
| * mod_s2s: Escape invalid XML in loggin (same way as mod_c2s) fix #15740.11.6Kim Alvefur2020-08-011-2/+1
| |
* | Merge 0.11->trunkMatthew Wild2020-08-081-0/+12
|\|
| * net.http: Add request:cancel() methodMatthew Wild2020-08-081-0/+11
| | | | | | | | | | | | | | | | | | | | This is a new API that should be used in preference to http.destroy_request() when possible, as it ensures the callback is always called (with an error of course). APIs that have edge-cases where they don't call callbacks have, from experience, shown to be difficult to work with and often lead to unintentional leaks when the callback was expected to free up certain resources.
| * net.http: Re-expose destroy_request() functionMatthew Wild2020-08-081-0/+1
| | | | | | | | | | This was accidentally turned private in 647adfd8f738 as part of refactoring for Lua 5.2+.
* | net.server_epoll: Log debug message when a connection errors on readKim Alvefur2020-07-251-0/+5
| | | | | | | | | | | | It's confusingly quiet otherwise, even with maximum verboseness. Thanks perflyst
* | mod_register: Add a dependency on mod_watchregistrationsEmmanuel Gil Peyrot2020-06-291-0/+1
| | | | | | | | | | Spammers are a big hassle, hopefully this will make admins aware of them sooner than when they’ve already spammed a bunch.
* | mod_proxy65: Limit dump of invalid data to 300 bytes (like mod_c2s)Kim Alvefur2020-07-171-2/+2
| |
* | mod_proxy65: Log invalid greetings escaped instead of as base64Kim Alvefur2020-07-161-3/+2
| | | | | | | | | | Makes it easier to see human-readable parts and thus identifying the garbage. Also consistent with mod_c2s and others.
* | mod_server_contact_info: Add status-addresses fieldKim Alvefur2020-05-274-1/+6
| | | | | | | | XEP-0157 version 1.1.0