Wildfire Changelog

2.4.4 -- January 26, 2006

## New Features

- [JM-539] - Improved performance by removing superfluous #toLowercase.
- [JM-549] - Added tab character as a possible hearbeat sent by clients.
- [JM-546] - Updated French translation.

## Bug Fixes

- [JM-544] - Fixed endless loop when a remote user sends a packet to a nonexistent address.
- [JM-545] - Fixed cross-site scripting in admin console.
- [JM-542] - Local subdomains were not being validated when using server dialback.
- [JM-543] - No stream:error was being returned when TLS is not available for s2s.
- [JM-535] - Fixed NullPointerException in AuditLog.
- [JM-536] - Fixed NullPointerException when address is of type "noreply".
- [JM-538] - Fixed NullPointerException when processing IQ roster packet of a closed session.
- [JM-540] - Fixed NullPointerException in RoutingTableImpl.
- [JM-548] - Component and s2s connections were not being correctly closed when shutting down the server.
- [JM-547] - Oracle script for updating to 2.2 version failed to add new columns.
- [JM-550] - Never overwrite the wildfire.xml file when upgrading.

2.4.3 -- January 19, 2006

## New Features

- [JM-519] - Throttled PAM auth to handle high load.
- [JM-534] - Updated Chinese translation.
- [JM-522] - Refactored network interface properties into a single value.

## Bug Fixes

- [JM-525] - Fixed error where the server could end up in an invalid state.
- [JM-526] - Registry of directed presences could get messed up under heavy load.
- [JM-531] - Room occupants could remain in the room after they left the room.
- [JM-529] - MUCUsers were being kept in memory even when the user is not present in any room.
- [JM-530] - MUCRoomImpl was not releasing cached occupants from occupantsByFullJID.
- [JM-500] - XHTML content was being stripped. (4 votes)
- [JM-510] - Deleting user did not clean up all data. (1 vote)
- [JM-520] - Allowed group members to include the '_' character. (3 votes)
- [JM-521] - Audit log timestamp did not use correct time zone.
- [JM-527] - Registry of directed presences could contain empty entries.
- [JM-528] - Unavailable directed presences could be broadcasted more than once.
- [JM-524] - DB2 Scripts did not work with WildFire.
- [JM-532] - The activation.jar file included in Wildfire 2.4.2 was corrupted.
- [JM-533] - Help link was broken for plugins.

2.4.2 -- January 13, 2006

## New Features

- [JM-517] - Updated Czech translation.

## Bug Fixes

- [JM-515] - Fixed packing error that "corrupted" mail.jar file.
- [JM-516] - JAR files were not being removed when uninstalling the application.
- [JM-518] - Fixed encoding problem when saving wildfire.xml.

! Note for upgraders: The default trust store has been updated to include a CACert.org certificate. To upgrade your existing trust store, refer to KB 492.

2.4.1 -- January 12, 2006

## New Features

- [JM-395] - Added support for s2s TLS security. (10 votes)
- [JM-396] - Added support for s2s SASL authentication. (8 votes)
- [JM-514] - Added support for s2s compression.
- [JM-501] - Added support for JEP-33: Extended Stanza Addressing.
- [JM-503] - Added script for viewing embedded db.
- [JM-507] - Pack200 is now used to reduce download size.

## Bug Fixes

- [JM-429] - Exposed in the Admin Console TLS and SASL configurations. (3 votes)
- [JM-502] - Multiple clients trying to connect at once could fail to connect.
- [JM-511] - Larger max number of connections in embedded database.
- [JM-493] - Used JZLib for stream compression.
- [JM-498] - Fixed SQL Server issue with DefaultGroupProvider.
- [JM-504] - Creating accounts failed under Pandion.
- [JM-512] - Retrieving next batch of users in User Manager threw exception in SqlServer.

2.4.0 -- December 15, 2005

## New Features

- [JM-480] - Server performance was optimized.
- [JM-333] - Added support for JEP-0138 (stream compression). (1 vote)
- [JM-486] - Added support for closing idle c2s connections. (4 votes)
- [JM-479] - Upgraded to JDK 1.5.0_06

