Tigase XMPP Server 5.0.0-b2103 Beta
I am happy to announce release of a new version of the Tigase XMPP Server. This is the first version of the 5.x line and the code is still under intensive tests. As most of the tests are already passed and the code runs on a few live installations I consider this to be Beta ready.
Changelog list is quite long and modifications fall into a few categories:
- A new implementation for handling external components connections, supporting XEP-0114, XEP-0225, with protocol auto-detection, multiple connections on a single port, multiple connections for a single external domain, etc…..
- Full support for stringprep added. The use of the full stringprep processor is optional (off by default) and the JID processing can be changed via pluggable framework. 3 processors available now: full stringprep - very resources expensive, simple (regex based) - default, empty - no processing at all.
- Roster changes: fixed issue with buddy name set to 'null' in some cases , multiple roster elements are now allowed for set requests, stringprep optimisations, support for extended buddy information to be stored with roster data in DB.
- Fixed a problem with s2s connections for external components connected to the server - they are automatically detected by s2s component and all the traffic is routed properly
- Fixed problem with not sending stream closing tag in some cases when the connection to the client is closed
- Fixed rare issue occurring if there are multiple user connections with the same resource that the older connection with the resource was not closed.
- Number of bug fixes and optimisations in s2s implementation, still no TLS support yet though.
- Stream compression can be now activated at any time, it is up to the client to decide
- Server configuration code reworked, fixed an old issue with init.properties and tigase.xml configuration files, tigase.xml is no longer used by default (still possible though), configuration can be stored in the database and configuration management available via ad-hoc commands and scripting API.
- Configurable packet filtering for every component separately can be loaded as plugins (and API)
- MySQL schema and stored procedures updates for UTF-8 encoding, changed a last_login, last_logout fields default values from 0 to some correct and sensible value.
- To overcome problems with packets order on some system there is a configuration option to not use priority queues which may sometimes cause packet reordering.
- Scripting API reworked, this is not the server built-in core feature and the scripting feature is now available to all components automatically
- Component repository API - an easy to use framework for tigase component developers to store certain kind of data in database - the data can be also manipulated via ad-hoc commands and scripting
- Added secure logging mode for XMPP stanzas to prevent privacy issue - XML element CData is replaced with text: 'CDATA size: NNN'
- A new API for component tasks added - based on Java TimeoutTask but a single thread controls all the component tasks
- Lots of JavaDoc documentation has been added and online guides on the website
- All the core Tigase code to use new JID and BareJID classes instead of String
- Packet API changed to optimise ways stanza to/from addresses (JIDs) are used.
- New SM plugging processors API introduced and an abstract class which make it very easy to follow packet flow. This is to avoid confusing detection where from, where to the packet is going (from the user, to the user, to the server….)
- User registration code changed to allow for storing any kind registration data, the user can provide an extended form with additional fields and they all are stored in the DB
Other bug fixes:
- Packet tracer experimental feature disabled by default
- Hourly server statistics dumping to file commented out - a new configurable code coming up in the next version
- Number of fixes in the tigase.io package, solved a few issues with TLS layer, memory leaks in case of large buffers sending via TLS fixed, solved issue with high CPU usage if the TCP/IP connection is broken but not closed.
- Stream compression slow roster loading issue fixed - large stanzas are now split into smaller block of 2048 bytes each before it is compressed.
- Fixed a bug with multiple starttls requests causing the server overload
As you can see, the main focus for the version was put on to the server core, API changes to make the code more extensible and flexible. It is now much easier to develop new components and plugins using for the Tigase server.
Feel free to check it out and send me your comments. All the issues, bug, features requests can be recorded using the tracking system.