prosody.git
11 years agomod_admin_telnet: Don't rely on getpeerchain returning an empty list
Kim Alvefur [Sat, 18 May 2013 11:11:44 +0000 (13:11 +0200)]
mod_admin_telnet: Don't rely on getpeerchain returning an empty list

11 years agomod_s2s: Fix interaction between s2s_secure_auth and s2s_require_encryption, in parti...
Matthew Wild [Sat, 18 May 2013 11:02:25 +0000 (12:02 +0100)]
mod_s2s: Fix interaction between s2s_secure_auth and s2s_require_encryption, in particular ensure that when s2s_require_encryption is NOT set, do not require encryption on s2s_insecure_domains.

11 years agomod_muc: Fire muc-room-created and muc-room-destroyed events (thanks nik)
Matthew Wild [Tue, 14 May 2013 08:38:54 +0000 (09:38 +0100)]
mod_muc: Fire muc-room-created and muc-room-destroyed events (thanks nik)

11 years agoutil.hashes: inttypes.h not available with MS Windows SDK, use MS specific __int32...
Waqas Hussain [Mon, 13 May 2013 19:52:01 +0000 (15:52 -0400)]
util.hashes: inttypes.h not available with MS Windows SDK, use MS specific __int32 instead.

11 years agoprosody.cfg.lua.dist: Fix my s2s_secure(_auth) mess
Matthew Wild [Sat, 11 May 2013 12:54:02 +0000 (13:54 +0100)]
prosody.cfg.lua.dist: Fix my s2s_secure(_auth) mess

11 years agomod_c2s: Fix session:close() when a stanza is passed as reason
Kim Alvefur [Fri, 10 May 2013 20:29:03 +0000 (22:29 +0200)]
mod_c2s: Fix session:close() when a stanza is passed as reason

11 years agomod_pubsub: Remove nodeid check added in 989acb4ad1de that wasn't needed
Kim Alvefur [Thu, 9 May 2013 09:13:18 +0000 (11:13 +0200)]
mod_pubsub: Remove nodeid check added in 989acb4ad1de that wasn't needed

11 years agomod_admin_telnet: Add some DNS commands.
Kim Alvefur [Tue, 7 May 2013 15:17:32 +0000 (17:17 +0200)]
mod_admin_telnet: Add some DNS commands.

11 years agonet.dns: Add nicer API to cached records
Kim Alvefur [Tue, 7 May 2013 14:51:25 +0000 (16:51 +0200)]
net.dns: Add nicer API to cached records

11 years agoutil.json: New, faster, stricter, more compliant JSON decoder. Now returns nil,err...
Waqas Hussain [Tue, 7 May 2013 14:42:44 +0000 (10:42 -0400)]
util.json: New, faster, stricter, more compliant JSON decoder. Now returns nil,err instead of throwing errors on invalid input.

11 years agoutil.array: Wrap tostring() output in {} (otherwise empty arrays print as "").
Waqas Hussain [Tue, 7 May 2013 14:41:03 +0000 (10:41 -0400)]
util.array: Wrap tostring() output in {} (otherwise empty arrays print as "").

11 years agoutil.json: Make setmetatable local.
Waqas Hussain [Mon, 6 May 2013 23:43:59 +0000 (19:43 -0400)]
util.json: Make setmetatable local.

11 years agoutil.json: Fix variable name typo which broke util.json when util.array was missing.
Waqas Hussain [Mon, 6 May 2013 23:42:54 +0000 (19:42 -0400)]
util.json: Fix variable name typo which broke util.json when util.array was missing.

11 years agoutil.json: Optimize long string parsing.
Waqas Hussain [Sun, 5 May 2013 19:02:33 +0000 (15:02 -0400)]
util.json: Optimize long string parsing.

11 years agoMerge with Florob
Matthew Wild [Wed, 1 May 2013 12:45:05 +0000 (13:45 +0100)]
Merge with Florob

11 years agoutil.rfc{3484,6724}: Update to RFC 6724
Florian Zeitz [Tue, 30 Apr 2013 16:34:03 +0000 (18:34 +0200)]
util.rfc{3484,6724}: Update to RFC 6724

11 years agoportmanager: Also include the interface the service is listening on
Kim Alvefur [Mon, 29 Apr 2013 17:40:39 +0000 (19:40 +0200)]
portmanager: Also include the interface the service is listening on