## Bug Fixes

- [JM-490] - When a group was not found in LDAP an exception was not being thrown.
- [JM-491] - Packets for remote servers were sometimes lost.
- [JM-483] - Kicking old client due to resource conflict was not letting the new client log into the server.
- [JM-481] - Last packet sent before closing the client connection was not being processed.
- [JM-482] - An empty roster is now returned when anonymous user requests their rosters.
- [JM-484] - IQ packets of type <auth> and <register> were not being offered when TLS was disabled.
- [JM-488] - Fixed problem where threads may wait forever trying to obtain a db connection from the pool.
- [JM-487] - JDBC drivers were upgraded.
- [JM-485] - Source build was failing.

2.3.1 -- December 1, 2005

## New Features

- [JM-476] - Server performance was optimized.
- [JM-210] - Groups can now hold JIDs. (10 votes)
- [JM-477] - Added support for sending IQ requests and processing IQ results.
- [JM-465] - Replaced presence icons with ones from Spark.

## Bug Fixes

- [JM-475] - Unavailable presences are no longer sent when unsubscribing from a contact that previously received a directed presence.
- [JM-466] - Direct presences were not being cleaned up for some sessions.
- [JM-467] - Messages of type groupchat, error or headline are no longer being stored offline.
- [JM-468] - Fixed SQL Server issue with DefaultUserProvider.
- [JM-469] - Time zone was not being persisted.
- [JM-470] - Fixed concurrency issues in room history.
- [JM-472] - Directed presences were not being tracked for some JIDs.
- [JM-473] - Packets were not being sent to remote servers when subdomain matched a component domain.
- [JM-478] - Roster items with subscription NONE were being created when removing a contact.
- [JM-474] - Fixed error when adding the same user to group twice.

2.3.0 -- November 17, 2005

## New Features

- [JM-387] - Added TLS support for client sessions. Thanks to Hao Chen.
- [JM-7] - Added SASL support and resource binding for client sessions. Thanks to Hao Chen. (7 votes)
- [JM-388] - Added Session Establishment support.
- [JM-201] - Added support for PAM authentication. (4 votes)
- [JM-347] - Added session event support. Thanks to Conor Hayes.
- [JM-416] - Creation of connections to remote servers is now asynchronous.
- [JM-409] - Connection timeout to remote servers is now configurable. (1 vote)
- [JM-411] - SASL authentication is now offered before TLS is negotiated.
- [JM-121] - VCARDs can now be populated from LDAP info. (19 votes)
- [JM-458] - LDAP searches now include wildcard by default.
- [JM-450] - Added support for JEP-50: Ad-hoc commands.
- [JM-425] - Delete operation was implemented for POP3 provider.
- [JM-417] - Value of 'to' attribute of stream headers is now validated.
- [JM-252] - Added Spanish translation. Thanks to Jorge Merlino.
- [JM-403] - Added support for setting time zone.
- [JM-437] - Added packet extension to indicate when a group is a shared group. (1 vote)
- [JM-444] - Removed restarting requirement from setup tool.
- [JM-421] - Converted admin console to use Sitemesh. (1 vote)
- [JM-365] - Added support for PNG plugin icons. (1 vote)
- [JM-435] - Added mime.types file to build.
- [JM-408] - Upgraded to JDK 1.5.0_05.

## Bug Fixes

