Name Binding

From OpenSimulator

Revision as of 10:44, 4 July 2013 by Justincc (Talk | contribs)

Jump to: navigation, search

Background Information

A Second Life/OpenSimulator needs to resolve user UUIDs to names (e.g. 25bf6e60-91c0-4d28-8349-ba254cd4388e -> Jane Doe). It does this by issuing a UUIDNameRequest UDP message, to which the simulator responds with a UUIDNameReply UDP message containing the binding.

The viewer uses this binding to display names in some contexts, such as local chat and friends lists. For unknown reasons (possibly code evolution), it does not use this mechanism for displaying names in avatar name bubbles. Therefore, it's possible for these to be correct whilst local chat names may be wrong.

Once a viewer has received a binding. it stores this in a local cache and never requests it again.

On the server side, these bindings are stored in an in-memory dictionary. This dictionary is built up by a combination of an initial scan of objects in the region on simulator startup, by later addition of entries into the dictionary, such as when a previously unknown Hypergrid avatar enters a region and on demand when a UUID is actually requested by inspection of user account and grid user data.

Name binding in OpenSimulator is fairly complex due to the requirement to bind the names of users visiting via the [Hypergrid] as well as the more straightforward binding of local users to UUIDs.

If a user binding could not be found, the viewer may receive a binding to "Unknown user" in various forms.

Server commands

In OpenSimulator 0.7.5 onwards, there is a simulator console command called "show names". This will show all the current in-memory bindings.

In current OpenSimulator dev code (post 0.7.5), there is also a command called "show name <uuid>" which will show a binding for a given uuid.

Message exchange

In Linden Lab viewer 3.3.4, for an object in a region where the creator of the object is not present and the viewer does not have the creator's UUID bound to a name in cache, as UUIDNameRequest may only be issued when the user requests the properties of an object.

A UUIDNameRequest will always be sent to the simulator occupied by the avatar even if it requests the properties of an object on a neighbouring simulator.

Even if the viewer does not receive a UUIDNameReply for this request after 10 minutes, it will not retry if the object is subsequently selected.

If an avatar without a bound name enters the same region as the viewer and chats, the viewer will issue a UUIDNameRequest even if an outstanding one for object properties for the same UUID is not satisfied.

If the viewer does not receive a reply for this UUIDNameRequest, it will display the user name correctly (presumably from other sources) in the temporary on-screen chat box but will not display any name in the persistent chat box if that is open instead.

Personal tools
General
About This Wiki