11 years agoportmanager: Include port numbers the service is listening on in the info logs.
Waqas Hussain [Mon, 29 Apr 2013 17:03:17 +0000 (22:03 +0500)]
portmanager: Include port numbers the service is listening on in the info logs.

11 years agonet.server_select: Don't limit max file descriptor number on Windows.
Waqas Hussain [Mon, 29 Apr 2013 15:26:48 +0000 (20:26 +0500)]
net.server_select: Don't limit max file descriptor number on Windows.

11 years agoprosodyctl: Guess the country from the TLD for the cert config
Kim Alvefur [Mon, 29 Apr 2013 12:01:19 +0000 (14:01 +0200)]
prosodyctl: Guess the country from the TLD for the cert config

11 years agoprosodyctl: Ask about the distinguished name in a in a consistent order
Kim Alvefur [Mon, 29 Apr 2013 12:00:44 +0000 (14:00 +0200)]
prosodyctl: Ask about the distinguished name in a in a consistent order

11 years agoprosodyctl: Add message describing the distinguished name input expected
Kim Alvefur [Mon, 29 Apr 2013 11:59:39 +0000 (13:59 +0200)]
prosodyctl: Add message describing the distinguished name input expected

11 years agoutil.openssl: Write the distinguished_name part of the config in a consistent order
Kim Alvefur [Mon, 29 Apr 2013 11:30:59 +0000 (13:30 +0200)]
util.openssl: Write the distinguished_name part of the config in a consistent order

11 years agoMUC: Allow actor == true to set roles (like affiliations)
Matthew Wild [Mon, 29 Apr 2013 10:25:12 +0000 (11:25 +0100)]
MUC: Allow actor == true to set roles (like affiliations)

11 years agoMUC: Allow plugins to add and handle options in the MUC config form
Matthew Wild [Mon, 29 Apr 2013 10:21:37 +0000 (11:21 +0100)]
MUC: Allow plugins to add and handle options in the MUC config form

11 years agoMerge with Florob
Matthew Wild [Mon, 29 Apr 2013 09:52:23 +0000 (10:52 +0100)]
Merge with Florob