- [JM-322] - Simplified admin account creation in setup. (2 votes)
- [JM-446] - Modified way admins were being specified in wildfire.xml
- [JM-442] - Fixed shared group problem where contacts may incorrectly appear as offline.
- [JM-451] - Members added to shared groups did not have correct presence subscription status in some cases.
- [JM-463] - Couldn't add a contact to a group if the group matched the name of a shared group.
- [JM-427] - Users of remote servers could incorrectly appear in shared groups.
- [JM-430] - Fixed cross-site scripting attack in the login form. (1 vote)
- [JM-439] - Fixed exception when sending last presence with no TO attribute.
- [JM-436] - Room occupants can now exchange IQ packets.
- [JM-440] - Room occupants can now exchange disco packets.
- [JM-447] - IQ packets of type result sent to the MUC service are now ignored.
- [JM-456] - Not-allowed error is now returned when room creation is restricted.
- [JM-464] - Server was ignoring room invitations when message contained many invitations.
- [JM-424] - Replaced XMPPBootServlet with context listener. (1 vote)
- [JM-443] - "Launch Admin" button in launcher now works if only secure port is enabled.
- [JM-432] - Wildfire was not handling different web types (flash, applets, etc.).
- [JM-452] - Invalid show value in Presence packet was breaking the admin console.
- [JM-455] - Fixed concurrency error when getting room history.
- [JM-457] - Stream header was not being added when sending some stream errors.
- [JM-461] - Fixed bug in getXMLProperties()
- [JM-401] - Presence plugin includes new icons. Fixed licensing problem.
- [JM-204] - Installer no longer overwrites keystore or config file. (4 votes)
- [JM-383] - Default port used for server dialback is now configurable. (1 vote)
- [JM-406] - Route to subdomains of remote servers was not being removed.
- [JM-407] - Remote servers were not able to connect to subdomains of the local server.
- [JM-410] - Server identity updated to follow Jabber Registrar.
- [JM-413] - Trillian was not able to authenticate using SASL.
- [JM-415] - Sending packets from a subdomain to a remote server was not working.
- [JM-418] - An error is now returned when it is not possible to send packets to remote servers.
- [JM-422] - Broken connections could freeze the server.
- [JM-423] - The returned size in bytes of offline messages of a user could be incorrect. Thanks to Conor Hayes.
- [JM-428] - Remote users could broadcast messages faking local users.
- [JM-385] - Fixed exception in Roster when contact has no username. Thanks to Nathan Palmer.
- [JM-389] - Fixed wildfired script to have unix line endings. (1 vote)
- [JM-426] - Fixed post-install script.
- [JM-390] - Fixed sessions summary page to show its inline help.
- [JM-392] - Fixed exception when removing the same item from the roster twice. Thanks to Nathan Palmer.
- [JM-459] - Allowed GenericServlet support in plugins.

2.2.2 -- September 19, 2005

## Bug Fixes

- [JM-397] - Fixed built-in certificates that were recently expired.

2.2.1 -- September 1, 2005

## New Features

- [JM-274] - Added POP3 authentication. Thanks to Sean Meiners.
- [JM-374] - Added inline help to the admin console.
- [JM-363] - Updated database libs to the latest releases.

## Bug Fixes

- [JM-357] - Fixed problem when loading group properties whose key or value was null.
- [JM-359] - Fixed case sensitive problem that prevented loading of plugins. (3 votes)
- [JM-360] - Fixed parsing of dates that may freeze the server.
- [JM-361] - When s2s is disabled, the server will no longer attempt to send packets to remote servers.
- [JM-364] - Reading XML using SAXParser was not thread safe. (1 vote)
- [JM-366] - Handling of offline messages was using a 0-12 hour format.
- [JM-368] - Import and export users plugin now uses complete roster item JID instead of just the JID's node.
- [JM-371] - Fixed wildfireHome location code.
- [JM-372] - Fixed Packet.getError() to return correct XML.
- [JM-375] - Fixed packet routing between components.
- [JM-376] - The bin/extra directory was missing for the Unix builds.
- [JM-378] - Added escaping of usernames in LdapGroupProvider
- [JM-380] - Added validation of IP address in accept list. (1 vote)
- [JM-381] - IQ packets with node or resource not null may now be routed to components.
- [JM-377] - Changed ldap.posixEnabled to ldap.posixMode.

2.2.0 -- August 2, 2005

## New Features

