* This is necessary to avoid a dependency problem where LLStandaloneLoginModule references IInventoryService before the LocalInventoryServiceConnector is registered
* Correct some copypasta log messages in LocalInventoryServiceConnector
Changing the names of these methods because they were being picked up by
nunit as tests even though they were marked private. Naming them Check*
after the original Test*.
This fixes the unit tests that were failing yesterday, but I'm not committing those yet, because I'm seeing 2 of those tests having pass and fail outcomes randomly which suggests that the tests are buggy.
Several improvements in the connectors themselves.
Several improvements in configurations.
Needed to add a hack in IUserService and UserManagerBase, to be removed when that service is refactored.
Eat collision errors --- NOTE: this fix might be naive, it seems to
have helped us getting to 81 avatars (whereas we'd crash with 20
before), but it sure would benefit from some check-over by a person
skilled in the art of ODE physics.
This change addresses two issues:
[1] It adds a flag field to the blendface call which allows the
caller to indicate whether or not the generated asset is
temporary, and whether or not the asset being replaced should
be explicitly retired fromt the memory cache. The decimal
values correspond to:
0 - Permanent asset, do not expire old asset
1 - Permanent asset, expire old asset
2 - Temporary asset, do not expire old asset
3 - Temporary asset, expire old asset
'3' corresponds to the default behavior seen today, and is
the continued behavior of the non-blendface calls.
[2] The dynamic texture routines are highly-asynchronous and can
be scheduled simultaneously on a multi-core machine. The nature
of the texture management interfaece is such that updates may
be lost, and the nature of asynchornous operation means that
they may be processed out of order. A lock has been added to
ensure that updates are at least atomic. No attempt has been
made to enforce ordering. The lock applies to the SceneObjectPart
being updated and is held for the lifetime of the TextureEntry
used to carry texture updates (the one instance carries all
faces supported by the prim).
Users of these services should remember that the dynamic texture
call is asynchronous and control will be returned *before* the
texture update has actually occurred. As a result, a isubsequent
GetTexture call may not return the expected asset id. A script
must wait for the corresponding TEXTURE_CHANGED event before
retrieving any texture information.
SL's LSL supports lone idents:
integer x;
x;
as well as lone idents in for-loop assignments:
for (x; x < 10; x++) { ... }
while those are errors in C# (MONO at least). This patch skips lone
idents in such places.
Fixes Mantis #3042.
For loops with no assignment are no longer syntax errors. For example,
this is now valid:
for ( ; i < 10; i++) { ... }
Corresponding changes to lsl.{lexer,parser} in r99 in opensim-libs.
Fixes Mantis #2501. Fixes Mantis #2884.
It seems overloading the method TestllAngleBetween confused nunit a bit
and caused it to try running the private TestllAngleBetween method. The
method's access modified prevented that from happening, and nunit
complained.
* For some reason, if a null was recieved (indicating a missing asset), the code had stopped passing that on to the waiting lock, resulting in a perpetual freeze
* This change passes the null on correctly
* Many thanks to thomax for being insistent in presenting his analysis of the problem :)
* Issue was that region server was silently dropping an XmlException caused by trying to deserialize the blank asset service response
* So make asset service return http status NOT FOUND rather than OK in accordance with REST
* and interpret this correctly in the async response so that a null object is sent back
* This means that this fix won't be active until both region simulator and server reach this revision
* If an oar save fails to get responses to all asset requests to the asset service then timeout after 60 seconds
* Timeout executes abort, since missing assets in an OAR seems bad
* This means that oar saves won't permanently hang and instead can be retried if something goes wrong with the asset service
* This is not a solution to mantis 3714. Hopefully a fix will be along shortly since I can now consistently reproduce that problem
This patch adds oar file date and time (UTC) meta data to an oar file
when it is created. It also adds a unique ID, though this id does not
in anyway identify the machine that the oar file was created on.
When an oar file with this meta data is loaded this extra information
is saved with the region settings and available via LSL through:
- osLoadedCreationDate()
- osLoadedCreationTime()
- osLoadedCreationID()
If there is no meta data these fields will be blank. Subsequent oar
file loads will erase the information for the previous oar file
load. Persistence has only been implemented for MySQL, the other
backends need updating.
Overall this allows us to much more easily identify the specific version of
software that clients are using. Its very straightforward to edit the oar file
to change the ID string to be something more human friendly.
Included in the patch is a new file OpenSim/Data/MySQL/Resources/030_RegionStore.sql
required for the MySQL DB migration.
btw I had a chat with justincc about this a few weeks ago since he
wrote the oar file import/export and he sounded happy to accept
something that included date/time information but didn't want anything
that would silently leak private information like machine names.
- fixes wild swings in memory usage related to usage of GetDrawStringSize()
We've been seeing wild swings in memory usage and a large chunk of
memory leak. From analysing this it's pretty clear that the mono
garbage collector is rather buggy! When exercised heavily it looks
like it frees more than its meant to resulting in crashes.
GetDrawStringSize() measures the size in pixels of text. To do this
memory for an image is allocated and used to call the GDI text
measure functions. Although no reference to the temporary memory
for the measuring is kept, it takes quite a while for the mono
garbage collector to clean up - so if lots calls to
GetDrawStringSize() are made at once there can be a spike in memory
usage. If the garbage collector is not fast enough then the GDI
layer runs out of memory. It also looks like the garbage collector
is not always reclaiming all of the memory.
I've attached an OpenSim patch which works around the garbage collector
issues. Instead of dynamically allocating memory for measuring
text sizes, it serialises (on a per region basis) access to a single
block of memory. The effect of this is to be nicer to the garbage
collector as it has a lot less work to do, at the cost of some
theoretical loss in performance (nothing noticeable with our tests
which hit it pretty hard).
OpenSim still does leak memory slowly, but it is a lot more stable
with this patch. I suspect that either the garbage collector misses
bits of freed memory or the GDI/cairo layer leaks a bit each time a
texture is created. Thats going to be a lot harder to hunt down, but
for reference if someone has OpenSim running on Windows it would be
interesting to see if it has the same problem as it would tell us if
its a mono/GDI problem or an OpenSim problem.
Modify dynamic texture handling so that an explicitly targetted
face is not scheduled for immediate expiration. The requirement
for precaching explicitly requires these assets to persist. They
do however remain temporary.
This approach leaves the legacy mode of operation (ALL_SIDES)
unchanged in this respect.
See the files: bin/config-include/GridCommon.ini.example and bin/config-include/StandaloneCommon.ini.example to configure and enable this caching method.
See the files: bin/config-include/GridCommon.ini.example and bin/config-include/StandaloneCommon.ini.example to configure and enable this caching method.
This appears to be due to the fact that no asset cache has been
configured, possibly as a result of the configuration changes that
have been made recently. I've attached a patch to display a message
to that effect rather than throwing an error.
Added in some key code to read properties from MSSQL for user profiles
which fixes issues of users having trouble editing estate settings on a
grid where estate managers are not god, and fixes the option of enabling
grid god functionality on MSSQL grids.
I have applied this to trunk only. I need someone else to examine and apply
to 0.6.5-Post-Fixes, or give me some direction, please.
The IRCStackModule used Nini.Config.ConfigCollection.Contains() to
determine whether the "IRCd" section was present in the config. This
ConfigCollection, however, stores an ArrayList of IConfig objects, not
strings, so calling Contains("IRCd") always returns false since "IRCd"
is a string, not an IConfig object.
The code also sets the target avatar as wearing whatever the template avatar was wearing (including attachments). The idea is to allow the use of this to give new avatars a more interesting avatar (and inventory set) than the current default.
I have include a console command that will clone the inventory from one existing user (template avatar) to another existing avatar (target avatar). The format of the command is : "clone avatar <templateAvatarFirstName> <templateAvatarLastName> <targetAvatarFirstName> <targetAvatarLastName>" (to use this console command on new accounts, the "create user" command will need to be used first)
While the code was designed for hooking up to a remote call from a web interface, I have left the hookup code out of this commit, as I believe most use cases will want to handle it differently.
Also added a "trusted handler" to the inventory server to allow the user server to create new folders in a user's inventory.
All this is in the old UGAIM servers so will need porting to the new servers.
* This includes methods such as PlaySound which take a Position as an argument, allowing you to trigger sounds arbitrarily across the scene without needing a parent object in the position.
The attached patch implements llPassTouches. It has been added
to the export/import XML along with the flag for AllowedInventoryDrop.
The MySQL backend has been updated as well, though I haven't
done one of those before so could do with a check. I added
the migration mysql file as well.
The other data backends need updating as well.
* unfortunately, while the client requires uuids and we want to be able to have arbitrary string ids, these cannot be kept in sync
* I think the problems last time were due to a serialization change
* So the major inteface version has been bumped to take care of any lingering issues here.
* This means that region servers beyond this revision can only connect to similarly uptodate grid services, and vice versa
The attached patch implements llPassTouches. It has been added
to the export/import XML along with the flag for AllowedInventoryDrop.
The MySQL backend has been updated as well, though I haven't
done one of those before so could do with a check. I added
the migration mysql file as well.
The other data backends need updating as well.
* If you have something using XmlRpc that isn't in core, change your method signature from:
(XmlRpcRequest request)
to:
(XmlRpcRequest request, IPEndPoint remoteClient)
Changes to support client-side image pre-caching in the region. This
commit adds an additional calling sequence to the DynamicTexture data
and URL calls. The new interface allows a dynamic image to be loaded
into a specific object face (rather than the mandatory ALL_SIDES
supported today.
This is in part fulfilment of ticket #458.
RequestUserInventory is supposed to drive a supplied callback
when it completes. In fact, it fails to do so if the user's
inventory does not exist (e.g. the inventory database is
unavailable for some reason), and the requestor is left
sleeping forever.
The code has been modified to return empty lists via the
callback as an accurate reflection of what is there: nothing.
treated as another ini source to load.
For example:
Include-Asset = AssetSetup.ini
will load AssetSetup.ini after all other ini files are done.
This works recursively, too
region modules. This was needed because the stand alone and grid modules weren't deleting
old scenes, which caused an issue when deleting and recreating a region with same name
on same x,y coordinates. Tested it on standalone and issue is fixed. Requires prebuild
to be run again.
Fixes Mantis #3699
The format of the terrain data is: the floats encoded in Base64 and serialised into xml. So I think far from ideal, but as the support for outputting that format was already there...
Still need to hook up a method for remotely loading this data.
The image render module is returning everything twice. Once with
data, once with null. This change adds a return to stop this
behavior. This was not apparent until I added a message to the
catching routine which issued a warning message when no data was
returned.
* Still doesn't work due to a bug on LibOMV that should be out on 0.6.3.
* Released by request. Important Warning: Linden Viewer 1.2.3 changes the way appearance works and break bot's appearances. LibOMV is working on it
exe for each function, rather each function is a connector and the server ini
loads them. If you like your multiple processes, use -inifile with the server.
Otherwise, you get one server process that serves all configured funcions, see
example .ini. The new exe is OpenSim.Server.exe. Clean your bin, loads of names
have changed!
We've encountered problems with textures never fully downloading and
objects not moving or being deleted (from the client's point of view)
even when the bandwidth settings on the client have been set very
low. This can happen over reasonably lossy links (eg you're on the
other side of the world from the server) as the server retries 3 times
and then gives up.
Whilst its possible to set ReliableIsImportant, this forces the server
to keep retrying no matter what which potentially could lead to
problems. This patch allows for the setting of MaxReliableResends
explicitly (is set to 3 normally) in OpenSim.ini so if you know you
will have clients connecting with poor connections you can set it a
bit higher (10-15 works quite well even for very poor connections).
* This inconsistency has actually existed for some time but only the recent change brought it to light
* In the past, the default in ConfigurationLoader took precedence over the one in SQLiteAssetData
This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing.
Known problems:
* HG asset transfers are borked for now
* missing texture is missing
* 3 unit tests commented out for now
Adding a jsonp wrapper to the user supplied status report
uri if the key "callback" exists. It will work with many
javascript toolkits to provide an ajax callback to allow
the browser to update stats reports without the
intervention of an intermediate server.
This is to handle the changes in the v1.23 viewer
of LL regarding the adult rating. With this patch
a region can be changed to the adult rating from
LL viewer v1.23 and above.
* User interface is ... primitive at best right now.
* Loads bans from bans.txt and region ban DB on startup, bans.txt is in the format of one per line. The following explains how they are read;
DNS bans are in the form "somewhere.com" will block ANY matching domain (including "betasomewhere.com", "beta.somewhere.com", "somewhere.com.beta") - make sure to be reasonably specific in DNS bans.
IP address bans match on first characters, so, "127.0.0.1" will ban only that address, "127.0.1" will ban "127.0.10.0" but "127.0.1." will ban only the "127.0.1.*" network
default but can be enabled in OpenSim.ini. If enabled, things can be sold
for $0. Other amounts will cause the buyer to see a message and the transaction
will fail.
further ACL stuff:
- adding StrictAccessControl variable: DON'T set this to false if you
want to enforce ACL, it will disable ACLs right now. Default is
true.
once we've got code added to allow child agents but prevent them
from becoming root agents when the ACL denies access to the avatar,
setting this to false will then allow avatars to see into a
neighboring region but not enter it (currently ACL prevent both,
seeing and entering).
- enhancing log statements
- AssetType isn't InventoryType. Those enums contain different numbers. Use AssetType for the asset type, InventoryType for the inventory type.
- The ToString method (or ToLower) of AssetType/InventoryType doesn't necessarily return the correct LLSD string.
- Replaced several magic numbers by their corresponding enum.
- Fixed the invType for gestures and animations in the library.
This should fix Mantis #3610 and the non-terminating inventory loading
* The OpenSimulator core developers have voted to remove all currency functionality from OpenSimulator leaving the 'IMoneyModule' interface in. This affects all systems that used the example money module. This effects All systems that used the XMLRPC External Money Module Hooks interface. If you previously used this interface, please consult with the OpenSimWi Redux folk who are keeping the old module with this interface up to date.
* A notice to the opensim-dev mailing list to come as well.. since this is likely a breaking change for some.
* Create the OpenSim.Region.ReplaceableModules namespace for modules that we intend to have people replace (see readme)
* Create the OpenSim.Region.ReplaceableModules.MoneyModule namespace
* Put our current Sample MoneyModule in this namespace. (more modifications here next commit)
OSP resolver, and the caching of the uuid seperate from the string that is a UUID.
Change this behavior back to something that ensures the data for the 2 is the same.
Put the 2 unit tests that depend on the new behavior into ignore state.
Since creatorID is no longer treated as a UUID type in the code from the database we need to make sure that it isn't null in the database. This updates all empty string and null values for this column to the Zero UUID, and makes the column a not null definition with a default fo the Zero UUID.
we lost protection from NULL strings. This puts some protection in for that case.
This may address many of the inventory issues that are being seen intermitently.
(XmlRpc boolean encoding) to return boolean values --- sometimes both
variants in the SAME XmlRpc method! As XmlRpc DOES have a proper
encoding for boolean, i think we should use that --- having a mixture
of both is a bad thing in any case.
this patch changes all "true"/"false" boolean "encodings" to just
true/false which will be properly encoded by XmlRpc.
BIG FAT NOTE: this might/will break existing customers of
RemoteAdminPlugin --- make sure your scripts, apps, etc get updated
accordingly (unless you have already been dealing with this mess
before)
* This revision contains a mysql data migration. Please backup your mysql region database as a precaution before using this code.
* I also advise that you do a runprebuild[.sh|.bat] and a clean build ("nant clean build" if you're using the command line).
* This change is needed for future id schemes
* This revision contains a data migration. Please backup your sqlite region db as a precaution before using this code
* I also advise that you do a runprebuild[.sh|.bat] and a clean build ("nant clean build" if you're using the command line).
* This change is needed for future id schemes
This update implements support for creation of one or more
default avatars from information contained in a file
default_appearance.xml. Each avatar may have any number of
"outfits" with each outfit representing a different ensemble.
The default avatars get created the first time the RemoteAdmin
interface is used to define a user.
I've tested this quite a bit, but it will benefit from lost of
attention, I'm sure.
Adding more SL likeness for Email module in CORE.
I've added some SL likeness to the Email module so
that it looks more like emails going out in the
same standard as SL uses
* Automatic properties are only supported after .Net 2.0, causing these to fail when building via nant on Windows (and probably visual c# 2005 too)
* Hopefully these can be used once building support in Visual C# 2005 is dropped.
Scene.NewUserConnection()
- adding reason reporting
this enforces estate bans very early on and prevents us from
circulating client objects that we'd then have to retract once we
realize that the client is not allowed into the region