11 years agomod_saslauth, mod_compression: Fix some cases where open_stream() was not being passe...
Matthew Wild [Mon, 29 Apr 2013 09:43:44 +0000 (10:43 +0100)]
mod_saslauth, mod_compression: Fix some cases where open_stream() was not being passed to/from (see df3c78221f26 and issue #338)

11 years agomod_s2s: Ensure that to/from on stream headers are always correct, fixes #338
Matthew Wild [Sun, 28 Apr 2013 23:33:39 +0000 (00:33 +0100)]
mod_s2s: Ensure that to/from on stream headers are always correct, fixes #338

11 years agoprosodyctl: Put keys and certificates in ./certs when in a source checkout
Kim Alvefur [Sun, 28 Apr 2013 14:22:01 +0000 (16:22 +0200)]
prosodyctl: Put keys and certificates in ./certs when in a source checkout

11 years agoutil.hashes, util.sasl.scram: Implement SCRAM-SHA1's Hi in C
Florian Zeitz [Sun, 28 Apr 2013 00:28:42 +0000 (02:28 +0200)]
util.hashes, util.sasl.scram: Implement SCRAM-SHA1's Hi in C

11 years agonet.server*: Allow the TCP backlog parameter to be set in the config
Kim Alvefur [Sat, 27 Apr 2013 20:46:01 +0000 (22:46 +0200)]
net.server*: Allow the TCP backlog parameter to be set in the config

11 years agomoduleapi: in module:provides(), add the name of the module in item._provided_by
Kim Alvefur [Sat, 27 Apr 2013 17:44:37 +0000 (19:44 +0200)]
moduleapi: in module:provides(), add the name of the module in item._provided_by

11 years agomoduleapi: module:provides called without an item makes a copy of the environment...
Kim Alvefur [Sat, 27 Apr 2013 17:14:22 +0000 (19:14 +0200)]
moduleapi: module:provides called without an item makes a copy of the environment instead. Fixes warnings about non-existent globals

11 years agoutil.hmac, util.hashes: Implement HMAC functions in C, and move to util.hashes
Florian Zeitz [Sat, 27 Apr 2013 15:01:31 +0000 (17:01 +0200)]
util.hmac, util.hashes: Implement HMAC functions in C, and move to util.hashes

11 years agomoduleapi: Add module:get_option_inherited_set() to return a set that inherits items...
Matthew Wild [Sat, 27 Apr 2013 13:59:00 +0000 (14:59 +0100)]
moduleapi: Add module:get_option_inherited_set() to return a set that inherits items from a globally set set, if set

11 years agomoduleapi: Add module:context(host) to produce a fake API context for a given host...
Matthew Wild [Sat, 27 Apr 2013 13:57:24 +0000 (14:57 +0100)]
moduleapi: Add module:context(host) to produce a fake API context for a given host (or global). module:context("*"):get_option("foo") to get global options.

11 years agoutil.prosodyctl: Initialize storagemanager on the host before initializing usermanage...
Matthew Wild [Sat, 27 Apr 2013 12:11:03 +0000 (13:11 +0100)]
util.prosodyctl: Initialize storagemanager on the host before initializing usermanager. This fixes brokenness when the auth provider opens the store on load (as they all do since eeea0eb2602a) (thanks nulani)

11 years agomod_s2s: Obey tcp_keepalives option for s2s too, and make it individually configurabl...
Matthew Wild [Fri, 26 Apr 2013 11:25:25 +0000 (12:25 +0100)]
mod_s2s: Obey tcp_keepalives option for s2s too, and make it individually configurable through s2s_tcp_keepalives (thanks yeled)

11 years agomod_admin_telnet: Add muc:create(room) (thanks SkyBlue)
Matthew Wild [Thu, 25 Apr 2013 19:37:20 +0000 (20:37 +0100)]
mod_admin_telnet: Add muc:create(room) (thanks SkyBlue)

11 years agoMUC: add __tostring on room metatable
Matthew Wild [Thu, 25 Apr 2013 19:36:55 +0000 (20:36 +0100)]
MUC: add __tostring on room metatable

11 years agomod_c2s: Refactor <stream:error> building to allways tostring() it and only call...
Kim Alvefur [Thu, 25 Apr 2013 15:50:22 +0000 (17:50 +0200)]
mod_c2s: Refactor <stream:error> building to allways tostring() it and only call send once

11 years agoutil.json: New, improved, fixed codepoint to UTF-8 conversion.
Waqas Hussain [Tue, 23 Apr 2013 19:55:49 +0000 (15:55 -0400)]
util.json: New, improved, fixed codepoint to UTF-8 conversion.

11 years agoutil.json: Make encode(decode("[]"))=="[]".
Waqas Hussain [Tue, 23 Apr 2013 18:41:52 +0000 (14:41 -0400)]
util.json: Make encode(decode("[]"))=="[]".

11 years agomod_admin_adhoc: Use util.adhoc
Florian Zeitz [Tue, 23 Apr 2013 12:49:48 +0000 (14:49 +0200)]
mod_admin_adhoc: Use util.adhoc

11 years agoutil.adhoc: New util for generating common adhoc handler patterns
Florian Zeitz [Tue, 23 Apr 2013 12:49:31 +0000 (14:49 +0200)]
util.adhoc: New util for generating common adhoc handler patterns

11 years agoMerge
Matthew Wild [Tue, 23 Apr 2013 14:14:22 +0000 (15:14 +0100)]
Merge

11 years agomod_auth_internal_plain: Don't log passwords, even at debug level
Matthew Wild [Tue, 23 Apr 2013 14:13:51 +0000 (15:13 +0100)]
mod_auth_internal_plain: Don't log passwords, even at debug level

11 years agomod_c2s, mod_s2s, net.http, net.http.server: Improve tracebacks (omit traceback funct...
Matthew Wild [Mon, 22 Apr 2013 11:35:52 +0000 (12:35 +0100)]
mod_c2s, mod_s2s, net.http, net.http.server: Improve tracebacks (omit traceback function), to make it clearer where an error occured

11 years agomod_c2s, mod_s2s, net.http, net.http.server: Improve tracebacks (omit traceback funct...
Matthew Wild [Mon, 22 Apr 2013 11:35:52 +0000 (12:35 +0100)]
mod_c2s, mod_s2s, net.http, net.http.server: Improve tracebacks (omit traceback function), to make it clearer where an error occured

11 years agonet.server.http: Add a comment
Matthew Wild [Mon, 22 Apr 2013 11:25:00 +0000 (12:25 +0100)]
net.server.http: Add a comment

11 years agonet.server.http: Add a comment
Matthew Wild [Mon, 22 Apr 2013 11:25:00 +0000 (12:25 +0100)]
net.server.http: Add a comment

11 years agonet.server.http: Ensure that event map cannot grow forever (limit to 10K wildcard...
Matthew Wild [Mon, 22 Apr 2013 11:24:42 +0000 (12:24 +0100)]
net.server.http: Ensure that event map cannot grow forever (limit to 10K wildcard-only entries)

11 years agonet.server.http: Ensure that event map cannot grow forever (limit to 10K wildcard...
Matthew Wild [Mon, 22 Apr 2013 11:24:42 +0000 (12:24 +0100)]
net.server.http: Ensure that event map cannot grow forever (limit to 10K wildcard-only entries)

11 years agostoragemanager: Fix traceback in logging when store type is nil, and store is unsuppo...
Waqas Hussain [Mon, 22 Apr 2013 15:54:15 +0000 (11:54 -0400)]
storagemanager: Fix traceback in logging when store type is nil, and store is unsupported.

11 years agomod_auth_internal_hashed, mod_auth_internal_plain, mod_privacy, mod_private, mod_regi...
Kim Alvefur [Fri, 19 Apr 2013 14:14:06 +0000 (16:14 +0200)]
mod_auth_internal_hashed, mod_auth_internal_plain, mod_privacy, mod_private, mod_register, mod_vcard, mod_muc: Use module:open_store()

11 years agomoduleapi: Make module:open_store() open a store named after the calling module by...
Kim Alvefur [Fri, 19 Apr 2013 12:42:32 +0000 (14:42 +0200)]
moduleapi: Make module:open_store() open a store named after the calling module by default

11 years agomoduleapi: Add module:open_store() as a front-end to storagemanager.open()
Matthew Wild [Fri, 19 Apr 2013 12:29:47 +0000 (13:29 +0100)]
moduleapi: Add module:open_store() as a front-end to storagemanager.open()

11 years agomod_storage_sql2 (temporary name), sql.lib, util.sql: New SQL API supporting cross...
Matthew Wild [Thu, 18 Apr 2013 10:13:40 +0000 (11:13 +0100)]
mod_storage_sql2 (temporary name), sql.lib, util.sql: New SQL API supporting cross-module connection sharing, transactions and Things - a work in progress

11 years agonet.server_select: Don't call onconnect twice for SSL connections
Matthew Wild [Wed, 17 Apr 2013 23:41:03 +0000 (00:41 +0100)]
net.server_select: Don't call onconnect twice for SSL connections

11 years agoMerge backout
Matthew Wild [Wed, 17 Apr 2013 23:40:09 +0000 (00:40 +0100)]
Merge backout

11 years agoBacked out changeset f2631a14b953
Matthew Wild [Wed, 17 Apr 2013 23:39:59 +0000 (00:39 +0100)]
Backed out changeset f2631a14b953

11 years agonet.http: When HTTP request fails due to a network or SSL error, call the callback...
Matthew Wild [Wed, 17 Apr 2013 23:08:58 +0000 (00:08 +0100)]
net.http: When HTTP request fails due to a network or SSL error, call the callback to let it know

11 years agonet.http.server: The correct Connection header value to look for is Keep-Alive, not...
Waqas Hussain [Wed, 17 Apr 2013 19:28:20 +0000 (15:28 -0400)]
net.http.server: The correct Connection header value to look for is Keep-Alive, not keep-alive.

11 years agonet.server_select: Don't call onconnect twice on SSL connections
Kim Alvefur [Wed, 17 Apr 2013 17:10:04 +0000 (19:10 +0200)]
net.server_select: Don't call onconnect twice on SSL connections

11 years agomod_pubsub: Only assign id to item element if there is one
Matthew Wild [Wed, 17 Apr 2013 13:32:26 +0000 (14:32 +0100)]
mod_pubsub: Only assign id to item element if there is one

11 years agomod_pubsub: Add id to stored item when auto-generated. Fixes #335
Matthew Wild [Wed, 17 Apr 2013 13:12:47 +0000 (14:12 +0100)]
mod_pubsub: Add id to stored item when auto-generated. Fixes #335

11 years agonet.server_select: Add and improve some comments.
Waqas Hussain [Tue, 16 Apr 2013 22:18:22 +0000 (18:18 -0400)]
net.server_select: Add and improve some comments.

11 years agonet.server_select: Move socket timeout cleanup code out of a timer, into the select...
Waqas Hussain [Tue, 16 Apr 2013 22:15:10 +0000 (18:15 -0400)]
net.server_select: Move socket timeout cleanup code out of a timer, into the select loop (which makes util.timer the only timer using server_select._addtimer).

11 years agonet.server_select: Normalize indentation
Kim Alvefur [Wed, 17 Apr 2013 19:30:44 +0000 (21:30 +0200)]
net.server_select: Normalize indentation

11 years agonet.http.parser: Remove accidentally-committed debugging
Matthew Wild [Mon, 15 Apr 2013 20:25:59 +0000 (21:25 +0100)]
net.http.parser: Remove accidentally-committed debugging

11 years agonet.http.parser: Fix off-by-one error in chunked encoding parser
Matthew Wild [Mon, 15 Apr 2013 20:21:57 +0000 (21:21 +0100)]
net.http.parser: Fix off-by-one error in chunked encoding parser

11 years agomod_s2s: Add missing space
Kim Alvefur [Mon, 15 Apr 2013 17:37:15 +0000 (19:37 +0200)]
mod_s2s: Add missing space

11 years agoMakefile: Specify explicit mode when installing prosody.version, to avoid it defaulti...
Matthew Wild [Mon, 15 Apr 2013 11:30:40 +0000 (12:30 +0100)]
Makefile: Specify explicit mode when installing prosody.version, to avoid it defaulting to something nasty (executable)

11 years agoutil.http: Refactor and import all necessary functions
Matthew Wild [Fri, 12 Apr 2013 19:26:35 +0000 (20:26 +0100)]
util.http: Refactor and import all necessary functions

11 years agoprosodyctl: Bump util.pposix version for API change
Kim Alvefur [Tue, 9 Apr 2013 13:50:46 +0000 (15:50 +0200)]
prosodyctl: Bump util.pposix version for API change

11 years agoutil.iterators: Add ripairs() (ipairs() in reverse) (thanks Maranda)
Matthew Wild [Thu, 11 Apr 2013 23:44:49 +0000 (00:44 +0100)]
util.iterators: Add ripairs() (ipairs() in reverse) (thanks Maranda)

11 years agonet.http: Swap response and request parameters passed to callback (will break some...
Matthew Wild [Thu, 11 Apr 2013 23:31:05 +0000 (00:31 +0100)]
net.http: Swap response and request parameters passed to callback (will break some modules)

11 years agoutil.httpstream: Unused, remove
Matthew Wild [Thu, 11 Apr 2013 20:55:20 +0000 (21:55 +0100)]
util.httpstream: Unused, remove

11 years agonet.http: Switch from util.httpstream to net.http.parser, introduces small but backwa...
Matthew Wild [Thu, 11 Apr 2013 19:24:37 +0000 (20:24 +0100)]
net.http: Switch from util.httpstream to net.http.parser, introduces small but backwards-incompatible API changes - see prosody.im/doc/developers/http

11 years agonet.http.parser: Fix chunked encoding response parsing, and make it more robust
Matthew Wild [Thu, 11 Apr 2013 19:01:03 +0000 (20:01 +0100)]
net.http.parser: Fix chunked encoding response parsing, and make it more robust

11 years agonet.http.parser: Convert status_code to a number before trying to compare it to numbers
Matthew Wild [Thu, 11 Apr 2013 18:58:53 +0000 (19:58 +0100)]
net.http.parser: Convert status_code to a number before trying to compare it to numbers

11 years agonet.http.parser: Break when no more usable data in buffer (client part of e5ec60dfb202)
Matthew Wild [Thu, 11 Apr 2013 16:39:10 +0000 (17:39 +0100)]
net.http.parser: Break when no more usable data in buffer (client part of e5ec60dfb202)

11 years agonet.http.parser: Depend on util.http instead of net.http for urlencode
Matthew Wild [Thu, 11 Apr 2013 16:37:37 +0000 (17:37 +0100)]
net.http.parser: Depend on util.http instead of net.http for urlencode

11 years agosessionmanager, s2smanager: Remove unused imports
Matthew Wild [Thu, 11 Apr 2013 16:35:39 +0000 (17:35 +0100)]
sessionmanager, s2smanager: Remove unused imports

11 years agonet.http, util.http: Move definitions of urlencode/decode and formencode/decode to...
Matthew Wild [Thu, 11 Apr 2013 16:32:59 +0000 (17:32 +0100)]
net.http, util.http: Move definitions of urlencode/decode and formencode/decode to util.http (possible to use them without unnecessary network-related dependencies)

11 years agomod_s2s: Adjust priority of route/remote hooks to negative values (like most other...
Kim Alvefur [Mon, 8 Apr 2013 20:42:38 +0000 (22:42 +0200)]
mod_s2s: Adjust priority of route/remote hooks to negative values (like most other internal hooks)

11 years agomod_posix: Improve error message for a pposix version mismatch
Matthew Wild [Mon, 8 Apr 2013 16:21:16 +0000 (17:21 +0100)]
mod_posix: Improve error message for a pposix version mismatch

11 years agomod_posix, util.pposix: Bump version for API change
Matthew Wild [Mon, 8 Apr 2013 15:57:59 +0000 (16:57 +0100)]
mod_posix, util.pposix: Bump version for API change

11 years agomod_posix: Pass logger name to syslog, so that sources now get logged
Matthew Wild [Mon, 8 Apr 2013 15:57:05 +0000 (16:57 +0100)]
mod_posix: Pass logger name to syslog, so that sources now get logged

11 years agoutil.pposix: syslog(): Support an optional source parameter (producing messages of...
Matthew Wild [Mon, 8 Apr 2013 15:56:40 +0000 (16:56 +0100)]
util.pposix: syslog(): Support an optional source parameter (producing messages of the form '<source>: <message>'

11 years agonet.http: Throw error when connecting to a http:// URL without LuaSec available
Matthew Wild [Mon, 8 Apr 2013 15:40:27 +0000 (16:40 +0100)]
net.http: Throw error when connecting to a  URL without LuaSec available

11 years agosessionmanager, s2smanager: Remove open_session tracing
Matthew Wild [Mon, 8 Apr 2013 14:53:18 +0000 (15:53 +0100)]
sessionmanager, s2smanager: Remove open_session tracing

11 years agomod_pubsub: Send bad-request when no action specified (thanks Maranda)
Matthew Wild [Mon, 8 Apr 2013 14:32:24 +0000 (15:32 +0100)]
mod_pubsub: Send bad-request when no action specified (thanks Maranda)

11 years agomod_pubsub: Don't attempt to handle iq stanzas with no action element
Matthew Wild [Mon, 8 Apr 2013 14:04:55 +0000 (15:04 +0100)]
mod_pubsub: Don't attempt to handle iq stanzas with no action element

11 years agoutil.datamanager: Clear the cache of created directories on storage failure, and...
Matthew Wild [Sun, 7 Apr 2013 19:28:12 +0000 (20:28 +0100)]
util.datamanager: Clear the cache of created directories on storage failure, and retry

11 years agoutil.datamanager: expose path decode and encode functions.
Marco Cirillo [Sun, 7 Apr 2013 16:56:49 +0000 (16:56 +0000)]
util.datamanager: expose path decode and encode functions.

11 years agonet.http.server: add API to allow firing events directly on the server.
Marco Cirillo [Sun, 7 Apr 2013 12:23:29 +0000 (12:23 +0000)]
net.http.server: add API to allow firing events directly on the server.

11 years agoprosodyctl: Define prosody.core_post_stanza as an empty function
Matthew Wild [Sat, 6 Apr 2013 19:07:08 +0000 (20:07 +0100)]
prosodyctl: Define prosody.core_post_stanza as an empty function

11 years agoutil.json: Convert \uXXXX to UTF-8 when decoding
Matthew Wild [Sat, 6 Apr 2013 11:20:31 +0000 (12:20 +0100)]
util.json: Convert \uXXXX to UTF-8 when decoding

11 years agoutil.stanza: Use correct index when replacing the tag in .tags (thanks daurnimator)
Matthew Wild [Fri, 5 Apr 2013 18:59:48 +0000 (19:59 +0100)]
util.stanza: Use correct index when replacing the tag in .tags (thanks daurnimator)