- [JM-5] - Added support for external components. (3 votes)
- [JM-6] - Added server to server (S2S) support. (28 votes)
- [JM-8] - Added support for JEP-0013, better offline messages. (2 votes)
- [JM-71] - Added support for application server deployments. (1 vote)
- [JM-129] - LDAP groups are now supported. (14 votes)
- [JM-154] - Added the ability to restrict anonymous connections. (1 vote)
- [JM-172] - Added property listeners.
- [JM-225] - Add support for reserved nicknames in MUC. (3 votes)
- [JM-234] - Added a servlet to show online status. (1 vote)
- [JM-300] - Plugin readme and changelog files are now shown in the admin console.
- [JM-308] - Room registration can now be deactivated. (1 vote)
- [JM-311] - Added support for JEP-0012: Last Activity.
- [JM-312] - Messages sent to the server hostname can now be forwarded to a configurable set of JID's.
- [JM-313] - Improved behavior for rejection of messages by PacketInterceptors. (1 vote)
- [JM-317] - Upgraded to the latest JVM release, 1.5.0_04.
- [JM-319] - Added additional plugin meta-data.
- [JM-320] - Enabling or modifying listeners ports no longer requires a server restart.
- [JM-326] - The "rows per page" shown in the admin console is now saved.
- [JM-328] - The folder for audit files is now configurable.
- [JM-339] - The vCard backend storage module is now pluggable.
- [JM-330] - Auditing of packets may ignore certain users
- [JM-336] - Added support for child plugins.
- [JM-340] - Invalid presence type is now a warning instead of an error.
- [JM-350] - The AuthCheckFilter can now be configured programmatically.

## Bug Fixes

- [JM-125] - Password changes failed when inbound registration was disabled. (4 votes)
- [JM-190] - Presence Subscriptions were not being cancelled when removing a roster item. (2 votes)
- [JM-288] - Multiple unlimited roster auth requests are no longer allowed (fixes an issue with Psi). (1 vote)
- [JM-301] - Increased the max size of the server name in the admin console.
- [JM-302] - The System Properties field was truncated for large values.
- [JM-309] - Fixed UserEventListner Javadocs.
- [JM-310] - Fixed JEP-0082 (date/time profile) for a few cases. (1 vote)
- [JM-315] - The Group constructor is now public, which makes writing GroupProvider implementations easier.
- [JM-321] - Unloading plugins with JSP pages was failing.
- [JM-327] - Clients sending an end of stream was not closing the connection
- [JM-329] - Fixed an error when closing and establishing a new connection immediately.
- [JM-332] - Fixed an error where closing a component connection caused an end of stream twice.
- [JM-337] - Offline messages are no longer stored for remote users.
- [JM-338] - Fixed vCard implementation, which was causing information to be lost or mixed up. (1 vote)
- [JM-344] - Fixed LDAP group bugs. (2 votes)
- [JM-346] - Use specific DiscoProviders when a disco request includes a node.
- [JM-348] - Fixed problem with s2s when the remote hostname looked like a subdomain of the local host.
- [JM-352] - Restricting logins was not handling IP addresses correctly.

2.1.5 -- June 14, 2005

## New Features

- [JM-307] - Added Portuguese-Brazilian translation of the admin console.

## Bug Fixes

- [JM-303] - Fixed SSL LDAP support.
- [JM-304] - Fixed error when anonymous user changes his presence priority.
- [JM-306] - GAIM SSL connections now work.

2.1.4 -- June 2, 2005

## New Features

- [JM-230] - Added support for JID escaping, which helps with LDAP. (1 vote)
- [JM-273] - Added email service.
- [JM-280] - Added support for discovering information about a user's bare JID address.
- [JM-287] - Added French translation of the admin console.
- [JM-289] - Added auto-refresh option to the session page. (2 votes)

## Bug Fixes

- [JM-268] - Improved drag and drop support in the launcher.
- [JM-269] - Drag and drop installation of plugins was broken.
- [JM-270] - Setting vCard data could fail.
- [JM-271] - Fixed bug where adding a packet interceptor would cause IndexOutOfBoundsException
- [JM-275] - vCard properties can now be deleted.
- [JM-276] - Fixed concurreny problem when user connected from more than one resource.
- [JM-277] - Fixed concurreny problem managing properies of users and groups.
- [JM-278] - The server now sends a stream:error conflict when a resource conflict exists.
- [JM-279] - Sending a room invitation to an offline was closing the inviter's connection.
- [JM-282] - Closing many connections concurrently could produce a deadlock in some circumstances.
- [JM-283] - Group chat room creation now prevents invalid room IDs.
- [JM-284] - Fixed concurreny problem managing directed presences.
- [JM-286] - Fixed some words that were still hardcoded in English in the admin console.
- [JM-290] - Invalid JIDs were not always being detected
- [JM-293] - The setup tool now enforces a min database connection pool size.
- [JM-297] - Added logic to detect and forcibly shut down dead sockets.
- [JM-299] - Fixed error loading room history when using MS-SQL.

