Skip to content

Latest commit

 

History

History
2511 lines (2025 loc) · 118 KB

CHANGELOG.md

File metadata and controls

2511 lines (2025 loc) · 118 KB

MongooseIM 6.3.2 - 2025-02-24

Highlights

  • Added support for XEP-0484: Fast Authentication Streamlining Tokens
  • Upgraded to exml 4.1.1
  • Deprecated fast_tls
  • Improved just_tls with distinct client and server options
  • Various enhancements and bug fixes

Added

  • Distinction between client and server options for just_tls (#4456)
  • XEP-0484: "Fast Authentication Streamlining Tokens" implementation (#4379)

Changed

  • Updated exml to 4.1.1 (#4465, #4471, #4473)
  • Update dependencies: erl_cloud and base16 (#4469)
  • Deprecated fast_tls for C2S (#4468)
  • Behavior of PEP discovery to closely match the XEP specification (#4475)
  • Migrated GraphiQL to V3 (#4474)
  • Translations are now a service (#4481)
  • Cleaned up empty GraphQL queries (#4482)
  • Updated elvis.config to exclude modules that do not match linter standards (#4483)

Fixed

  • Description of log handler migration (#4454)
  • Compilation warnings (#4462)
  • Certificates generations for CockroarchDB (#4466)
  • probe_failed error (#4440)
  • Wrong namespace when removing IQ handlers in mod_sic (#4484)
  • SCRAM hashing issue by upgrading fast_scram library (#4491)

Other

  • Documentation improvements (#4476, #4487, #4488)
  • CI improvements (#4459)

Known issues and upgrade recommendations

  • If you are using MongooseIM 4.1.0 to 6.3.1 with SCRAM authentication and OpenSSL >=3.4.1, hashes for algorithms stronger than SHA-1 are calculated incorrectly. This issue is fixed in this release. See SCRAM hashing issue for details and required actions.
  • OpenSSL versions below 3.0 are no longer supported. If you are using OpenSSL 1.x or older, you must upgrade to OpenSSL 3.x before updating MongooseIM, as older versions will not work.

Commits, merged PRs and closed issues

Special thanks to our contributors

  • @xvnds Migrated graphiql to v3 (#4474)

MongooseIM 6.3.1 - 2024-12-30

Highlights

  • Better certificate validation
  • Improved CockroachDB support
  • Removed unnecessary components
  • Multiple owner support in MUC Light
  • Packages are now published on GitHub
  • Various improvements and fixes

Added

  • Checking of probe metrics types (#4390)
  • Multiple owner support in MUC Light (#4392)
  • Delays to SM buffer (#4407)
  • Better logging when something takes longer than expected (#4427, #4430)
  • Support open_test_database_shell for CockroachDB (#4438)

Changed

  • Enforced fail_if_no_peer_cert in just_tls for stricter client certificate validation (#4386)
  • Allowed config processor to be a list of functions (#4396)
  • fast_tls to validate CA certificate when verify_mode is set to verify_peer or selfsigned_peer (#4391)
  • Supervisor, listeners, components and types cleanup (#4441)
  • Optimized memory usage in just_tls (#4447)

Fixed

  • MUC room crash when handling old protocol stanza (#4387)
  • CockroachDB consistency (#4402)
  • Shutdown logic to prevent event_not_registered errors by stopping c2s processes before listeners (#4400)
  • Definition of the "protected" GraphQL directive (#4409)
  • GraphQL library is now used as a package (#4405)
  • Package related warning (#4410)
  • IO list handling in jiffy:encode (#4420)
  • Error on startup: "No such file or directory" (#4436)
  • MongooseIM is restarted as a permanent application rather than a temporary one (#4443)

Removed

  • Lager as a dependency (#4393)
  • Goldrush from rebar.lock (#4397)
  • Dead tools and code (#4411)
  • Native code from mam_id (#4412)
  • More complicated dead code (#4422)
  • Base16 library (#4415)

Other

  • Updated dependencies (#4428)
  • Documentation improvements (#4388)
  • CI improvements/fixes (#4403, #4416, #4417, #4435)
  • Streamlined package workflow (#4385, #4399, #4414, #4406, #4425, #4432, #4449)
  • Testing improvements/fixes (#4394, #4398, #4418, #4419, #4401, #4426, #4431, #4423, #4424, #4433, #4437, #4434, #4444, #4445)

Commits, merged PRs and closed issues

MongooseIM 6.3.0 - 2024-10-22

Highlights

  • Improved instrumentation with better configurability, Prometheus support and user-friendly features
  • Docker images are smaller and free of reported vulnerabilities
  • Improved WebSocket's stream management support
  • Erlang 27 compatibility
  • Added support for CockroachDB as a new RDBMS
  • Various improvements and fixes

Added

  • Instrumentation (#4223, #4226)
    • Modules:
      • mod_mam (#4224, #4253, #4265, #4352)
      • mod_muc (#4268)
      • mod_bosh (#4281)
      • mod_csi (#4284)
      • mod_event_pusher (#4285)
      • mod_ping (#4288)
      • mod_global_distrib (#4292)
      • mod_pubsub (#4297)
      • mod_websoctkets (#4299)
    • Hooks (#4289):
      • Privacy (#4298)
      • Authentication (#4301)
      • Session (#4305)
      • C2S (#4310)
      • Roster (#4295)
      • Unified names (#4287)
    • Tests:
      • Unit (#4227)
      • CETS (#4296)
      • Prometheus endpoint (#4335)
      • More specific assertions for events (#4312)
    • async_pools (#4337)
    • mongoose_wpool (#4306)
    • mongoose_backend (#4282)
    • mongoose_user_cache (#4323)
    • Router, S2S and component (#4319)
    • Probes (#4272)
    • Logging support (#4238)
    • Dynamic handlers (#4247)
    • C2S TCP/TLS listener (#4304)
    • Authentication events (#4311)
    • Session management (#4313)
    • Global probes and counters (#4317)
    • Documentation (#4355, #4358, #4360, #4382)
    • Misc (#4228, #4249, #4324, #4368)
  • Erlang doctor utilities (#4264)
  • Error text when message with given ID is not found (#4302)
  • Error IQ when SQL query fails in MAM (#4308)
  • Erlang 27 support (#4334, #4331, #4338, #4348, #4345)
  • CockroachDB support (#4378)

Changed

  • Upgraded CETS to the latest version (#4271)
  • Optimized node cleanup for mod_last (#4274)
  • Upgraded test dependencies (#4275)
  • Moved Exometer reporters config to mongooseim.toml (#4326)
  • Upgraded fast_tls (#4330)
  • Privacy IQs sent to users are treated as regular stanzas (#4361)
  • Renaming c2s_state_timeout option (#4363)
  • Moved docker repository to 'erlangsolutions' organization (#4372)
  • Docker image to the one based on Ubuntu 24.10 (#4375)

Fixed

  • Starting CETS for persistent_cluster_id (#4245)
  • Package building scripts (#4273)
  • S2S DNS discovery (#4278)
  • Timestamps for MUC legacy messages (#4294)
  • Improved stream management support for WebSockets (#4303)
  • GraphQL SSE crash with large stanza payloads (#4364)
  • Double message in MAM bug (#4374)
  • Building docker image locally (#4377)

Removed

  • CentOS support (#4314)
  • geas dependency of GraphQL (#4332)
  • Old mongoose_metrics module (#4353)

Other

  • Documentation improvements (#4266, #4277, #4327, #4341, #4354, #4356, #4376, #4383)
  • Testing improvements/fixes (#4267, #4270, #4279, #4286, #4307, #4315, #4321, #4339, #4342, #4351, #4357, #4362, #4373)
  • CI improvements/fixes (#4276, #4329, #4346, #4350, #4365, #4366, #4367, #4369, #4370)

Commits, merged PRs and closed issues

MongooseIM 6.2.1 - 2024-04-12

Highlights

  • Enhanced CETS
  • Pools configuration
  • Traffic shapers update
  • Support for MAM v1.1.0
  • More reliable testing
  • Various improvements and fixes

All changes

Added

  • RDBMS backend for mod_caps (#4211)
  • Commit hash to GraphQL server status (#4221, #4262)
  • Erlang Doctor debugging tool (#4248)
  • Pools:
    • By host type (#4229)
    • By host config (#4235)
    • Names to mongoose_rdbms (#4231)

Changed

  • Improved shapers (#4187, #4203, #4213)
  • Enhanced discovery requests handling (#4194)
  • User-friendly errors for internal databases in the GraphQL API (#4192)
  • Increase idle_timeout for SSE (#4196)
  • Presence management refactor (#4207)
  • MAM implementation update to version 1.1.0 (#4218, #4225)
  • Roster management refactor (#4209)

Fixed

  • CETS improvements:
    • Pause on all nodes (#4204)
    • Node cleanup (#4234, #4250, #4251)
    • Unnecessary logs removal (#4205)
    • Node discovery (#4255, #4256)
  • MAM lookup error handling (#4191)
  • MUC Light id definition for MariaDB (#4195)
  • max_stanza_size issue (#4197)
  • Duplicate migration files (#4230)
  • Invalid MAM IDs parsing and overflow (#4242)
  • Certificate options verification on HTTPS (#4236)
  • GitHub Actions status badge (#4261)

Other

  • Testing improvements/fixes (#4176, #4202, #4212, #4237, #4239, #4243, #4241, #4246, #4257, #4259, #4260)
  • Update migration guide (#4258)

Commits, merged PRs and closed issues

MongooseIM 6.2.0 - 2023-12-13

Highlights

  • Introduced CETS as an alternative internal database to Mnesia
  • Updated many XEP implementations to the newest version
  • Implemented partial support for XEP-0386: Bind 2 and XEP-0388: Extensible SASL Profile
  • Support for Erlang 26
  • Removed support for Riak
  • Various improvements and fixes

Added

  • CETS
    • CETS backend for session management and stream management (#3629, #4075, #4143)
    • Add GraphQL handler for CETS info (#4015, #4116)
    • RDBMS discovery backend for CETS (#4022, #4042, #4108, #4049, #4165, #4182)
    • CETS backend for mod_bosh (#4050)
    • CETS support for components (#4047)
    • CETS support for S2S (#4046)
    • CETS backend for mod_muc (#4066)
    • CETS backend for mod_jingle_sip (#4076)
    • CETS backend for mongoose_cluster_id (#4136)
    • Add CETS backend for mod_keystore (#4140)
    • Remove mnesia from mod_register (#4146)
    • Anonymous auth supports mnesia and CETS backends (#4148)
    • Custom EPMD module (#4179)
  • Unified XEP list for xmpp.org (#4021, #4024, #4025, #4123)
  • Reporting to Google Analytics 4 (#4040, #4061)
  • Add config option to limit the number of users per domain (#4059)
  • XEP-0386: Bind 2 and XEP-0388: Extensible SASL Profile
    • Extensible SASL Profile (#4101, #4102)
    • Bind 2 (#4113, #4114)
  • Log internal-server-errors in mod_privacy (#4139)

Changed

  • XEP updates
    • Implement XEP-0004: Data Forms in a separate module (#4028, #4031)
    • Update XEP-0016: Privacy Lists (#4038)
    • Update XEP-0030: Service Discovery (#4039)
    • Update XEP-0050: Ad-Hoc Commands (#4043, #4048)
    • Update XEP-0363: HTTP File Upload(#4053)
    • Update attributes for XEP-0178 and add for XEP-0220 (#4057)
    • Update XEP-0045: Multi-User Chat (#4054)
    • Update XEPs: XEP-0082, XEP-0115, XEP-0124, XEP-0157, XEP-0160, XEP-0163, XEP-0199, XEP-0248, XEP-0277 (#4060)
    • Update XEP-0280 (#4083)
    • Update XEP-0060: Publish-Subscribe (#4092)
    • Update XEP-0215: External Service Discovery (#4120)
    • Advertise support for XEP-0249: Direct MUC Invitations (#4168)
  • Upgrade segmented_cache library and its telemetry events (#4041)
  • Improved Metrics initialization (#4070)
  • Initialise domain workers in the supervision tree instead of manually (#4069)
  • Config in one persistent term (#4093)
  • C2S features optimisations (#4094)
  • Patch ejabberd_sm (#4096)
  • Use jid:make_bare/2 instead of jid:make/3 where appropiate (#4109)
  • Unify auth_module and info in c2s_data record (#4110)
  • Simplify specs for ejabberd_sup and let workers terminate (#4117)
  • Raise an error if mnesia:create_table/2 fails (#4138)

Fixed

  • Fix mod_event_pusher:push_event/3 (#3939)
  • Removing incorrect CORS headers (#4006)
  • Fix handling of the undefined host type for stream errors (#4052)
  • Put reporter init after app startup (#4085)
  • Fix slow getaddrs call in global distribution (#4086)
  • C2S fixes (#4095, #4129)
  • Fix invalid username in scram authentication (#4118)
  • Return a proper type from mod_muc:node_cleanup_for_host_type/3 (#4122)
  • Correctly handle the case when TLS is disabled (#4150)
  • Fix error on ping timeout with stream management (#4153)
  • Update epgsql to fix an issue with Erlang/OTP 26 (#4169)
  • mod_muc_light config fix (#4178)
  • Change domain validation logic (#4184)
  • Require 'cacertfile' for just_tls when verify_mode = 'peer' (#4189)

Removed

  • Remove riak (#4035)
  • Remove legacy CLI commands (#4160)

Performance improvements

  • Cache router, filter, and process handlers into funs (#4068)
  • C2S features small optimisation (#4077)
  • Replace erlang:apply with explicit function calls for hooks (#4073)
  • Avoid calling ejabberd_sm_backend:get_sessions/3 second time when routing presences (#4089)
  • Put hooks into persistent_term using batching (#3878)

Other

  • Tests improvements/fixes (#4064, #4072, #4079, #4098, #4099, #4100, #4104, #4103, #4107, #4115, #4137, #4142, #4147, #4155, #4164)
  • Documentation updates (#4030, #4034, #4055, #4087, #4130, #4133, #4181, #4190)
  • CI improvements/fixes (#4023, #4026, #4027, #4029, #4097, #4112, #4149, #4145, #4152, #4166, #4167, #4171)
  • Upgrade exometer_report_graphite (#4134)
  • Support for Erlang 26 (#4121)
  • Rename db and node to mongooseim (#4172)

Commits, merged PRs and closed issues

MongooseIM 6.1.0 - 2023-05-10

Highlights

  • Reworked C2S architecture
  • Docker image for arm64
  • Update of Universal Analytics to Google Analytics 4
  • Dialyzer types fix
  • Deprecation of Riak
  • More reliable test suites
  • Various improvements and fixes

All changes

Added

  • New C2S architecture (#3765)
    • presence (#3746)
    • mod_last (#3750)
    • mod_register (#3751)
    • privacy (#3747)
    • pubsub (#3785)
    • ping (#3748)
    • metrics (#3800)
    • steam_management (#3796)
    • mod_csi (#3880)
    • sasl_external (#3911)
    • More granular hooks (#3852, #3857, #3955)
    • Fixed stream_management timeouts (#3934)
    • Stopped routing broadcast tuples (#3946)
    • Unified metrics (#3967)
    • C2S Migration guide (#3965)
    • Fixed duplicated logout in stream_management (#3983)
    • Adapted existing test suites (#3772, #3778, #3783, #3787, #3786, #3845, #3882, #3909, #3925, #3927, #3932, #3931, #3940)
    • Miscellaneous changes (#3729, #3797, #3790, #3816, #3858, #3888, #3904, #3908, #3917, #3919, #3935, #3950, #3957, #3959, #3972)
  • Added information about GraphQL (#3905)
  • Enable CircleCI tests insights (#3899)
  • Hooks improvement (#3913, #3912)
  • mod_inbox improvements (#3910, #3974, #4016)
  • Checking push form fields (#3916)
  • Checking for MUC domain when archiving messages (#3936)
  • Updated base Docker image (#3943)
  • Implemented mod_pubsub_db without dynamic modules (#3953)
  • Checking the to JID (#3971)
  • Auto registration/unregistration of hooks in gen_mod (#3954)
  • Added port and IP in the listener options for WebSockets and BOSH (#3977)
  • Improved MAM logging (#3984)
  • Added error reason to batch worker termination (#3985)
  • Docker image for arm64 (#3979, #3986, #3988, #4009)
  • Full support for TLS version 1.3 (#3989)
  • Restarting executes in transactions (#3973)
  • GraphQL server status now returns MongooseIM version (#3995)
  • Capability of measuring asynchronous SQL execute requests (#4002)
  • Enabled codecov with the new uploader (#4013)
  • remove_domain for internal auth (#4010)
  • Passing SID into store_info (#4007)

Changed

  • Unified status icons (#4000)
  • Reworked mongoose transport (#3982)
  • Updated dependencies (#3918, #3976, #4017)
  • Updated MySQL schema (#3944)
  • Set cookie to mongooseim (#3930)
  • Moved to Google Analytics 4 (#4011, #4019)

Fixed

  • Issues with GitHub actions (#3992, #4003)
  • Status badges (#3975)
  • Announcing session establishment (#3970)
  • Input for mam errors (#4008)
  • Issue with certificate verification for Google Analytics (#3978)
  • Incremental removal query (#3924)
  • Unknown types in Dialyzer (#3929)
  • Scram invalid xml response (#4020)

Removed

  • Legacy C2S implementation (#3805, #3860)
  • Some of the hooks with no handlers (#3990)
  • Incorrect CORS headers (#4005)
  • Riak is now deprecated (#3981)

Other

  • Test suites improvements (#3906, #3923, #3926, #3937, #3961, #3968, #3964, #3960, #3969, #3960, #3998, #3999)
  • Updated documentation (#3914, #3962, #3966, #4014)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 6.0.0 - 2022-12-19

Highlights

  • GraphQL API and Command Line Interface (CLI) with many new commands
  • Unified and reworked REST API
  • Incremental and asynchronous dynamic domain deletion
  • Full pagination support with RSM for Inbox
  • Significant code refactoring
  • Various improvements and fixes

All changes

Added

  • GraphQL request handling and execution (#3354, #3442, #3454, #3515, #3633, #3642, #3646 #3648, #3689, #3719, #3803, #3822, #3830, #3894)
  • GraphQL API schema and types (#3448, #3506, #3731, #3856, #3862, #3767)
  • GraphQL API tests (#3745, #3474, #3709, #3718, #3720, #3730, #3736, #3740)
  • GraphQL command implementation for the following categories:
    • account (#3503, #3824, #3895)
    • domain (#3499, #3715, #3851)
    • gdpr (#3711, #3855)
    • httpUpload (#3674, #3868)
    • inbox (#3694)
    • last (#3651, #3850)
    • metrics (#3665, #3861)
    • mnesia (#3725, #3896)
    • muc (#3615, #3627, #3799, #3875)
    • muc_light (#3538, #3563, #3563, #3576, #3742, #3881)
    • offline (#3688, #3864)
    • private (#3652, #3891)
    • roster (#3586, #3756, #3873)
    • server (#3744, #3793, #3877)
    • session (#3521, #3883)
    • stanza (#3483, #3565, #3814)
    • stat (#3700, #3715, #3870)
    • token (#3713, #3863)
    • vcard (#3639, #3890)
  • GraphQL CLI (Command Line Interface) (#3701, #3702, #3708, #3710, #3714, #3724, #3739)
  • GraphQL API documentation (#3704, #3773)
  • Incremental and asynchronous domain deletion (#3774, #3775, #3777, #3813, #3889)
  • Full pagination support for Inbox (#3827, #3843, #3844)

Removed

  • Legacy hooks module (#3892)
  • Legacy REST API command registry (#3697, #3759)

Changed

  • Replaced legacy hooks and handlers with gen_hook (#3758, #3760, #3762, #3763, #3769, #3782, #3784, #3789, #3792, #3798, #3802, #3807, #3808, #3811, #3815, #3817, #3818, #3821, #3825, #3826, #3828, #3829, #3831, #3832, #3833, #3834, #3835, #3836, #3837, #3838, #3839, #3840, #3841, #3842, #3846, #3847, #3848, #3849, #3853, #3854, #3865, #3866, #3867, #3871, #3874, #3876, #3879, #3884, #3886, #3887)
  • Reworked and unified REST API (#3741, #3753, #3768, #3771, #3776, #3780, #3801)
  • Performance improvements (#3682, #3687, #3726, #3738, #3761)
  • Added missing metrics (#3678)
  • Improved configurability (#3728, #3733)
  • MAM module names made more intuitive (#3684)
  • Improved DB request aggregation (#3755)
  • Improved logging (#3885)
  • Minor refactoring (#3732, #3764, #3809)

Fixed

  • Cassandra authentication issue (#3872)
  • Message sent to oneself was stored twice (#3859)
  • DB aggregator could stop working after an error (#3757)
  • Unexpected errors in logs (#3695, #3743)
  • Minor issues with MAM result paging (#3734)
  • Incorrect optimization flags passed to asynchronous workers (#3727)
  • Invalid format of the JWT secret (#3716)
  • Persistent rooms were not stored in the DB (#3707)
  • Issues with the anonymous login (#3706)

Other

  • Updated documentation (#3424, #3675, #3677, #3679, #3766, #3794, #3869, #3893, #3900, #3902, #3903)
  • Updated tools and scripts (#3698, #3723, #3737, #3897)
  • Updated dependencies and other third-party software (#3683, #3699, #3779, #3820, #3823, #3898)
  • Improved CI process (#3680, #3686, #3676)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 5.1.0 - 2022-06-08

Highlights

  • Internal configuration rework
  • Inbox functionality and performance improvements
  • Remove the dynamically compiled modules
  • The new OTP 25 support
  • Miscellaneous enhancements, optimizations & improvements

All changes

Added

  • Cache consistency. Use segmented_cache as a cache backend and have all caches use it (#3330)
  • Persistent term config. Replace ejabberd_config with new persistent terms mongoose_config(#3367, #3338, #3343, #3356)
  • Create async pools basing on the MAM async workers concept (#3433)
  • Add new ensure_subscribed_metric/3 to mongoose metrics module (#3353)
  • Add some property based tests for MAM's is_archivable_message/4 (#3450)
  • Create SECURITY.md (#3562)
  • Allow to use podman instead of docker (#3522, #3543)
  • Support the new OTP 25 (#3667)

Removed

  • Hook handler records don't need the key field (#3342)
  • Remove dead code (#3451)
  • Remove deprecated mod_aws_sns (#3607)
  • Remove deprecated mod_revproxy (#3617)
  • Remove custom eldap.hrl (#3647)
  • Removed in internal configuration rework
    • Remove all calls to gen_mod:set_module_opt from modules, making the module config constant(#3389)
    • Remove calls to gen_mod:set_module_opt(s) in big tests (#3398)
    • Remove gen_mod:set_module_opt(s) (#3468)
    • Remove the ETS table from gen_mod (#3484)
    • Eliminate gen_mod:get_opt_subhost (#3626)
  • Remove dynamically compiled modules (#3394)
    • POC module mod_private (#3323)
    • Remove ejabberd_rdbms and mongoose_rdbms_type (#3392)
    • Allow global to be passed into mongoose_backend as an arg (#3386)
    • MAM cassandra backend without dynamically compiled modules (#3373)
    • Use persistent terms to store backend_module in ejabberd_sm (#3379)
    • Add mongoose_backend:get_backend_name (#3345)
    • mod_auth_token (#3336)
    • mod_last (#3339)
    • mod_event_pusher_push (#3340, #3348)
    • mod_privacy (#3347)
    • mod_muc (#3349)
    • mod_inbox (#3350, #3362, #3440)
    • mod_muc_light (#3351, #3418)
    • mod_offline (#3352, #3371)
    • mod_smart_markers (#3357)
    • mod_vcard (#3358)
    • mod_roster (#3364)
    • mod_pubsub (#3368)
    • mod_http_upload (#3372)
    • mod_keystore (#3375)
    • mongoose_rdbms (#3390)
    • ejabberd_router(#3381)
    • mod_global_distrib_mapping (#3582)

Changed

  • Hook functions (#3331)
  • Extend safely module API (#3337, #3341)
  • Make mongoose_commands errors human-readable (#3346)
  • Add the accumulator to the is_muc_room_owner and can_access_room room hooks (#3417)
  • Worker pool cleanups (#3419)
  • Upgrade mongoose JID (#3525)
  • Add backend logic to mod_stream_management (#3556)
  • Don't use Mnesia for IQ response tracking (#3560)
  • Use dynamic aware check for global domains in ACL module (#3327, #3332)
  • Store ACL specs in the global config (#3335)
  • Allow skipping cover compilation for small tests (#3382)
  • REST /commands endpoint now lists commands with more detailed info (#3391)
  • Revert scope to global for all global distributed Redis presets (#3393)
  • Refactor some usage of stanza types in ejabberd_sm (#3396)
  • Simplify stream management suite (#3453)
  • Performance and metrics touch on async workers (#3502, #3514, #3529)
  • Use ETS backend in mongoose_router instead of Mnesia (#3505)
  • Refactor can_change_ra function in mod_muc (#3581)
  • Reconfigure supervision flags in pools (#3593)
  • Install a hook to filter messages being buffered (#3654)
  • Make RDBMS asynchronous
    • Add RDBMS execute_cast to use when the return value is not needed (#3485)
    • Add async RDBMS order (#3611)
    • Add RDBMS transaction async requests (#3643)
  • Perf optimizations
    • Pre-build metric prefixes and fetch-or-rebuild when needed (#3634, #3649)
    • Pattern matches the map key for more efficiency (#3635)
    • Skip pretty-printing of unused accumulator field (#3637)
  • Message Archive Management improvements
    • Use mongoose_acc timestamp in MAM (#3320)
    • Same stanza id for peers (#3376)
    • Retract on stanza ids (#3377, #3384, #3385)
    • Retraction events (#3497, #3498, #3513)
    • Report wrong stanza id more friendly (#3591)
    • Make MAM return timestamps in microseconds (#3595)
    • Reorder MAM's filter_local_packet hook order (#3623)
    • MAM shaper improvements (#3641)
  • Smart markers improvements (#3590)
    • Implement all the automatic removals (e.g. remove_domain) for the smart markers (#3544)
    • Prepare a documentation page for smart markers (#3535)
    • Implement all configurations for the smart markers (#3546, #3592)
    • Do not display a warning when processing a message with repeated markers (#3673)
  • Inbox improvements (#3359, #3596, #3604)
    • Improve types for dialyzer and log errors when they happen (#3366)
    • Simplify time-unit conversions (#3405)
    • Fix inbox filter bug that puts unnecessary load on the auth backend (#3449)
    • Refactor Inbox tests (#3452)
    • Use async pools in inbox (#3462, #3500)
    • Fix queryid (#3494)
    • Extend queries (#3597)
    • Implement boxes that allow the classifying of entries (#3608)
    • Add async removes - make asynchronous inbox consistent (#3616, #3670)
  • Internal config rework
    • Simplify MUC Light config (#3387)
    • Unfold global options without the temporary functions (#3406)
    • Prepare tests for config defaults (#3408)
    • Introduce config defaults for the 'general' section (#3409)
    • Replace local_config records with key-value pairs (#3410)
    • Add an option to format a section/list as a map (#3420)
    • Move auth config spec to auth backend modules (#3437)
    • Introduce defaults in the auth section (#3439)
    • Section-based auth config (#3446)
    • Introduce default values for auth methods (#3458)
    • Auth password section config rework (#3463)
    • Store module config in a map and keep it updated (#3469, #3488)
    • Use dynamic_modules in big tests (#3481)
    • Store listener config in a map (#3495)
    • Keep ACL conditions as maps (#3501, #3504)
    • Test config parsing with post-processing (#3507)
    • Move domain_certfile to the 'general' section (#3512)
    • Keep s2s options: 'outgoing', 'dns', 'address' in maps (#3516)
    • Put all s2s options in a map and allow specifying them globally or per host-type (#3523)
    • Module config as a map (#3534)
    • Allow customizing auth module list per listener (#3539)
    • Migrate segmented cache to maps (#3572, #3594)
    • Test config metrics (#3613)
    • Put mod_adhoc opts in a map with defaults (#3537)
    • Put mod_bosh opts in a map with defaults (#3540)
    • Put outgoing_pools opts in a map with defaults (#3541)
    • Put mod_inbox opts in a map with defaults (#3547)
    • Put mod_private opts in a map with defaults (#3549)
    • Put mod_disco opts in a map with defaults (#3550)
    • Put mod_version opts in a map with defaults (#3552)
    • Put mod_vcard opts in a map with defaults (#3553)
    • Put mod_time opts in a map with defaults (#3554)
    • Put gen_mod_deps opts in a map with defaults (#3555)
    • Put mod_last opts in a map with defaults (#3557)
    • Put mod_mam opts in a map with defaults (#3559)
    • Put mod_shared_roster_ldap opts in a map with defaults (#3558)
    • Put mod_privacy opts in a map with defaults (#3567)
    • Put mod_sic opts in a map with defaults (#3568)
    • Put mod_roster opts in a map with defaults (#3569)
    • Put mod_stream_management opts in a map with defaults (#3571)
    • Put mod_muc opts in a map with defaults (#3575)
    • Put mod_push_service_mongoosepush opts in a map with defaults (#3577)
    • Put mod_pubsub opts in a map with defaults (#3578)
    • Put mod_ping opts in a map with defaults (#3579)
    • Put mod_muc_light opts in a map with defaults (#3580)
    • Put mod_global_distrib opts in a map with defaults (#3587)
    • Put mod_offline opts in a map with defaults (#3589)
    • Put mod_caps opts in a map with defaults (#3598)
    • Put mod_keystore opts in a map with defaults (#3599)
    • Put mod_jingle_sip opts in a map with defaults (#3600)
    • Put mod_carboncopy opts in a map with defaults (#3602)
    • Put mod_event_pusher opts in a map with defaults (#3603)
    • Put mod_csi opts in a map with defaults (#3605)
    • Put mod_register opts in a map with defaults (#3606)
    • Put mod_offline_chatmarkers opts in a map with defaults (#3609)
    • Put mod_http_upload opts in a map with defaults (#3614)
    • Rework service configuration and management (#3620)
    • Store service options in maps with defaults (#3624)
    • Service and module options only in maps (#3625)
    • Listener configuration rework (#3628)
    • Rework HTTP handler configuration (#3636)
    • Use maps for mongoose_wpool options (#3645)
    • TLS config rework (#3653)
    • Use format_items = map by default for config sections (#3655)
    • Access commands in maps (#3656)
    • Final internal config cleanup (#3659)

Fixed

  • Edoc generation (#3333)
  • Rest admin API - return 404 when command not found instead of 500 (#3383)
  • Identify only stored users on offline routing (#3395)
  • Fix typos (#3475, #3621)
  • Fix certs (#3447, #3435, #3447, #3632, #3640)
  • Fix print-dots for Mac OS Monterey (#3480)
  • Add a newline after module options to improve config readability (#3402)
  • Correctly pass connection options to Fusco (#3426)
  • Fix Github Actions CI - run MSSQL as root again (#3456)
  • Fix ejabberd_c2s - don't drop the host type in update_stanza (#3464)
  • Adding queryId to archived inbox messages (#3482, #3492)
  • MAM - Avoid asking for user exist with a room (#3470)
  • Fix starting new caches (#3508, #3518)
  • Add server_name_indication_host config option (#3510)
  • Less MIM compiler warnings (#3524)
  • Add config flag to be able to set sni hostname matching (#3528)
  • Fix is_configured in async pools (#3566)
  • Do not call the obsolete backend API in CT hook (#3570)
  • Fix metrics for auth backend not being reported (#3585)
  • Fix cowboy_static options (#3618)
  • Fix mod_ping with host_types (#3638)
  • Fix a registration timeout cleanup (#3601, #3671)
  • Fix restart RabbitMQ connection (#3631, #3672)
  • Use metric probes instead of eval for slow calculated metrics (#3644)
  • Fix flaky tests and speed up CI:
    • Gather list of failed test cases in a separate issue (#3361)
    • Fix rest_client_SUITE:muc:messages_can_be_paginated_in_room (#3363)
    • Fill the gaps in the event table for service_domain_db (#3365)
    • Run muclight inbox tests one by one instead of parallel (#3374)
    • Print preset in tools/circle-publish-github-summary-comment.sh (#3378)
    • Enable mod_last only on its test suite (#3413)
    • Enable DB modules in tests only when used (#3416)
    • Retry insert MAM prefs on deadlock (#3421)
    • Fix domain_removal_SUITE:last_removal (#3422)
    • Remove wait from unavailable_resources_dont_get_carbons (#3431)
    • Run tests in pubsub:basic in parallel (#3432)
    • Use in-memory riak backend to speed-up IO (#3434)
    • Fix sm_SUITE (#3436)
    • Use wait_for_archive_size inside send_rsm_messages helper (#3443)
    • Avoid a race condition in sm_SUITE:resume_session_state_stop_c2s (#3444)
    • Fix offline_SUITE:max_offline_messages_reached (#3445)
    • Reroute presences correctly on reconnect (SM fix) (#3459)
    • Wait for async writers to flush messages in tests (#3466)
    • Inbox flaky tests fixes (#3630)

Other

  • Faster, more stable CircleCI on docker with DB backends (#3401, #3519, #3530)
  • Use OTP 24.3.4 for CircleCI (#3661)
  • Updating dependencies and cleaning the rebar.lock file (#3425, #3430, #3465, #3490, #3520, #3531, #3533, #3573, #3657, #3669)
  • Document low-level MAM options (#3329)
  • Document MUC Light cache affiliations (#3509)
  • Minor documentation improvements (#3369, #3400, #3404, #3412, #3438, #3532, #3545, #3668)
  • Update CONTRIBUTING.md (#3622)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 5.0.0 - 2021-10-07

Highlights

  • Support for dynamic domains
  • Documentation improvements and reorganization
  • Miscellaneous enhancements & improvements

All changes

Added

  • Support dynamic domains in (#3095, #3158, #3220, #3226, #3239, #3225, #3212)

    • Config (#3053)
    • Service for database domain management (#3052)
    • REST and CLI API for domains (#3058)
    • Init (#3061)
    • Auth (#3063)
    • PM (#3075)
    • Hooks (#3089)
    • IQ handlers (#3118)
    • Tests (#3108, #3109, #3235)
  • Call remove domain hook from mongoose_domain_api (#3237)

  • Use host_types instead of host in modules and hooks (#3120, #3170, #3097)

  • Support for dynamic domains in modules:

    • mod_ping (#3136)
    • ejabberd_users(module renamed to mongoose_users) (#3135, #3161)
    • mod_inbox (#3132, #3141, #3103, #3165, #3228)
    • MAM/MUC (#3123, #3143, #3155, #3157, #3107, #3231, #3305, #3092, #3147)
    • auth backends (#3106, #3295)
    • mod_http_upload (#3267)
    • mod_sic (#3258)
    • mod_auth_token and mod_keystore (#3262)
    • mod_csi (#3260)
    • mod_amp (#3261)
    • mod_time (#3255)
    • mod_version (#3256)
    • mod_bosh (#3253)
    • mod_adhoc (#3252)
    • mod_register (#3247)
    • mod_muc_commands (#3248)
    • mod_smart_markers (#3243)
    • mod_blocking (#3196)
    • mod_vcard (#3221, #3304)
    • mod_privacy (#3189)
    • mod_last (#3188, #3309)
    • mod_private (#3175)
    • mod_roster (#3159, #3291)
    • mod_caps (#3156)
    • mod_offline (#3164, #3263, #3299)
    • mod_stream_management (#3149)
    • mod_carboncopy (#3130, #3144)
    • mod_disco (#3128, #3146, #3151)
  • Tests for dynamic domains:

    • Enable mim2 node to allow running more tests for dynamic domains (#3264)
    • Enable test suites for dynamic domains (#3268, #3269, #3271, #3272, #3275, #3285, #3276, #3277, #3278, #3279, #3280, #3281, #3283, #3284, #3287, #3142, #3302, #3241, #3246)
    • Test mongooseimctl with dynamic domains (#3273, #3274)
    • Test roster metrics with dynamic domains (#3286)
    • Fix anonymous login and test it for dynamic domains (#3254)
    • Test clustering and domain management with dynamic domains (#3266)
  • Other:

    • Support OTP 24.X (#3186)
    • GDPR get data takes host type as a parameter (#3140)
    • Initial implementation of subdomains management subsystem (#3116)
    • Support XEP-0201 in client api for message (#3236)
    • Support PostgreSQL 14 (#3316, #3319)

Removed

  • Remove all occurences of ?MYNAME except stream errors and the initial value in ejabberd_c2s (#3039)
  • Remove local_send_to_resource hook (#3139)
  • Unused files/modules (#3121, #3122, #3207, #3214, #3310)
  • Unused dependencies (#3199, #3200, #3201)
  • Unused code fragments (#3311, #3313, #3322)
  • Support OTP 22 (#3289)

Changed

  • Prepare queries in mongoose_cluster_id (#3098)
  • Make vcard processing parallel (#3315)
  • Make pool_name configurable for service_domain_db (#3205)
  • Allow to add subelements to the mam iq-fin element (#3191, #3195)
  • Use map for mod_mam:message_row() (#3093)
  • Rework of the gen_mod module (#3104)
  • Change Room EventData type to map (#3111)
  • Format stacktrace args properly (#3124)
  • Make dummy auth delays configurable (#3131)
  • REST API better error reporting (#3137)
  • Use auth for mongoose_domain_handler from REST (#3160)
  • Reimplement mod_cache_users using persistent_terms (#3169)
  • Hooks framework rework (#3174)
  • Refactor async writer for mod_mam (#3216)
  • More consistent accumulator use (#3314, #3240, #3249, #3314)
  • Use more full jids and avoid to_lus conversions in mod_muc_light (#3250)
  • Tests improvements (#3133, #3134, #3181, #3208, #3213, #3217, #3218, #3219, #3227, #3230, #3232, #3127, #3238, #3257, #3297, #3312)
  • Minor changes (#3100, #3324, #3317)

Fixed

  • Start only used metrics (#3096)
  • Prevent infinite loop when domain isolation is on on both domains (#3110)
  • Prepared query in mongoose_cluster_id causes errors on startup (#3112)
  • Tag should be an atom in ldap types (#3178)
  • Missing or not working xref (#3179)
  • Occuring mongoose_metric_hooks error (#3184)
  • FTBFS on implicit declaration of function erts_exit (#3222)

Other

  • Docker images update (#3166)
  • Dependencies update (#3117, #3125, #3193, #3194, #3197, #3198, #3203, #3206, #3211, #3215, #3292)
  • CI improvements (#3173, #3176, #3183, #3190, #3307)
  • Document dynamic domains (#3242, #3245)
  • Restructure the documentation (#3259, #3288)
  • Update migration guide with dynamic domains changes (#3234)
  • Small documentation improvements (#3105, #3162, #3102, #3180, #3114, #3290, #3300, #3303, #3306, #3308, #3312)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • @imcyee Add thread and thread parent to client api messages (#3236)

MongooseIM 4.2.0 - 2021-04-20

Highlights

  • Prepared queries introduced
  • Inbox extensions
  • Miscellaneous enhancements & improvements

All changes

Added

  • Documentation for mod_offline.store_groupchat_messages option (#2992)
  • Support of MS SQL and MySQL in mod_auth_token (#3059)
  • Inbox extensions to set entries as archived, muted or read (#3067)
  • mod_domain_isolation module to limit message passing between domains (#3070)

Removed

  • Usage of deprecated http_uri in ejabberd_auth_http and mod_muc_room modules (#3026)
  • Config reload functionality with the flat config format (#3030)
  • Outdated and unsupported azuresql.sql file (#3086)

Changed

  • Usage of maps instead of lists in session management (#3018)
  • Improved timestamp logic (#3031)
  • Prepared queries for MS SQL, MySQL and PostgreSQL (#3039, #3050, #3055, #3059, #3060, #3066, #3074, #3078)
  • Improved pipeline for mod_smart_markers (#3068)
  • Unified checks for chat markers (#3080)

Fixed

  • Creation of modMucMamFlushed metric (#3023)
  • Starting backend containers for Mac OS X (#3033)
  • Minor issues with GitHub Actions (#3045)
  • Crash during session handover (#3056)
  • Type declaration in mod_muc_light.hrl (#3057)
  • Test summary is no longer printed when CT directory is not created (#3069)
  • Explicit preset_not_found error when running tests with nonexistent preset (#3072)
  • Set mod_mam_meta.pm.archive_groupchats to false by default (#3082)

Other

  • Dependencies update (#3036, #3077)
  • Minor documentation improvements (#3043, #3046, #3079, #3087)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • Inbox extensions are sponsored by Beekeeper
  • @antivista For the documentation supplement (#2992)
  • @imcyee For fixing handover crash (#3056)

MongooseIM 4.1.0 - 2021-02-02

Highlights

  • Major configuration rework: the TOML format is now the only one supported
  • Documentation enhancements
  • Performance improvements

All changes

Added

  • Full support of TOML configuration format (#2929)
  • Prepared queries for mod_vcard (#2939)
  • Humio support (#2952)
  • GitHub actions for MongooseIM CI workflow (#2990, #2993)
  • Usage of fast_scram library (#3003)
  • Documentation for MongooseIM cluster's rolling upgrade (#3012)
  • PEP publish options (#3017)

Removed

  • Support of old *.cfg configuration format (#2929)
  • Support of HTTP File Upload 0.2.5 (#2989)
  • Unused katt_helper (#2999)

Changed

  • Moved documentation from readthedocs to gh-pages altogether with its face lifting (#2946, #2960, #2963, #2966, #2969)
  • Helper script in small tests uses python3 instead of python2 (#2957)
  • Use tools/wait_for_service.sh instead of netcat to ensure the main minio container is started (#2979)
  • Reduced stringprepping in roster hooks, privacy modules and mod_offline (#2997, #3005, #3009)

Fixed

  • The response of locked MUC room to disco#info (#2956)
  • ct_mongoose_log_hook initialization error (#2964)
  • Catching log formatter errors to avoid death spiral of logging (#2968, #2978)
  • The way big tests detect minio in CI (#2998)
  • Connection issues with Cassandra (#3006)

Other

  • Added rebar3 clean call to Makefile (#2932)
  • Minor docs improvements (#2945, #2981, #3000, #3013, #3020)
  • Parallel loading of nksip in tests (#2947)
  • CI improvements (#2949, #2972)
  • Usage of integer_to_binary/1 instead of list_to_integer(binary_to_list/1) (#3008)
  • Removed archive_groupchats warning (#3016)

Commits, merged PRs and closed issues

MongooseIM 4.0.1 - 2020-11-17

Highlights

  • A new metric now reports the type of configuration file that is being used. The aim is to determine the adoption of the new config file format.
  • Better error messages are reported from wrong TOML configuration files.

All changes

Added

  • User-friendly errors for the TOML configuration file (#2903)
  • Metric to report the type of config file used (#2918)

Removed

  • Removed deprecated mod_http_notifications #2912

Changed

  • TOML documentation improvements (#2896, #2898, #2899, #2901, #2905, #2942)
  • Some TOML configuration options have been reformatted (#2909)
  • More prepared queries to improve RDBMS performance (#2924, #2928)
  • Fixed Ubuntu 18.04 and OTP 23.1 for building docker images (#2926)
  • Moving from untyped binaries to proper jid structures (#2895, #2920, #2922)

Other

  • Dependencies update (#2914)
  • REST error handling cleanup (#2908)
  • nksip is started only when used (#2937)
  • RPM package improvements (#2906)
  • CI improvements (#2910, #2934)

Commits, merged PRs and closed issues

MongooseIM 4.0.0 - 2020-09-30

Overview

MongooseIM 4.0 is all about putting a friendly face to MongooseIM’s amazing features. This includes the addition of an Erlang-agnostic configuration allowing a broader pool of developers to benefit from MongooseIM. Logging and Kubernetes improvements to be more DevOps-friendly and Manager-friendly with load testing enabling managers to see the benefits of MongooseIM easily.

All changes

Added

  • A new configuration file format: MongooseIM can now be configured with an entirely revamped TOML configuration file (#2801)
    • Pesky bugs have been fixed
    • Implementation details have been abstracted away
    • Documentation has been improved
  • Structured logging: the main idea of structured logging is that if we have properties of an event, let’s log them as they are, without losing their structure, and format it in a way that is most appropriate for the system we’re sending them to.
    • Moved to OTP logger from lager (#2810)
    • No more logging of man-made strings, we now log structured reports (#2816)
    • logfmt formatter, a log format that's easy to read and write (#2848)
    • JSON formatter, a fully structured format (#2851)
  • XEP-0215 External Service Discovery (#2870)
  • A REST endpoint for admin users which accepts any stanza, provided it has from and to attributes (#2858)
  • erl_crash.dump dumping directory can be explicitly set (#2793)

Changed

  • Archiving messages takes input as a map instead of as many parameters (#2749)
  • Base16 encoding uses a faster algorithm (#2839)

Other

  • OTP-23 compatible (#2840)
  • SCRAM password dumping into RDBMS escapes username correctly (#2842)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • @balgillo For the small but many important fixes.

MongooseIM 3.7.1 - 2020-07-13

Highlights

  • Integration of the highly performant NIFs to compute the SCRAM challenge from esl/fast_scram

All changes

Changed

  • Implementation of the SCRAM challenge algorithm to be NIF-based (#2787)
  • Fix a bug during session resumption, where stanzas were not routed to the user (#2780)
  • Fix AMP logic regarding storage of messages when delivery failed but archiving was successful (#2757)

Other

  • Update Rebar and its plugins (#2760)
  • Update dependencies (#2761) (#2764) (#2765)

Commits, merged PRs and closed issues

MongooseIM 3.7.0 - 2020-05-20

Highlights

  • Authentication methods improvements
    • Support for SCRAM-SHA-256, SCRAM-SHA-512, SCRAM-SHA-224, SCRAM-SHA-384 authentication methods
    • Support for channel binding for all the SCRAM based authentication methods
  • Support for XEP-0424: Message Retraction
  • Support for Proxy Protocol

There were some changes to the database schema so please take a look at the Migration guide when upgrading from a previous version.

All changes

Added

  • Support for new SCRAM based authentication methods:
    • SCRAM-SHA-256 (#2685)
    • SCRAM-SHA-[224, 384, 512] (#2701, #2713)
    • SCRAM-SHA-*-PLUS (#2725)
  • Support for XEP-0424: Message Retraction (#2739)
  • Support for Proxy Protocol (#2674)
  • RDBMS backend for MUC (#2635)
  • Possibility to store MUC messages in offline storage (#2640)
  • Support for MySQL's new authentication methods (#2644)
  • System metrics
    • Type of outgoing pools (#2657)
    • Stanza count (#2672)
  • Chat markers cache (#2676)
  • mongooseimctl bootstrap command which can be run to execute user defined init scripts (#2692)
    • Support for templating the config files before MongooseIM starts (#2712)
  • c2s_remote_hook_call to run a hook in the context of the c2s process (#2700)
  • mongooseimctl http_upload command to help debug HTTP file upload configuration (#2708)

Changed

  • All hooks have been wrapped in the mongooseim_hooks module with proper specs (#2642)
  • Stream error reporting when the server receives unexpected stanza on a given stream state (#2667)
  • Server sent ping scalability improvements (#2531)
  • Docker base image to be based on Ubuntu 18.04 with OpenSSL 1.1 (#2693)
  • HTTP file upload tests with min.io running in the container (#2696)
  • Fixed issue related to passing x-amz-acl header to S3 (#2708)
  • Default format for password storage (#2737)

Removed

  • Support for MySQL versions older then 5.7.9

Other

  • Fix to push notifications integration making sure all parameters are sent in a request to MongoosePush (#2645)
  • Extract jid related functionality to an external library (#2654)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 3.6.2 - 2020-02-20

Highlights

  • Tooling and packages improvements

All changes

Changed

  • Fix a bug in mongooseimctl run as a different user as the current one (#2631)
  • .deb and .rpm build and test scripts improvements (#2629, #2633)

Commits, merged PRs and closed issues

MongooseIM 3.6.1 - 2020-02-11

Highlights

  • Tooling and packages improvements

All changes

Changed

  • Use runuser instead of sudo in scripts managing MongooseIM (#2617)
  • Install pid and status directory explicitly (#2618)
  • Massive rework of scripts building .deb and .rpm packages (#2626, #2629)
  • Remove redundant time conversions in shapers (#2545)
  • Small performance improvements (#2621)

Commits, merged PRs and closed issues

MongooseIM 3.6.0 - 2020-01-29

Highlights

  • Push notifications improvements
    • Possibility to configure push notifications without real PubSub
    • Immediate push notifications to disconnected device in resume state
  • Gathering of system metrics
  • Support for the last two major OTP versions only: 21 and 22
  • Performance improvements

There were some changes to the database schema so please take a look at Migration guide when upgrading from a previous version.

All changes

Added

  • System metrics gathering (#2523, #2532, #2550, #2571, #2578, #2580, #2586, #2591, #2594, #2598, #2601, #2603, #2607, #2610, #2612)
  • MAM disco#info to MUC and MUCLight rooms (#2272)
  • Chat markers support for the room's REST API (#2274)
  • Possibility to close malicious connections without revealing service details (#2304)
  • Ping response time metrics (#2527)
  • Emoji support in VCard's nickname field (#2539)
  • Swagger documentation hosted by MongooseIM (#2543, #2556)
  • Persistent fields from accumulator to offline storage (#2587)
    • This requires a new column in RDBMS, see the migration guide

Changed

  • Push notifications
    • Immediate push notification to a connection in resume state (#2018, #2593)
    • RDBMS backend for mod_event_pusher_push (#2526)
    • PubSub-less push notifications (#2554)
    • Integration with MongoosePush API v3 (#2549)
    • Expired device_id removal (#2555)
    • Details from the push enable stanza are stored in session info now (#2568)
    • The push notification's priority can be set with enable stanza (#2569)
    • An unacknowledged_message hook is fired when a session is in resume state and a new message arrives (#2589)
    • Documentation update and rework (#2611)
  • Riak bucket types are now configurable (#2490)
  • Dependencies update:
    • lager: 3.8.0
    • cowboy: 2.7.0
    • epgsql: 4.3.0
    • mysql: 1.5.1
    • cache_tab: 1.0.20
    • stringprep: 1.0.17
    • erlcloud: 3.2.13
    • jwerl: 1.1.0
    • observer_cli: 1.5.3
    • amqp_client: 3.8.0
    • wpool: 4.0.1
  • SASL mechanism management simplification (#2519)
  • MUCLight room config simplification and unification (#2536)
  • Performance improvements:
    • jid parsing in NIF (#2544)
    • use built-in base64 encoding (#2547)
    • C/C++ optimisations (#2604)
  • ejabberd_sm improvements (#2566, #2582)

Removed

  • get_stactrace calls (#2494)
  • Support for MAM v0.3 (#2496)
  • Usage of p1_time_compat (#2498)
  • mod_push (#2553)

Other

  • Pass the original accumulator when sending out a stanza (#2158, #2528)
  • Remove sender related data from the accumulator before passing it further (#2510)
  • Do not allow riak and redis pools to use the incompatible available worker strategy (#2243)
  • Fix for connection crash when the client enables stream management but it's not available (#2482)
  • Fix for REST API crash when user's JID is empty (#2543)
  • Return Bad Request status when malformed JSON is passed to REST API (#2557)
  • Possibility to call external HTTP auth backend to get valid user's certificates (#2044)
  • Fix for last activity error iq responses (#2570)
  • Fix c2s message bouncing issue (#2579)
  • Fix for wrong namespace in ringing stanza (#2584)
  • Fix warning for .deb packages (#2609)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 3.5.0 - 2019-10-03

Highlights

  • Reworked LDAP layer
  • New method of resetting Inbox
  • OTP < 21.2 support is deprecated

All changes

Added

  • A new dedicated stanza for resetting the Inbox (#2452)
  • New metrics:
    • clusterSize, as seen by each MIM node individually (#2322)
    • tcpPortsUsed (#2359, #2374)

Changed

  • Multiple improvements in the LDAP layer (#2388)
    • They are now configured like the other outgoing connections.
    • LDAP+TLS support.
    • LDAP authentication backend may be used with SASL EXTERNAL
  • GDPR removal and retrieval do not query disabled backends and modules anymore (#2435)
  • Push notifications are no longer sent for messages with empty body (#2394)
  • Stream Management implementation has been updated to match XEP-0198 v1.6 (#2468, #2472)
  • Deprecations:
    • OTP older than 21.2 (#2465)
    • XEP-0313 Message Archive Management v0.3 (#2466)
    • TLS older than 1.2 (#2377)
  • Dependencies update (#2351)
    • lager: 3.7.0
    • cowboy: 2.6.3
    • jiffy: 1.0.1
    • uuid: 1.7.5
    • fast_tls: 1.1.1
    • mysql: 1.5.0
    • cache_tab: 1.0.19
    • stringprep: 1.0.16
    • meck: 0.8.13
    • recon: 2.5.0
    • erlcloud: 3.2.7
    • observer_cli: 1.5.0
    • amqp_client: 3.7.15
    • eredis: 1.2.0
    • riakc: 2.5.3 - no change here but downloaded from a repo now (#2397)
  • Clustering operations are now protected by a global transaction (#2470)
  • Client XML namespace is no longer stripped in the messages received from a client (#2423)
  • mongooseimctl script is more robust (#2409)
  • scram module has been renamed to mongoose_scram (#2401)

Fixed

  • binary_to_atom vulnerability (#2444)
  • push PubSub node implementation had a bug in the affiliation check (#2438)
  • The unread messages count for push notifications was retrieved improperly and triggered an error (#2481)
  • Chat markers were improperly handled by Inbox (#2449)
  • It is again possible to configure an idle connection timeout for Websockets (#2480)
  • MUC Light role is now properly archived (#2268)
  • Chat markers are now properly stored by the MUC archive (#2271)
  • Inbox recognises MUC Light system messages more reliably (#2290)
  • disco#info request no longer causes a crash when rooms_in_rosters is enabled (#2354)
  • Mnesia backend for PubSub used to break the transaction restart logic in some operations (#2390)
  • Some REST commands were unusable due to a bug in REST implementation (#2426)

Other

  • Added CircleCI integration (#2372, #2382, #2383, #2414, #2419, #2422, #2439, #2441, #2446, #2447, #2462, #2463)
  • CI stabilisation (#2378, #2389, #2392, #2393, #2395, #2396, #2404, #2428, #2429, #2431, #2434, #2437, #2453, #2454, #2455, #2469, #2473, #2474)
  • Test improvements and refactoring (#2351, #2381, #2398, #2399, #2403, #2408, #2411, #2417, #2418, #2421, #2424, #2432, #2457, #2458, #2459, #2475)
  • Documentation updates (#2247, #2356, #2357, #2376, #2416, #2420, #2436, #2450, #2478, #2479)
  • Reduced resource consumption for dev releases (#2400)
  • New dev nodes are templated from existing one(s) if possible (#2407)
  • Updated .gitignore file with new rules for logs (#2385)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • @cgrtrifork
  • @Nyco
  • @navneetgupta
  • @jzskca

MongooseIM 3.4.1 - 2019-09-12

Highlights

Patch release mitigating ERL-944

Fixed

  • Vulnerability related to erlang:binary_to_existing_atom with latin1 encoding (#2445)

MongooseIM 3.4.0 - 2019-06-26

Highlights

  • GDPR data retrieval and removal

All changes

Added

  • GDPR data retrieval and removal (#2260, #2285, #2286, #2288, #2289, #2293, #2294, #2295, #2296, #2297, #2298, #2299, #2300, #2301, #2302, #2303, #2309, #2310, #2312, #2313, #2314, #2316, #2320, #2323, #2326, #2327, #2328, #2336, #2339, #2341, #2345, #2347, #2349)
  • CLI register function now generates a safe, random username for a new account (#2262)
  • It is possible now to change the server name returned in HTTP responses (#2308)
  • A new behaviour in case of conflicting component connections: kick_old (#2315)

Changed

  • When a session gets replaced, the new one waits longer for the old one to close before reporting an error (#2054)
  • Authentication backends no longer use a store_type/1 function (#2254)
  • Default certificates are now generated faster (#2305)

Fixed

  • Some race conditions in Stream Management (#2049)
  • faulty script execution of xep_tools (#2252)
  • MUC messages are now archived without an empty to attribute (#2220)
  • "Offline" classic MUC rooms are now properly reported in disco results (#2238)
  • Inbox responses are now properly routed to the original requester (#2276)
  • Resolved issues with TLS on OTP 20.x (#2332)

Other

  • Updated escalus to 4.1.0 (#2337)
  • Test improvements and refactoring (#2319)
  • Update documentation (#2246, #2259, #2261, #2307, #2346)

Commits, merged PRs and closed issues

Special thanks to our contributor:

  • @varnerac

MongooseIM 3.3.0 - 2019-03-12

Highlights

  • Finalised RDBMS implementation for PubSub
  • MongooseIM integration with RabbitMQ
  • PKI authentication improvements

All changes

Added

  • PubSub improvements
    • RDBMS backend for pubsub_node table (#2145)
    • mod_pubsub_cache_rdbms implementation (#2144)
    • RDBMS support for subscription options in PubSub (#2165)
    • Generic metrics measuring number of errors and execution time for different PubSub actions based on sent IQs (#2178)
    • Setting subscription options for flat_node (#2165)
  • RabbitMQ layer (#2127, #2216)
    • RabbitMQ backend for event_pusher
    • rabbit worker pool (that can be used for any interaction with RabbitMQ)
    • mongoose_amqp module that deals with AMQP protocol layer
  • Address best practices for using SASL EXTERNAL as defined by XEP-0178 (#2204, #2223, #2231)
  • Upsert API for RDBMS (#2153)
  • gen_mod:opts_for_module/2 which allows you to selectively retrieve opts passed through config to a given module (#1027)
  • Backend functions get a new metric: number of function calls (#2177)
  • mod_vcard calls optional tear_down callback on the backend module (#2152)

Changed

  • Update dependencies:

    • lager 3.6.7 (#2138)
    • cowboy 2.6.0 (#2138)
    • idna 6.0.0 (#2138)
    • uuid 1.7.4 (#2138)
    • fast_tls 1.0.26(#2138, #2203)
    • epgsql 4.2.1 (#2138)
    • cache_tab 1.0.16 (#2138)
    • stringprep 1.0.14 (#2138)
    • proper 1.3.0 (#2138)
    • meck 0.8.12 (#2138)
    • bbmustache 1.6.1 (#2138)
    • erlcloud 3.2.2 (#2138)
    • observer_cli 1.4.1(#2138)
    • bbmustache 1.6.1 (#2182)
    • jiffy 0.15.2 (#2182)
    • proper 1.3.0 (#2182)
    • escalus 4349a80 (#2182)
    • shotgun 636d14e (#2182)
    • recon 2.4.0 (#2162)
    • nkpacket f7c5349 (#2147)
  • PubSub changes

    • Extract mnesia operations around pubsub_node table to the backend module (#2141)
    • Optimize the way a pubsub node is removed (#2136)
    • Remove pubsub_subscription module, refactor opts forms processing and integrate option storage logic into DB backends (#2148)
    • mnesia cache backend for pubsub_last_item extracted to a separate cache backend module (#2144)
    • Simplified pubsub_index API, removed free function (#2156)
    • Backend modules call pubsub_index when the id is not passed (#2156)
    • Use RDBMS autoincrementing index in place of pubsub_index (#2160)
    • Replace Mnesia's transaction and sync_dirty calls in the RDBMS backend with proper RDBMS equivalents (#2191)
    • Return the index when the node is created (#2160)
    • Parallelised PubSub message broadcast (#2206)
    • Spawn a new process in mod_pubsub:broadcast_stanza/9
  • Change stop_module_keep_config/2 and stop_module/2 to return module opts (#1027)

  • Update snippet to register users (#2181)

  • Use map syntax to pass ranch transport options (#2188)

  • Change the name of the metric responsible for the number of backend function calls (#2193)

  • Replace jsx with jiffy (#2199)

  • Make HTTP headers lowercase to avoid HTTP/2 connection errors (#2211)

Fixed

  • Add mod_pubsub_db_backend:add_item to the tracked functions (#2193)
  • erlcloud_sns:publish content format (#2176)
  • infinity mapped to 0 in the matches option in mod_vcard_ldap (#2179)
  • mod_vcard_ldap ignored ldap_uids formed as {"attribute"} and only parsed {"attribute", "format"} correctly (#2180)
  • Return MAM item-not-found IQ result when a nonexistent message ID is asked for (#2166)
  • Fix mongooseimctl debug command to use correct hostnames (#2201)
  • Use mongooseim-docker with a name flag and nodename fixes (#2205)
  • Fix compilation errors when the compilation directory has whitespaces in it (#2203)
  • Default inbox backend is set to rdbms (#2236)
  • mod_vcard_ldap:eldap_pool_search/6 empty list handling (#2226)
  • lowercase HTTP headers in mod_bosh for HTTP/2 compliance (#2211)

Other

  • Run Travis builds on newer (not newest) Ubuntu LTS version Xenial (16.04) (#2151)
  • Update mongooseim-docker to cc7326bfd0129943206a67e57dd861ff19c403c7 (#2190)
  • Test improvements and refactoring (#2165, #2162, #2164, #2170, #2127, #2142, #2146, #2147)
  • Fix broken or remove outdated links in docs (#2183)
  • Install the most up to date package builder epel-release for centos 7 (#2154)
  • Stabilize the ldap job on travis (#2140)
  • Update find-hooks.awk (#2225, #2232)
  • Update escalus to 8911491 (#2224)
  • Update documentation (#2155, #2163, #2167, #2233, #2227)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • @sstrigler
  • @getong
  • @cogentParadigm

MongooseIM 3.2.0 - 2018-11-20

Highlights

  • Client Certificate authentication for Websockets and BOSH
  • Inbox improvements (push notifications integration)
  • Unified outgoing connections pools

All changes

Added

  • Improvements in mod_inbox:
    • User can show only active/all conversations (#2017)
    • Inbox IQ result stanza provides a total unread messages count and an active conversation count (#2047, #2056)
    • If an inbox query is malformed, a descriptive error is returned (#2052)
    • mod_inbox is integrated with mod_event_pusher, so push notifications now include an unread messages count (#2078)
  • SASL EXTERNAL may be used with WebSockets and BOSH (#2093)
  • mongoose_wpool abstraction layer (#2060, #2099, #2117)
  • rdbms, redis, riak, cassandra, http ,generic and elasticsearch pools are started via outgoing_pools config option (#2077, #2079, #2084, #2087, #2101)
  • Self-signed certificates may be used with fast_tls driver (#2102)
  • mongoose_bin module unifies random strings generation API (#2000)
  • Modules may specify "optional" dependencies to enforce the startup order (but not the startup itself) (#2029)
  • Switchable RDBMS backend for mod_pubsub - experimental (#2122, #2113, #2129, #2131, #2134)
  • Changing MUC Light room configurations is possible via REST API (#2030)
  • New Message Archive Management metrics for async writers (#2023)
  • New Makefile target to check code style with Elvis (#2111)

Changed

  • ejabberd.cfg is renamed to mongooseim.cfg
  • OTP versions older than 19.0 are no longer supported (#2002)
  • "ODBC" usage has been clarified and it has been renamed to RDBMS where relevant (#2053)
  • Mongoose accumulator v2.0 is more difficult to abuse and has less implicit logic (#2076)
  • Pre 1.0 XML streams are no longer supported (so is non-SASL authentication) (#1998)
  • Improvements in http backend of mod_event_pusher (#2100)
  • Cassandra layer uses a standard MIM worker pool instead of a custom one (#2043)
  • Deprecated gen_fsm is replaced by gen_fsm_compat (#1996)
  • Updated dependencies:
    • fast_tls 1.0.23 (#2002)
    • worker_pool 3.1.1 (#2002)
    • esl/cqerl master (#2002)
    • epgsql 4.1.0 (#2002)
    • arcusfelis/eodbc master (#2002)
    • tirerl 1.1.0 (#2002)
    • `cache_tabz 1.0.12 (#2002)
    • stringprep 1.0.12 (#2002)
    • proper 1.2.0 from hex.pm (#2002)
    • meck 0.8.11 (#2002)
    • erszcz/pa master (#2002)
    • bbmustache 1.5.0 (#2002)
    • recon 2.3.6 (#2002)
    • erlcloud 3.1.12 (#2002)
    • jwerl 1.0.0 (#2002)
    • observer_cli 1.3.3 (#2002)
    • eredis 1.1.0
    • lasse 1.2.0 (#2016)
    • cowboy 2.4.0 (#2016, #2088)
    • exml 3.0.2 (#2050)
    • shotgun 9b6c1df (#2092)
    • escalus 592deba (#2016, #2092)
    • igors/eredis e9688a1 (#2042)
  • Implementation of MUC Light user affiliation logic is more developer-friendly (#1934)
  • Generation of codecov-compatible coverage report is extracted to rebar3_codecov plugin (#2073)
  • mod_muc uses maps instead of dictionaries ( #1986)
  • Shaper workers are organised under dedicated supervisor (#2130)

Fixed

  • Config reload in cluster had broken verification logic (#2051)
  • fusco clients are now properly closed in mod_revproxy (#2118)
  • Backend proxy modules are loaded only once (#1438)
  • Node cleaners are no longer crashing (#2135)
  • Test runner
    • Tests are counted properly on macOS (#2004)
    • Appropriate error is returned, when there are no test nodes. (#2004)
    • Improved test specs generation and autocompletion (#2036)
  • Minor fixes (#2010, #2046, #2069, #2086, #2123)
  • rebar3 release generation with OTP 21 (update to 3.6.1) (#2037)
  • NkSERVICE cache dir configuration works as expected now (#2058)
  • Dialyzer job on Travis runs with Erlang/OTP 21 and returns no errors (#2075)

Other

  • SASL authentication refactored (#2045)
  • Build improvements (#1015)
  • Documentation fixes and improvements ( #1527, #2024, #2038, #2039, #2012)
  • Tests improvements and refactoring (#1448, #1990, #2007, #2048, #2061, #2085, #2120, #2132, #2133)
  • Codecov thresholds for a failed build are now set to 0.5% (#1957)
  • Minor cleanup (#1553, #2081)

Commits, merged PRs and closed issues

Special thanks to our contributors: @getong @igors @justinba1010 !

MongooseIM 3.1.0 - 2018-07-24

Highlights - 3.1.x

  • Inbox extension enters beta stage, improved with MUC, timestamps and MSSQL support
  • Test Runner - comprehensive tool for executing tests locally
  • OTP 21 support
  • ElasticSearch backend for message archive

Patch: 3.1.1

  • Updated exml to 3.0.2, fixing an important security issue.

All changes - 3.1.0

Added

  • mod_inbox enters beta stage
    • Timestamps support (#1970)
    • Classic MUC support (#1961)
    • MSSQL support (#1965)
  • Test Runner (#1973, #1989, #1991)
  • OTP 21 support, OTP 18.x is no longer officially supported (#1947)
  • Jingle/SIP tutorial (#1980)
  • ElasticSearch backend for message archive (#1900)
  • Smack-specific properties support in REST API (#1976)
  • reload_cluster command support for ignorable options (#1948)
  • Jingle/SIP Re-INVITE support (#1903)
  • More meaningful HTTP API errors (#1776)
  • MUC hooks for user join and leave (#1898)
  • Support for result limiting options in mod_mam_meta (#1977)

Changed

  • Message archive async writers no longer synchronise on reading operations (#1919)
  • Replaced bundled LDAP driver with an OTP one (#1216)
  • All worker pools are now based on one library: worker_pool (#1955)
  • Mnesia directory is no longer removed in clustering operations (#1951)
  • Inconsistent Mnesia directory names are no longer an error in clustering operations (#1904)
  • MEDIUMBLOB is used for message archive data by default (#1873)
  • Adding children to main supervisor is now more strictly verified (#1905)
  • Updated dependencies:
    • worker_pool 3.1.1 (#1983)
    • lager 3.6.4 (#1992)
    • jiffy 0.15.2 (#1992)
    • idna 1.5.2 (#1992)
    • uuid 1.7.3 (#1992)
    • lasse 1.1.1 (#1992)
    • escalus e7eece237a56560add06127bc9ed47d423e88dcc (#1947)
  • Removed pooler dependency (#1875)
  • Moved some multi-module MongooseIM components to dedicated subdirectories (#1952)
  • conflict_check_failed log severity changed to "warning" (#1981)
  • Decreased severity of some log messages (#1984)

Fixed

  • mongoose_acc server property scope (#1925)
  • mod_inbox_odbc was reporting false errors on MySQL upserts (#1994)
  • Rosters are properly updated on subscription requests (#1931)
  • DB deadlock is now handled properly in message archive preferences (#1897)
  • Handling of terminating receiver process (#1949)
  • mod_jingle_sip startup for multiple hosts (#1960)
  • Record-Route header generation in Jingle/SIP (#1958)
  • MSSQL transactions are now stable in MUC Light (#1917)

Other

  • Documentation fixes and improvements (#1906, #1936, #1966)
  • Tests improvements and refactoring (#1874, #1879, #1883, #1884, #1885, #1886, #1892, #1893, #1895, #1899, #1908, #1911, #1914, #1916, #1920, #1921, #1922, #1924, #1926, #1932, #1937, #1940, #1943, #1944, #1950, #1953, #1954, #1956, #1962, #1967, #1982, #1990)
  • Build improvements (#1915)
  • Deps are downloaded with HTTPS (#1929)
  • Codecov thresholds for failed build are now set to 0.5% (#1957)

Commits, merged PRs and closed issues

Special thanks to our contributors: @SamuelNichols @Beisenbek @GalaxyGorilla @igors !

MongooseIM 3.0.0 - 2018-05-22

Highlights

  • exml 3.0.1, much faster and efficient than previous versions, thanks to a new XML parser: RapidXML
  • Inbox extension - a way to display conversations list in chat application

All changes

Added

  • Inbox extension - experimental (#1783)
  • Acceptor pool for incoming XMPP TCP/UDP connections (#1849)
  • OTP 20 support in mod_jingle_sip (#1825)

Changed

  • MongooseIM uses exml 3.0.1, based on new XML parser: RapidXML (#1729, #1870)
  • Updated fast_tls to a version that avoids extensive usage of stat function (#1806)
  • User sessions are hibernated (e.g. garbage collected) as frequently as possible (#1821)
  • Cassandra connection pool has been refactored (#1847)
  • Removed support for Message Archive Management v0.2 (#1860)
  • policy-violation check is performed in mod_mam(_muc), not in its backends (#1817)
  • Removed unnecessary -part schemas for MySQL (#1845)
  • mod_jingle_sip uses origin_ acc keys instead of custom ones (#1841)

Fixed

  • ODBC support - replaced ODBC library and refactored RDBMS code (#1816, #1838)
  • mod_muc terminated the room when a cancel form was received for a room in normal state (#1798)
  • C2S process now ignores IQ replies addressed to previous process for the same user session (#1803)
  • Metrics skipping (#1819)

Other

  • Documentation fixes and improvements (#1835, #1851, #1852)
  • Tests improvements and refactoring (#1413, #1782, #1808, #1813, #1820, #1823, #1836, #1846)
  • escalus 4.0.0
  • Flexible preset application during test execution (#1802)
  • Added packaging tools (#1662)

Commits, merged PRs and closed issues

MongooseIM 2.2.2 - 2018-04-18

Fixed

  • SIP libraries are now excluded by rebar.config.script if configure.out file is missing.

MongooseIM 2.2.1 - 2018-04-17

Fixed

  • Default build failed on OTP 20.x due to SIP libraries being incompatible with this Erlang version (#1814)

MongooseIM 2.2.0 - 2018-04-17

Added

  • SASL EXTERNAL authentication method, i.e. auth with certificates (#1735)
  • Jingle/SIP proxy (#1797)
  • "Hidden" components capability (#1769)
  • Mongoose Services (#1792)
  • Hosts Refresher process for Global Distribution (#1660)
  • advertised_endpoints option for Global Distribution (#1724)
  • Pluggable backends support in mod_muc (#1758)
  • Foreground mode (#1775)
  • Now it is possible to upload test results to Google Drive (#1702)
  • Conditional logging macros (#1707)
  • Extended logging in mod_push_service_mongoosepush (#1777)
  • Extra debug logs in ejabberd_service and mod_websockets (#1697)
  • Extended logging in mod_vcard (#1715)

Changed

  • Refactored MongooseIM header files (#1570)
  • mod_event_pusher and mod_event_pusher_push API has been improved; not backwards compatible (#1796)
  • gen_mod:start,stop no longer allow to start already running and stop already stopped module (#1771)
  • "Big tests" are moved from test.disabled/ejabberd_tests/ to big_tests (#1778)
  • Binary values are now hex-escaped in queries to MySQL (#1678)
  • Updated dependencies: fast_tls @ a166f0e9fe78304e5ca628fd5eff57c850241813 and cache_tab @ 1.0.12 (#1753, #1806)
  • Updated MySQL library to 1.3.2 (#1787)
  • Updated rebar3 to 3.5.0 (#1786)
  • mod_ping no longer pings bare JIDs (#1710)
  • mod_mam no longer uses dynamically compiled module for accessing parameters (#1627)
  • 1-1 messages REST API now uses mongoose_acc structure (#1744)
  • Improved logging in Global Distribution (#1761)

Fixed

  • Under some conditions MongooseIM could enter infinite error routing loop (#1800)
  • mod_mam was handling Unicode data improperly (#1748)
  • mod_event_pusher_push could attempt pushing body-less message (#1726)
  • mod_event_pusher's HTTP backend was escaping data improperly (#1632)
  • A corner case in Global Distribution was present that could lead to broken message order (#1689)
  • Global Distribution was not caching origin info for packets from components (#1695)
  • Race condition was present in outgoing connection pools' initialisation in Global Distribution (#1750)
  • Global Distribution mappings manager sometimes crashed when mongoose_router_external* routers were first in routing chain. (#1763)
  • Admin REST API wasn't working properly with MUC Light + ODBC backend (#1742)
  • mod_mam was calculating complete attribute improperly when paginating backward (#1740)
  • X-OAUTH2 tokens were not deleted properly on user removal (#1746)
  • MAM 0.2 is now properly deprecated (#1807)
  • Received stanza size metric could be highly inaccurate (#1615)
  • Tide address used http instead of https (#1701)
  • MongooseIM could not be deployed in paths with spaces (#1621)

Other

  • Documentation fixes and improvements (#1676, #1696, #1709, #1727)
  • Tests improvements and refactoring (#1628, #1637, #1644, #1653, #1663, #1665, #1680, #1681, #1687, #1692, #1706, #1708, #1720, #1736, #1737, #1743, #1745, #1747, #1749, #1756, #1757, #1760, #1768, #1770)
  • Removed unused Riak script (#1671)
  • Commit messages with Unicode characters are now properly handled (#1675)

Commits, merged PRs and closed issues

Special thanks to our contributors: @igors @jacksgt @sstrigler @GalaxyGorilla @varnerac!

MongooseIM 2.1.1 - 2018-01-16

Added

  • Event Pusher - a module that unifies all outgoing event channels: HTTP, Push Notifications etc. (#1414)
  • TLS-secured connections to databases (#1545, #1556, #1564, #1578, #1585, #1587)
  • Dedicated API in ejabberd_auth for accessing parameters in auth_opts tuple (#1593)
  • Experimental Global Distribution extension (#1604)
  • Max allowed stanza size may be now configured for mod_websockets (#1641)

Changed

  • Project structure has been transformed to single application layout (#1580, #1590)
  • Message Archive Management v0.2 support is now deprecated and will be removed in 3.0.0beta1 (#1514, #1591)
  • MySQL schema now uses utf8mb4 encoding and ROW_FORMAT=DYNAMIC. MySQL versions older than 5.5.14 are no longer supported. (#1611, #1633)
  • MongooseIM now uses updated and decoupled fork of exometer (#1600)

Fixed

  • User process crash when IQ result/error with Privacy Lists/Blocking Command namespace was received. (#1597)
  • MongooseIM build failed on macOS High Sierra due to old version of fast_tls (#1606)
  • Error type returned when VCard is not found (#1547)
  • Race condition in mod_muc on room PID registration (#1608)
  • Unnecessary transformations in mod_vcard_ldap (#1607)
  • MongooseIM build on 32-bit systems (#1574)
  • One of the hooks in mod_mam_odbc_arch wasn't properly disabled on module stop (#1576)
  • Event Pusher HTTP backend used invalid hostname to fetch options (#1630)
  • mod_websockets:close/1 didn't work. (#1603)

Other

  • Removed unused API from jlib.erl (#1390)
  • Git now treats minified JavaScript files as binaries (#1635)
  • Message Archive Management refactoring (#1425)
  • Documentation fixes and improvements (#1500, #1503, #1513, #1538, #1550, #1563, #1567, #1568, #1577, #1579, #1581, #1584, #1586, #1592, #1594, #1618)
  • Tests improvements and refactoring (#1523, #1625, #1642, #1643, #1656)
  • Code & style improvements (#1515, #1540, #1548, #1572)

Commits, merged PRs and closed issues

Special thanks to our contributors: @andrewvmail @igors !

MongooseIM 2.1.0 - 2017-10-24

Added

  • OTP 20 compatibility (#1430)
  • Message Archive Management v0.6 support (#1442, #1471)
  • Final stage of Mongoose Accumulators implementation (#1398, #1512)
  • REST API: MUC Light rooms can be created with a specified username part (#1387)
  • REST API: MUC Light rooms can be addressed with a bare JID (not only with their usernames) (#1417)
  • REST API: MUC Light rooms can be destroyed (#1461)
  • MAM can be configured to archive XEP-0333 Chat Markers (#1377)
  • mod_http_upload_s3 can be configured to skip the ACL header (so MIM can integrate with Minio) (#1415)
  • Administration REST API can be protected with the Basic HTTP Authentication (#1453)
  • More configuration options for JWT authentication backend (#1321)
  • (Un)Subscribing to many hooks with a single function call (#1376, #1426)
  • New ejabberd_router:route_error_reply/4 function (#1427)
  • mongoose_commands can accept lists of elements as an argument (#1465)

Changed

  • Switched back to strictly monotonous MAM message IDs (#1372)
  • MongooseIM will not start if the ODBC connection is configured but no ODBC pools are defined (#1455)
  • SASL X-OAUTH mechanism is not advertised if mod_auth_token is not enabled (#1450)
  • ejabberd_auth:authorize/1 is now used for authorisation in client REST API (#1409)
  • DNS lookup is not performed for the S2S connection if the host is already defined in the configuration (#1314)

Fixed

  • Fix RDBMS backoff calculation (#1394)
  • URL escaping and reporting in mod_http_upload (#1391)
  • Fixed Unicode support in the MAM full text search with a Riak backend (#1407)
  • Authentication crash with SASL PLAIN and an invalid password (#1433)
  • Random crashes in tests (#1374, #1428)
  • mongooseim version command was broken (#1457)

Other

  • Documentation fixes and improvements (#1373, #1380, #1382, #1385, #1396, #1399, #1402, #1408, #1416, #1418, #1434, #1441, #1445, #1451, #1456, #1468, #1469, #1472, #1475, #1477, #1480, #1482, #1483, #1484, #1485, #1486, #1487, #1488, #1489, #1490, #1492, #1493, #1494, #1495, #1496, #1498, #1499, #1501, #1502, #1503, #1504, #1506, #1507, #1508, #1532, #1534)
  • First stage of mod_mam and its submodules' refactoring (#1381)
  • Tests improvements and refactoring (#1383, #1388)
  • Improved coverage check (#1397)
  • Build system & scripts improvements (#1412, #1422, #1448)
  • Code & style improvements (#1454)
  • Updated dependency: cqerl (#1447)

Commits, merged PRs and closed issues

Special thanks to our contributors: @Beisenbek, @benkard, @deadjdona, @fblackburn1 !

Added

  • Roster management in client REST API (#1286)
  • Silent push notifications (#1287)
  • RSM support in mod_vcard (#978)
  • MAM can be configured to archive (or not) groupchat messages in private archives (#1294)
  • New command in mongooseimctl (#1256)
  • Extended mod_roster backends' API (#1302)
  • A warning is logged, when a module links to caller process on startup (#1247)

Changed

  • now() calls have been replaced with alternatives in p1_time_compat (#1246)
  • Stanza size limit is now checked while parsing the stanza (#1285)
  • mongoose_acc extended lifespan; supported by more hooks. (#1211, #1306)
  • crypto:rand_bytes/1 calls have been replaced with crypto:strong_rand_bytes/1 (#1348)

Fixed

  • Improved error handling in C2S (#1264)
  • MAM + MUC Light integration (#1270)
  • Push nodes discovery and handling in mod_pubsub (#1272)
  • BOSH interleaving logic (#1289)
  • Error presence handling in MUC (#1307)
  • Race condition between mod_caps and PEP (#1301)
  • Minor bugs in Service Discovery (#1303)

Other

  • Expanded, better tests and improved coverage (#645, #1241, #1278, #1291)
  • Ensured OTP 19.3 support. (#1251)
  • Configuration improvement (#1296, #1299)
  • Refactored many modules to satisfy our coding standards. (#1254, #1259)
  • Many improvements and fixes in MongooseIM documentation. (#1242, #1243, #1253, #1260, #1261, #1262, #1271, #1279, #1282, #1284, #1288, #1292, #1293, #1295, #1297, #1298, #1303, #1304, #1310, #1318, #1319, #1320, #1323, #1324, #1326, #1332, #1333, #1334, #1336, #1345)
  • Build improvements and fixes (#1258, #1266, #1300, #1309, #1315, #1335, #1355)

Commits, merged PRs and closed issues

Special thanks to our contributors: @astro @strugee @msantos @daniel-e @deadjdona !

Added

Changed

  • build system to rebar3 #1033
  • hooks implementation
    • all hooks have now fold semantic (returned value is passed from hendler to handler) #1149
    • result from a hook run is passed between different hooks #1174, #1194, #1202, #1220
  • RDBMS pools configuration: #1217
    • this is backward incompatible - requires change in config file
  • shapers implementation: #1213
    • this lead to some race condition bug fixes

Fixed

  • handling of TLS options for S2S connections #1182
  • deadlock between mod_muc and mod_muc_log #1219
  • fix for uncleaned resumed sessions #1186

Other

Special thanks to our contributors: @astro, @aszlig

This release repo history

MongooseIM 2.0.1

2017-01-24

This release includes:

Special thanks to our contributors: @kenstir, @sstrigler, @igors, @bernardd, @msantos

This release repo history

MongooseIM 2.0.0

2016-11-08

This release includes:

Special thanks to our contributors: @kenstir, @marktran, @svarlamov, @igors, @bernardd

This release repo history

MongooseIM 2.0.0beta2

2016-08-29

This release includes:

Special thanks to our contributors: @bernardd, @igors, @arkdro

This release repo history

MongooseIM 2.0.0beta1

2016-06-28

This release includes:

Special thanks to our contributors: @zsuidakra, @arkdro, @bernardd, @kshamko

This release repo history

MongooseIM 1.6.2

2016-02-12

This release includes:

Special thanks to our contributors: @gbour, @bartekgorny, @jfjalburquerque

This release repo history

MongooseIM 1.6.1

2015-12-07

This release includes:

Special thanks to our contributors: @ppikula, @dharamgollapudi

This release repo history

MongooseIM 1.6.0

2015-10-15

This release includes:

  • Riak backends for the following modules:
    • authentication #378
    • VCard #460
    • Private XML Storage #445
    • MAM (one-to-one only) #452
  • Improved and extended metrics
    • metrics based on hooks #354
    • exometer instead of folsom #365
    • automatic metrics for specified function in backend modules #412
    • optionally start exometer graphite reporter via app.config file #481
    • authentication related metrics #488
    • MongooseIM node uptime metric #525
  • Merging of ejabberd_tests repo into MongooseIM #482,#509
  • Improved Redis backend for sessions #422
  • Tons of refactoring:
    • authentication mechanism #426
    • ejabberd_c2s #364,#463,#465,#495
    • simplified MAM #438
      • removed dead code
      • removed async_writer as it was special case of async_pool_writer
      • mod_mam_odbc_server_user and mod_mam_odbc_user have been merged into one module
  • XMPP improvements:
    • removed obsolete XEP-0091 timestamp #383
    • omit some features when STARTTLS is required #498
    • add XEP-0202: Entity Time #510
    • BOSH - accept a higher hold attribute than one #511
    • remove obsolete namespace from mediated invitation stanza #513
  • other improvements:

Special thanks to our contributors: @rgrinberg, @vooolll, @syhpoon, @mweibel, @Stelminator, @larshesel, @ruanpienaar, @aszlig, @jonathanve, @gmodarelli

This release repo history

MongooseIM 1.5.1

2015-04-02

This release includes:

MongooseIM 1.5.0

2014-12-02

This release:

MongooseIM 1.4.0

2014-05-20

!! requires users table schema update for MySQL and PostgreSQL: 68b790c !!

  • improves security #196:
    • support for DH and ECDH key exchange protocol
    • configurable list of allowed cipher suites
  • uses travis-ci.org with our test suite
  • fixes privacy lists removal after user deletion - #186
  • fixes roster versioning issue #199
  • fixes multi-invite bug in MUC - #180
  • other code improvements and small fixes

MongooseIM 1.3.2

2014-04-15

zlib driver configuration (in c2s or s2s section) takes new parameter which is max size of decompressed data

  • unified logic for modules (use option backend in module config section with possible values mnesia (default) or odbc):

    • mod_privacy
    • mod_private
    • mod_offline
  • max_connections parameter for ejabberd_cowboy listener

  • improved BOSH implementation

  • improved vCard search mechanism

  • other small fixes/improvements

MongooseIM 1.3.1

2014-02-21

  • port XEP-0114 (ejabberd_service)
  • port LDAP vCard support
  • port LDAP Shared Roster support
  • finalize project rename to MongooseIM by changing scripts names

MongooseIM 1.3.0

2014-01-28

  • added XEP-0313: Message Archive Management support (mod_mam)
  • port LDAP authentication from ejabberd
  • added PostgreSQL support
  • disable SSL 2.0 support
  • disable old unsafe ciphers
  • make the repo includable as a rebar dependency
  • use #xmlel{} instead of {xmlel, ...} in the whole codebase

MongooseIM 1.2.2

2013-05-23

  • use upstream lager
  • added CHANGELOG file
  • replace exml tuples with record
  • don't use binaries in ejabberd.cfg
  • add support for alarms #82

MongooseIM 1.2.1

2013-05-15

  • Folsom metrics improvements
  • REST interface for accessing metrics
  • BOSH fixes
  • Don't allow session to hang forever after pause

MongooseIM 1.2.0

2013-05-12

We've also assured compatibility with the latest ejabberd Community Edition by ProcessOne, so that backporting ejabberd modules to MongooseIM requires less effort.

MongooseIM 1.1.0

2012-12-04

  • list to binary conversion
  • Multi-User Chat (MUC) fixes and cleanups
  • style and indentation fixes
  • change logger to lager

MongooseIM 1.0.0

2012-07-10

  • remove tsung from source tree
  • add ejabberdctl with admin and admin_extra commands
  • add devrel target
  • binarise remaining modules
  • fix p1_fsm get_status handler

MongooseIM 0.9.0

2012-05-21

  • add makefile target that downloads rebar
  • re-added mod_offline & mod_last_odbc & mod_sic
  • continue transition to binaries instead of strings and remove no ported modules:
    • ejabberd_http
    • ejabberd_http_bind
    • ejabberd_http_poll
    • mod_http_bind
    • mod_adhoc
    • mod_announce
    • mod_blocking
    • mod_configure
    • mod_configure2
    • mod_disco
    • mod_echo
    • mod_http_fileserver
    • mod_last
    • mod_muc,
    • mod_muc_log
    • mod_offline_odbc
    • mod_ping
    • mod_pres_counter
    • mod_privacy_odbc
    • mod_private
    • mod_proxy65
    • mod_pubsub
    • mod_register_web
    • mod_roster_odbc
    • mod_service
    • mod_shared_roster
    • mod_shared_roster_ldap
    • mod_stats
    • mod_timea
    • mod_vcard
    • mod_vcard_odbc
    • mod_vcard_xupdate
    • mod_version

MongooseIM 0.1.0-pre

2012-04-17

  • rebarify
  • add escalus tests
  • binarise core modules
  • dialyzer support
  • change table copy type of acl, config, local_config to ram_copies