Version 2.0.2 (July 18, 2005)
- Added 'zephyr' parser for professional license servers.
- History of banned attempts (reported in the log) are now reset when they are reported.
- Added unban via command line (see more)
- Added isDying() to the Client API. (see Javadoc for more info)
- Fixed a bug causing "ghosts" of clients to remain on the server if the client was removed
from a Room (eg. client.killClient or client.leaveRoom) in the onAddClient event method.
- If a Client cannot create a namespace because of UPCConfig restrictions
they will no longer try and observe the namespace even though it could
never have been created.
- Added security to prevent server flooding.see here
- Added startup scripts for mac and corrected line endings for *nix scripts.
- Added UPC option to send all client Attributes when a Client logs in instead of just their shared attributes.
- Fixed a bug where the shared attribute tag might not be persisted correctly.
- Fixed a bug that was causing Attributes set to "null" to not properly broadcast their updated value.
- System shared client attributes "_IP" and "_CONNECTTIME" are set when a client connects
- Doing a server "restart" will now reinit the Banned list.
- Fixed a SQLAttributePersistence bug that was could cause a Room to not store Attributes correctly.
- SQLAttributePersistence will no longer accept a blank username when creating a Client.
- Fixed a SQLAttributePersistence bug which was causing the storage of a Room to stop the Room from
shutting down completely if there was a failure getting a database Connection.
- Added getConnectToServerTime method to ClientServices to retrieve the time at which a
Client connected to the Server.
- Note: this feature has proven unreliable on certain systems however others have had no problems with it so we felt it should
be included. Added "manifest" command line option to write an XML file to disk containing details
about the Server, Clients, Namespaces, Rooms and other information. (more)
- Can now listen to only one local IP address on machines with multiple local IP addresses. See SERVER_IP
- Bandwidth usage by the server is now tracked. (see manifest command here.
- UPCMessage.toString() now returns the equivalent of UPCBuilder.build(UPCMessage).
So instead of using UPCBuilder to create the UPC String you can simply call toString() on the UPCMessage.
- An instance reference to the default logger via "s_log" is now available to Rooms that extend
- An instance reference to the RoomServices Object via "m_roomServices" is now
available for Rooms that extend UPCRoom.
Version 2.0.1 (December 23, 2003)
- Services can now throw a ServiceException during load() to signal an initialization
- Added optional Service PolicyService for authenticating Flash clients to ports < 1024.
- Fixed a bug that caused the Admin to not display Room details when the Room
contained an Attribute value that was not of type String.
- Fixed a bug with MySQL Attribute Persistence which would allow simultanoues same client logins.
- Fixed a problem with the command line stopserver command.
- Exposed some classes that should not have been obfuscated.
Version 2.0.0 (September 11, 2003)
- Fixed bug that was causing unity Room to be deployed regardless of config option.
- Fixed bug in SQLAttributePersistence which caused an error when storing server Attribtues.
- Fixed bug with Clients being kicked after timeout period regardless of activity.
- Fixed bug where some admin stats were being sent even after a failed login.
Version 2.0.0RC (August 29, 2003)
- SQLAttributePersistence will no longer keep records for Rooms with no persisted attributes.
- Changed the tracking of ID's in SQLAttributePersistence to internal HashMap rather than
- Added changePersistentClietn to the AttributePersistence interface for making generic
changes to an existing Client.
- If a Client cannot be found for Namespace observation notification it is now logged
once and removed from observation.
- Fixed a mem leak in Admin and Room cleanup.
- Fixed a bug ocurring sometimes when removing Namespaces.
- Fixed Client Attribute lists sometimes not being sent to the webadmin correctly.
- In uconfig.xml Services are deployed anywhere within the SERVER tag by the tag SERVICE. They
are no longer nested inside a SERVICES tag. See configuration for more details.
- Server start time is updated when the server is restarted. If currently connected to the
admin the time displayed won't change until you reconnect to the Admin.
- Fixed a rare bug which would cause joinRoom requests to be honoured after a Client
disconnected resulting in a Client "ghost" ID in the Room.
- Updates to the webadmin are suspended during a restart which was causing ObjectManager
errors (which were showing up in the log).
Version 2.0.0b1 (July 30, 2003)
- Clients will no longer linger as unfound namespaceobservers after disconnecting.
- added isLoggedIn to ClientServices to identify clients who have validated through
the AttributePersistence Object
- Fixed a bug when Unity failed to start. The notification will no longer repeat to the screen indefinitely.
- Added Bouncer class for banning/unbanning ips
- Added getIP to ClientServices
- Expanded on the AttributePersistence interface.
- Setting an attribute to null (server, room, client scope) effectively removes that attribute.
Version 2.0.0a4 (July 11, 2003)
- Can now specify the form of the clientID message sent to clients when they connect (if any) via MessageRouter interface
for those applications not using UPC.
- RoomListener event methods (eg. onAddClient) are no longer synchronized on the RoomListener. RoomListeners
must now control their own synchronization on non-thread safe Objects.
- Added the AttributePersistence interface for persisting Server/Room/Client attributes across Server lives
- Fixed when sending UPC with ROOMID set with no Namespace. It now defaults to the 'udefault' Namespace.
- Fixed when removing clients from dying Rooms not in the default namespace.
- Fixed UPCRoom when trying to remove Rooms not in the default namespace.
- Fixed when Clients would send a message to join a room then quit the server before the message was
processed causing the dead client to try and join the room.
- Fixed Namespaces incorrectly reporting their fully qualifed name.
- You will no longer observe a Namespace if you are already observing a Namespace higher up
on that Namespace path. Eg. if you are observing games.sports you won't also be able to observe games.sports.hockey since you will
be observing that namespace via it's parent.
- Added some options for customizing permissions when using UPCRooms
- Server start success/failure reported on the command line.
- Fixed a ClassCastException when using getNamespaceList from NamespaceServices
- UPCRooms can now be created with a password to enter
- Custom Rooms aren't automatically killed when they cause an error.
- Added getRoomList to ClientServices
- Added getManifest to RoomManagementServices
- Added getAttributes to RoomServices
- Added getRoomListener to RoomServices
- Added removeNamespace to RoomManagementServices
- Added getNamespaceList to RoomManagementServices
- Added broadcastNamespaceButClient to NamespaceServices
- Added broadcastServer to ServerServices
- Can now specify a default room type class. When creating a Room without giving a Room type
the default type will be used. Previously it was hard coded as org.moock.unity.core.upc.UPCRoom
Version 2.0.0a3 (May 13, 2003)
- Fixed a bug where an Object was blocking and never became eligible for GC causing threads to build up.
- Added method to retrieve child Namespaces of a Namespace.
- Clients can now stop observing a Namespace.
- Can now add primitive int, long and float types to the arguments in a UPCMessage
without turning it in to a String first (the server does it for you).
- If you start the server without changing the password from the example config file a reminder
warning will be logged.
Version 2.0.0a2 (April 22, 2003)
- Restarting the server from the command line now works.
- Stopping the server from the command line now works.
- Fixed a bug where trying to create a Room with an ID that already exists still
caused a Room shell to be created, consuming resources..
- Rooms now implement RoomListener interface rather than extending Room.
Version 2.0.0a1 (April 18, 2003)
- Far too many and enhancements, features, and improvements to mention.
Version 1.1.0 (Nov. 21, 2002)
- fixed a bug on dual-cpu machines that caused clients to connect rarely
or not at all
- the rooms/ directory and any jar files contained inside are
automatically added to the classpath...jar files and class files
placed in the rooms/ directory do not need to be added to the
classpath when starting Unity
- added GUI Console
- config based authentication and the use of room "sentries" has been
deprecated in favor of giving Room's more control over who and what
level of access they would like to give...Rooms should now override
the onRequestEntry method in the Room superclass to authenticate
clients who would like access to the Room.
- added getRoom() to the Room API to retrieve an instance of another Room
on the server.
- added getRoomNames() to the Room API to retrieve ID's for all rooms
deployed to the server
- getClientList() and getClientListButClient() now return one time copies
of the list of clients...the copy is not mutated by the server
- fixed a bug where messages placed in a client's queue just before calling
gotoRoom() were ignored...see gotoRoom in javadoc
- rooms now report their deaths (at warn level)
- fixed a problem where all resources weren't being released by Rooms when
they were killed with killRoom
- fixed a problem with shutdown option sometimes not being received correctly
Version 1.0.0 (Mar. 26, 2002)
- squashed the Bug From Hell(tm)
- added more Room functionality
- messages are consumed by clients faster
- client objects are processed on connect faster
- small cleanup in how rooms are shut down when the server is shut down
- fixed an error with ClientProperty Objects not being set correctly
- clients are removed from rooms immediately on dying instead of when their
resources are cleaned up (which was causing a small delay)
- misc. little fixes
Version 0.9.2 (Jan. 24, 2002)
- improved thread management
- rooms can now spawn other rooms (for example, spawning a private chat room
from a public chat room, or spawning a game room from a game lobby)
- server properties now retrieved from an xml config file (see CONFIGURING THE
SERVER for more details)
- added an object store to Client object for storing attributes to a specific
- added password to admin feature
- improved server to client messaging
- added broadcastRoomButClient, removeClient to Room functionality
- added id's to clients...getClientID() from object Client returns an integer
- improved object cleanup
Version 0.9.1 (Dec. 30, 2001)
- added more verbose and detailed logging in the core server
- fixed problems when a room referenced a room alias that did not exist
- extended rooms can no longer get a reference to RoomManager directly, use the RoomServices interface instead
- renamed and added some methods to RoomServices
- added shutdown through admin port (see STOPPING/STARTING THE SERVER)
- version now shows in log on startup (at warn level)
- fixed some thread liveness issues under certain conditions