2.1.3 -- April 22, 2005

## New Features

- [JM-151] - Added servlet support to plugins. (1 vote)
- [JM-196] - Added support for drag and drop installation of plugins into the launcher.
- [JM-198] - Java VM information and memory usage is now shown in the admin console.
- [JM-200] - Addressed several bottlenecks in the server, increasing performance by several hundred percent.
- [JM-202] - Improved performance by replacing StringBuffer with StringBuilder.
- [JM-203] - Optimized login and authentication process.
- [JM-207] - Added an "open permissions" mode to the broadcast plugin. (1 vote)
- [JM-209] - Admin console ports can now be disabled.
- [JM-218] - Added support for packet interceptors to the core API.
- [JM-223] - The embedded http server can now filter the addresses allowed to connect.
- [JM-226] - Updated bundled JRE to 1.5.0_02 with the server VM.
- [JM-227] - The packet classes are now Javadoced.
- [JM-231] - Added support for new locales: Czech, Deutsch and Nederlands.
- [JM-232] - Added property listener support.
- [JM-233] - Improved the protocol support document.
- [JM-246] - Added user events.
- [JM-247] - Search results can now be paginated.

## Bug Fixes

- [JM-189] - LDAP users were able to log in with no password in some cases. (2 votes)
- [JM-197] - Some words in the admin tool weren't internationalized.
- [JM-205] - User editing did not honor optional status of name/email fields.
- [JM-208] - The redhat-postinstall.sh script had an extra 's'.
- [JM-211] - IQRouter#addHandler needed to send #initialize to the new handler.
- [JM-212] - Fixed NPE when trying to get the vCard of an anonymous user.
- [JM-213] - IQ packets of type ERROR now include the original child element.
- [JM-214] - Removed logging of a warn message when the server receives an IQ of type result with no child element.
- [JM-215] - IQRegister now returns an error packet if the registration fails for any reason.
- [JM-217] - The default session for a bare JID was not being updated when a session became available.
- [JM-219] - Changes to admin ports in the admin console were being lost.
- [JM-220] - The admin console did not allow setting the https port.
- [JM-221] - Made getUserProvider() public.
- [JM-224] - Overriding sidebar elements in the admin console was not working.
- [JM-229] - Enabling sharing group did not select an option by default.
- [JM-238] - Shared items could incorrectly stay in the roster.
- [JM-243] - Sessions with no resource caused problems.
- [JM-244] - Wildfire can now send IQ packets to active but unavailable resources.
- [JM-245] - Updated the installer version, which fixes several bugs.
- [JM-248] - Moved JiveGlobals to org.jivesoftware.util and made it more generic.
- [JM-249] - Only set the sender of the packets when using ClientSessions.
- [JM-250] - Packets directed to a component's address are now passed to the component.
- [JM-251] - Moved PropertyEventDispatcher and PropertyEventListener to org.jivesoftware.util.
- [JM-254] - Presence updates are no longer sent when changing the permission level of a group member.
- [JM-255] - Shared contacts disappeared when removing a user from a public group.
- [JM-256] - Added recovery logic when sending a packet over a connection fails.
- [JM-257] - Fixed concurreny problem while broadcasting a message.
- [JM-258] - Improved error reporting when binding to ports fails.
- [JM-259] - The launcher now works in Windows 2000 and Windows 2003 and console output is now shown in the launcher.
- [JM-260] - Fixed authentication redirect for plugins for expired sessions.
- [JM-261] - Storage of user properties were based on name not username.
- [JM-262] - SessionManager#sendServerMessage was not storing messages for offline users.
- [JM-263] - Size of "jid" field in mucAffiliation and mucMember tables was too long in MS-SQL.
- [JM-264] - Modified the error code returned when max number of occupants has been reached in a MUC room.
- [JM-265] - The offline strategy was filtering the wrong packets.
- [JM-267] - An unavailable presence is now sent to the user after leaving a MUC room. This fixes a bug GAIM users were running into.

2.1.2 -- March 6, 2005

## New Features

- [JM-69] - Plugins can now be managed in the admin console.
- [JM-122] - Added search capabilities to UserManager. (1 vote)
- [JM-130] - Added LDAP search filters. (6 votes)
- [JM-146] - Added disco support for components. (3 votes)
- [JM-156] - Full resource bundle support is now included, along with a Chinese translation.
- [JM-161] - Users loaded from LDAP can now be sorted, either server-side or client-side with a property enabled.
- [JM-176] - Improved plugin API and management.
- [JM-178] - The admin console now supports https connections. (1 vote)
- [JM-182] - Preferred language can now be selected during setup.
- [JM-183] - The last unavailable presence value for users is now stored. (2 votes)
- [JM-185] - Improved UI of the user browser in the admin console.

## Bug Fixes

- [JM-58] - Plugin build process failed with multiple plugins.
- [JM-86] - Extended presence info is now preserved in group chats.
- [JM-126] - Improved Linux install process.
- [JM-145] - Server was not sending closing </stream>.
- [JM-147] - Offline messages had incorrect jabber:x:delay information.
- [JM-148] - Shared groups that were publicly visible were having problem seeing other shared groups. (3 votes)
- [JM-150] - Group names did not allow spaces.
- [JM-152] - Fixed LDAP SSL support.
- [JM-153] - Fixed exception on auditor close.
- [JM-155] - Improved the "Illegal JID format" error.
- [JM-157] - The option element in data forms had an empty namespace in the XML representation.
- [JM-158] - Shared group members were not showing corectly in some cases.
- [JM-159] - Admin console port was not being read from the XML config file.
- [JM-162] - Fixed bug preventing Psi clients from connecting to the server.
- [JM-164] - Plugins could fail due to external DTD validation.
- [JM-165] - Encoding of log files was wrong.
- [JM-166] - Directed presences was not working for anonymous users.
- [JM-167] - Server was hanging under load due to trying to read a resource bundle when creating a new connection.
- [JM-168] - Adding a new contact to the roster was not honoring the contact's domain.
- [JM-174] - The from attribute of presence probes is now a full JID.
- [JM-175] - Improved plugin build process to copy .jar.
- [JM-177] - Fixed bug where stopping the server when users are connected was generating an exception.
- [JM-179] - Shared groups no longer send packets for subscription type FROM.
- [JM-181] - Add resources\i18n directory to release.
- [JM-186] - Fixed bug where renaming nickname of a group chat occupant was generating an error.
- [JM-187] - Viewing the session details of an anonymous session was causing an exception.
- [JM-188] - Removing roster items for a foreign contact was generating an error.
- [JM-190] - Presence subscriptions were not being cancelled when removing a roster item.

2.1.1 -- January 30, 2005

## New Features

- [JM-103] - Added support for Delayed Delivery (JEP-0091)

## Bug Fixes

- [JM-12] - Don't display shutdown message by default
- [JM-57] - Fixed web.xml generation during build process.
- [JM-72] - Added caching to offline message storage operations.
- [JM-120] - Shut down embedded database at end of setup.
- [JM-124] - Fixed exception using upper-case usernames to login.
- [JM-128] - Marking users as group admins now works.
- [JM-131] - Pagination now works on group pages.
- [JM-134] - Fixed Exception when sorting users on the user summary page.
- [JM-136] - Search result bug fixed.
- [JM-137] - Updated the multicast DNS name.
- [JM-138] - Refactored IQ Handler to make it more usable by plugins.
- [JM-139] - Auditor file now uses UTF-8 as the character encoding.
- [JM-140] - Initial presence was not being sent after connecting the same user from many resources.
- [JM-141] - Fixed minor problems in group edit page.
- [JM-142] - Incorrect items were being added to the roster when using shared groups
- [JM-144] - Fixed DB2 Schema issues.
- [JM-143] - Bug fixes and new features in the shared groups feature.
- [JM-132] - Results from LDAP are now sorted when the LDAP server supports it.
- [JM-135] - Packet extensions now kept with group chat room invitations.

2.1.0 -- January 15, 2005

## New Features

- [JM-1] - Flash XML streams are now supported.
- [JM-10] - LDAP can now be used for authentication and user information. (3 votes)
- [JM-21] - Created plugin to let users easily broadcast messages to groups. (2 votes)
- [JM-22] - Groups can now be automatically added to group member's rosters. (10 votes)
- [JM-24] - The lib directory can now be specified using the "wildfire.lib.dir" Java system property.
- [JM-39] - History is now saved to the database in persistent group chat rooms.
- [JM-41] - Added auto-archive process to clean-up unused group chat rooms.
- [JM-44] - Added ability to cleanly shut down the server with a "stop" button in the admin console.
- [JM-47] - Group chat visibility policy can now be set based on room lock status.
- [JM-60] - Plugins are now supported.
- [JM-62] - Added full support for groups.
- [JM-63] - Under Windows, the launcher now appears in the system tray.
- [JM-77] - Group chat rooms can be created and administered from the admin console.
- [JM-84] - Zeroconf (Rendezvous) support added.
- [JM-96] - Improved installer which is simpler ans smaller.
- [JM-97] - Added support for deploying as Windows service.
- [JM-101] - Added xml:lang support.
- [JM-105] - Database version now included in schemas to assist with upgrading.
- [JM-107] - Improved database upgrade process.
- [JM-110] - Added RPM installer.
- [JM-115] - IQ handlers can now be added and removed dynamically.

## Bug Fixes

- [JM-34] - Broadcast messages from the admin console now support i18n.
- [JM-35] - Improved UI of user creation screens.
- [JM-36] - Fixed Postgres setup documentation.
- [JM-37] - Fixed Postgres database schema typo.
- [JM-39] - Minor bugs in SSLConfig fixed.
- [JM-43] - Idle users and log conversation settings now in the group chat section of admin console.
- [JM-51] - Fixed how group chat subject-change messages are saved in the history.
- [JM-52] - Fixed bug when broadcasting messages in group chat rooms for users that are logged off.
- [JM-54] - Fixed ClassCastException in MucRoomImpl.
- [JM-54] - Refactored admin console framework.
- [JM-55] - Fixed bug where presence was being sent twice to clients during login.
- [JM-56] - SSL support can now be activated and deactivated.
- [JM-57] - Updated SSL guide.
- [JM-61] - Replaced core packet representation in server.
- [JM-64] - Participants can now change the group chat room subject if they should be able to.
- [JM-66] - Fixed error in the SQL Server database schema.
- [JM-75] - VCARD is now vCard, which fixes vCard support in clients.
- [JM-76] - Resolved Trillian compatability issues.
- [JM-80] - Unavailable presence now correctly sent when a connection is closed.
- [JM-81] - Removed join/leave broadcast messages from group chat rooms.
- [JM-85] - Name field now works for in-band registration.
- [JM-87] - Fixed NullPointerException when setting history type in group chat.
- [JM-88] - Added URLEncoding to the admin console so that i18n usernames work correctly.
- [JM-90] - Fixed redirect in last step of admin console when admin port is not 9090.
- [JM-91] - Cleaned up configuration file property names.
- [JM-92] - Owner and admin fields are now optional in group chat room config form.
- [JM-93] - Group chat service now correctly passes through extended presence information in presence broadcasts.
- [JM-94] - Fixed exception in group chat when banning users.
- [JM-98] - Added room creation date to disco information.
- [JM-112] - To and From values of certain IQ's are now correct.
- [JM-114] - Fixed freezes in the group chat code.
- [JM-116] - Fixed routing table logic for case when unavailable packet received.