* Initializes ODE only when a scene is grabbed rather than on plugin load. This means we don't initialize ode if that physics engine is not used, and it allows other ode use
plugins to be used instead.
* However, this is not currently activated since it's not absolutely fully tested and there's a bug lurking in there to do with the sending of the BulkInventoryUpdate packets
* Methods locked: CreateRegion, DeleteRegion, CreateUser, CreateUserMethodEmail,
UpdateUserAccountMethod, LoadOARMethod, LoadXMLMethod
* An example of bad behavior was multiple region creation where same UUID and
grid location was possible, by running multiple XMLRPC threads.
From: Arthur Rodrigo S Valadares <arthursv@linux.vnet.ibm.com>
The attached patch fixes the bug where llCreateLink will cause a null dereference
if the avatar who gave link permission for the object is no longer logged in.
* This patch gets NHibernate working
*** PLEASE NOTE: This patch now requires the libmono-oracle2.0-cil library to be installed on Ubuntu (to stop the System.Data.Oracle missing failure) ***
* Not sure what the dependency is on other distros. Adding this info to http://opensimulator.org/wiki/Build_Instructions would be most welcome
* Adds Castle.* libraries that were missing last time (note, dlls have been added from http://downloads.sourceforge.net/nhibernate/NHibernate-2.0.1.GA-bin.zip)
the region database
* The original issue is that the now randomly generated local ids do not fit into the int parentID datatype
* However, as far as I know it's actually pointless to store this local parent ID anyway (we already store the groupUUID), especially as we don't bother to store the localID (as
opposed to UUID itself).
* Conservatively, the actual column will be removed in a later commit
to fix the A -> B -> A issue. Because the code is very reuse friendly,
it shouldn't cause much additional memory bloat in the sims.
I'm sure this isn't the right fix, but it is progress, and confirms that
the close path while leaving a region is part of the issue.
* This means that the xml of a get request can be used as the input with a few value tweaks, instead of having to explicitly put inline="false" in the output xml
before" issue. This involves the EventQueueGet module so I'm not sure
this is the right fix but it appears to work.
When the ScenePresence leaves force a close on it. The reuse of the
queues doesn't seem to be working, so the forced close causes a new one
the next time in. This does appear to work.
MSSQL Fix to accommodate random ParentIDs. uint values now
cleanly converted to ints and vice versa to hopefully prevent
outofrange exceptions on prim storage.
Use height calculation in Basic Physics and Physics of Simplicity so that avatars larger than the default walk with straight legs and shorter walk on the ground.
This should finally kill the "There is already an open data reader associated
with this connection, which must be closed first" error that makes people's
builds not save
prevent adjacent sims from using identical Local IDs for the attachment
Thanks to Mana Janus (Hippo Viewer) for providing the crucial bit of
information, namely that, due to a bug in the viewer, adjacent sims can't
use the same local ids.
Migrate sculpt meshing code to primMesher version. This should result in more accurate physical sculpted prim proxies.
Remove much obsolete code from Region/Physics/Meshing
Adds a new method to IClientAPI to allow adding message handlers
for GenericMessages (of which "autopilot" is one). Part 2 adds a
specific autopilot handler in ScenePresence.cs.
2) Removing unused variables and functions.
3) Simplifying the navigation logic in ScenePresence.cs. The
original patch was somewhat complex because it included orientation
logic for a future enhancement of orienting the avatar to point
towards the direction being walked. Currently this isn't working,
though, so I removed the orientation code, which leaves just the
smaller and hopefully simpler-to-understand movement code.
terrain is found, rather than a default "0" terrain.
Remove the "remove object wrong region" test. UUIDs either are unique
or they're not. This test tested a bad behavior I have chosen not to
duplicate.
mechanism to prevent prim loss. Preserve link order on sim restart
and drag copy. Fix drag-copied prims' inventories. Fix persistence
of child prim inventories.
* This is Diva's hypergrid patch, as perviously discussed on the opensim-dev mailing list
* Applied some minor prebuild.xml jiggling to resolve a dependency issue
* Thanks Diva!
* Entities should now in theory be lock-free externally.
* Other properties may cause blocking however[?].
* ScenePresence maintains separate locks so isn't fixed by this commit.
* Important Changes: Scene.Entities is now IEnumerable directly. You do not need to use Entities.Values, you can Enumerate on .Entities directly. (So 'foreach Scene.Entities' vs 'foreach Scene.Entities.Values').
* Locks: Entities maintains it's own internal locking states. This means you do not need to lock entities anymore. I'll be going through and removing locks on it systematically.
* Not referenced anywhere yet.
* Designed to replace Dictionary<UUID,EntityBase> within SceneGraph.Entities
* Allows indexed access and better handling of locks.
* Someone needs to implement IEnumerable on this before we can switch it over.
from the presence module to the message server, through the user server
and on into the database. This should fix the "Already logged in" issue
that grids see after a sim crashes, or a user crashes out of a sim.
Not yet a 100% solution for friends, but getting there.
This patch adds the option of adding the email when you create
a new user. This works in Gridmode as none Gridmode. This
option is also added to RemoteAdminPlugin. With a new handler
you can create a user with a email.
- I first did lock on m_scenes for that access, but as m_scenes (currently) is
only changed in Initialise (and locked there), and PostInitialise is called
after the calls to Initialise, there shouldn't be a need to lock here.
- Trying out git-svn dcommit. Hope this works.
* SceneObjectPartInventory.cs isn't a particularly good name but it's probably not got a long life
* A proper inventory interface to follow
* Parallel changes for other inventory partial classes to follow at a later date
* Deleting the object before the async to inventory is bad since if OpenSim crashes (or is shutdown!) in the time inbetween, then the object is lost
* Also now delete the object from the scene only after it has gone to inventory - in the old way there was still a race condition
* This is still not ideal since the 'deleted' object remains in the scene and probably could be manipulated. But this is better than the alternative
* Last time I accidentally left the existing code in place that merely wiped the group from the client (but not the scene)
* Put in an incomplete 'delete object o inventory' test to assert that this happens
* This is primarily to see if not loading ODE in the unit tests will allow them to proceed, though the option of separate loading is probably a good thing in itself
Attached is a patch which fixes mantis bug 2645 where scripts in child
prims
freeze after being unlinked from the root prim. This got introduced
some time after the 0.6 freeze. Have checked test suites
pass even after nant clean ;-)
http://opensimulator.org/mantis/bug_update_page.php?bug_id=2645
Also removes a redundant ResetIDs call
Regards,
Chris
release a direct descendant of the stable 7364, with all the features and
none of the issues.
This omits the following patch chain: r7383 r7382 r7381 r7377 r7375 r7373
r7372 r7370 r7369 r7368 r7367 r7366
- The initial priority wasn't passed in, so a discardLevel of -1 in the first
request automatically cancelled texture-download.
- One-packet textures weren't handled, as CurrentPacket starts at 1 and
StopPacket == 0 in that case.
- Increased MAX_ALLOWED_TEXTURE_REQUESTS to 15; incremental texture downloads
will cause more requests.
* This allows one to override normal OpenSim permissions and prevent non-gods from editing any scripts. This allows edit ability
to be rescinded after it has been given, and prevents the security hole where a single script with liberal perms would allow code changes.
* The default setting remains the existing one of never overruling normal edit permissions.
* These two settings may be enough to stop non-gods entering artbirary script code in a closed grid/standalone configuration.
* This renders RootPart == null checks useless - the replacement is to check SOG.IsDeleted. However, in many cases this will not be necessary since updates to deleted parts
will not be sent to the client
* This should remove any remaining race conditions where an object is deleted while another thread is yet to obtain the root part to perform some operation
* Doing this is probably a necessary prerequisite to moving to a model without a separate SOG and SOP
* Unfortunately it's not possible to eliminate all RootPart == null checks since in some contexts it is currently used to check whether an object was created successfully
minutes. This ensures that things don't get messy if a user server is restarted
and the user server's operator has no control over the host the message servers
run on.
causes defautlt behavior. "true" now means usable unconditionally, "false"
means disabled, and a list of UUIDs restricts it.
This changes SECURITY! If you used "true" here before, you shoudl review
your setup!
the IM module and makes it into a module of it's own, which can be used by
all other modules. Removes some ugly hacks. Refer to the IM module to see
how it's used. Also fixes the persistence issue (Mantis #2598)
Objects will be persisted now MinimumTimeBeforePersistenceConsidered seconds
after the last change, but latest MaximumTimeBeforePersistenceConsidered after
the first change (both are configurable in OpenSim.ini.example and are set to
60 and 600 as default).
Contains a migration. May contain nuts.
Please back up your inventory data store. This revision changes the interface
version!! No older regions can connect to these new UGAIM, and the new regions
can't connect to the old UGAIM. Fixes a long-standing issue of permissions loss
Currently persisted on MySQL only.
* This doesn't allow complete script lockdown of a sim, many avenues (copying, editing) are still uncloseable at the moment
* Default remains to allow all users to create scripts (subject to existing permissions if enabled)
* Switch default for serverside_object_permissions from false to true - it seems more natural that we enforce permissions by default rather than not!
* Add some explanation in OpenSim.ini.example for serverside_object_permissions
This patch makes llAllowInventoryDrop work with the permissions module
enabled. Changes include:
- Enabled PropagatePermissions when permissions module serverside perms
is on
- change ownership of item when item is dropped into an object.
Ownership changes to the owner of the object the item is dropped into
- propagation of permissions if the permissions module enabled (eg
next-owner mask applied)
- CHANGED_ALLOWED_DROP is now passed to the change script event if an
item was allowed to be dropped into the object only because
llAllowInventoryDrop is enabled (instead of CHANGED_INVENTORY being
passed).
- Sets object flags correctly when llAllowInventoryDrop is called so
clients are notified immediately of the change in state. Am not
sure that calling aggregateScriptEvents is the right way to do it,
but it works and seems to be the only way without making further
changes to update LocalFlags
physical center of an avatar, for display purposes. This should keep the
avatar feet above ground visually in most cases. Tweaked for both height
extremes and various leg lengths. Improvements welcome
(one that won't parse right) will prevent all other items in that folder
to load when inventory is requested. This is very careful to no longer
add inventory items that return as null to the hash table for
getInventoryInFolder, as well as be more careful parsing UUIDs for
fields that aren't marked not null in MySQL.
The net result, you may see previously missing inventory items return
after this checkin. Folders probably need to be hardened in the same
way, but I'm out of time for today.
public bool ExternalChecksCanCreateAvatarInventory(int invType, UUID userID)
public bool ExternalChecksCanCopyAvatarInventory(UUID itemID, UUID userID)
public bool ExternalChecksCanCopyAvatarInventory(UUID itemID, UUID userID)
public bool ExternalChecksCanDeleteAvatarInventory(UUID itemID, UUID userID)
to ExternalChecks to handle avatar inventory checks (as opposed to object inv checks).
* opensim-dev e-mail to follow concerning this shortly
* This may alleviate a little the freezing experienced by existing avatars when a new client logs in
* Race condition risks look minimal since one wouldn't expect another thread to start fiddling with that presence
destination user is offline/out of range. No more eternal cache is needed
for tracking IDs. Code cleanup. Removed some casts from IScene to Scene.
Decline now properly places item in trash rather than deleting it outright.
* Code Cleanliness Fixes in LLClientView
* Using field instead of local variable for handlerUpdatePrimGroupRotation (if you notice any new oddities with prim group rotation after this patch, please mantis)
* This is done by sending a 'major interface version' number on sim registration. Developers must increment this every time they make a change that would make the previous
OpenSim revision failure incompatible with the new one (non-fatal incompatibilities are fine).
* This number resides in OpenSim.Framework.Servers.VersionInfo.MajorInterfaceVersion
* This allows the grid service to stop older, incompatible regions from connecting
This patch changes a couple of methods in Scene.Inventory to virtual,
so they can be overridden in subclasses. DeleteToInventory now returns
the UUID of the newly created asset, so that further actions on it can
be pursued in subclasses. This will make my life easier for making
inventory accessible in the hypergrid.
will allow people who don't want megaprims in their sim to prevent them
from being created. Any prim rezzed or pulled across the border will be
clamped to the size specified in OpenSim.ini if this option is set.
* Implements the SendInitiateDownload method in IClientAPI
* Uses the ITerrainModule Interface to write a terrain file to disk then uses a FileStream to read the binary file from the disk and put it in a byte array. and save to the xFer list.
* It then tells the client to download the file and the client initiates an Xfer request.
* Decouple sog and sop by removing the need to pass the sog to the sop when it is created - most of the code was doing this operation (and hence duplicating it) anyway
* Remove unused constructors
regions that XmlRpcCreateRegion will create: if region_limit is != 0
then XmlRpcCreateRegion will only create a new region if the number of
regions already existing is below region_limit.
This patch addresses mantis bug 2576.
http://opensimulator.org/mantis/view.php?id=2576
Briefly, if you call llDie from many scripts at the same time (say a
build is cleaning up excess objects) then OpenSim deadlocks. Avatars
are unable to move, and whilst the console is active you can't do much
without it also locking up. This only occurs with the XEngine script
engine enabled.
I have attached a patch which works, but I'm not sure its the right way
to address the problem. The fundamental problem is that a lock on a
SceneObjectGroup's m_parts is taken when the object is deleted, a
callback to the script engine occurs and a fair way down the callchain,
potentially there are locks taken on several other SceneObjectGroup's
m_parts. Deadlock then occurs if you get unlucky enough
to get in the situation where with several llDie's are called and
SceneObjectGroups
have taken a lock on their own m_parts, and end up waiting on each
other's
locks to become available.
The patch adds a lock at a high level so that that the removal of script
instances
from an object only occurs once per scene at a time. This avoids the
potential
of deadlock. Theoretically there could be some performance hit but
AFAICT
the path taken is not a common occurrence.
Would welcome any suggestions for a better solution, otherwise feel free
to apply :-)
Note this patch was built against the 0.6.0 freeze as trunk was
rather broken for me this morning (creating a script killed the client
connection).
* Items will now be locally cached for only 24 hours from last access. (Rather than until restart)
* Caveat: Implementing the new caching mechanism means statistics gathering on AssetCache is no longer functional. (Justin - you might want to take a look and see if you can somehow get that back and running if you still need it)
This patch is two script that fixes a issue when adding more
then 1 avatar to estateban/estatemanager list. It removes a
key and adds a index to the tables.
PRIM_TEMP_ON_REZ and PRIM_MATERIAL are not implemented in
llSetPrimitiveParams so support for these is in the patch.
Also two deprecated functions throw errors. They are changed
to behave as in SL: llSetPrimURL - Does nothing except the sleep
(currently commented out) & llRefreshPrimURL shouts
"llRefreshPrimURL - not yet supported" on the error channel
* This means the recent memory fix should now be working correctly - so the current largest memory leak should be fixed. AssetCache still needs to be addressed however.
* This patch is highly experimental and may cause clients to not be able to connect, if this is the case, it will be rolled back in approximately 5 minutes.
* Introducing IClientCore - this will be the key replacement for IClientAPI in the long run, it has a very minimal set of methods designed to allow you to access specialist API's.
* See https://lists.berlios.de/pipermail/opensim-dev/2008-September/003049.html for the early discussion on this.
* Was caused by the lack of a local id. Local ids are now given from the same sequence as prims, rather than a separate one
* I don't believe this will cause any problems, but please revert to a separate sequence if it does
as the code to update these at the appropriate time. This isn't
surfaced in AssetBase yet.
Change the replace into to an insert into for asset create. Assets
are not supposed to be updatable, and the replace into is more
expensive.
From: Sean Dague <sdague@gmail.com>
This patch introduces a couple of read-only properties,
so that I can grab the asset server plugin from a region
module. This is needed to set up an http service for
accessing standalone assets remotely.
Included patch fixes error: Z and W terms in the quaternion were
swapped (ZERO_ROTATION is <0,0,0,1>, it was checking for <0,0,1,0>).
There is an issue with older prims: it seems their default sit
target was not always set to ZERO_ROTATION;
Add more unit tests for user cases
Persist more user fields into mysql that already had columns
defined but weren't getting passed to the mysql manager.
potential (asset bloat, asset server DOS due to no enforced delay)
Formatting cleanup. Change default permissions on the notecard to
not include "anyone can copy" and "anyone can move", as they are
meaningless on non-prim items.
- fixes IRCBridgeModule's XmlRpc method really paying attention to
region parameter
- cleans up indentation in IRCBridge code
- fixes ConciergeModule exception on client logout
* This should (hopefully) allow TestClient and stuff built on top of it to work again
* Will probably come back later and change variable names to stop this happening again
* Really this should be 1, but I think that this would be too slow compared to a Second Life server until we improve our ability to send textures of variable quality
* This may improve one aspect of sim performance where there are many avatars. However, there are still other performance problems that are unrelated to this change
* Value may be further tuned
* Removed temporary decals since the multipler setting will stick around now
* Inserts proper animation state names into data/avataranimations.xml file so that llGetAnimation() works as one would expect.
* Thanks StrawberryFride!
* This is a partial implementation of llGetAnimation that returns the name of the animation as stored in data/avataranimations.xml but not its state name (since we don't yet
have these).
* Thanks StrawberryFride
This patch allows an object to directly message another object given its
key using the method osMessageObject(key objectUUID,string message).
to communicate with an object it must implement the dataserver listener
method. The dataserver method is passed the key of the calling object
and a string message.
* Now I've had time to analyze this, the Second Life grid doesn't appear to send this to the client (which in principle should know what wearables it has already)
So basically simplifies what a lsl script that detects a avatar sitting on a prim, then stopping the sit animation and playing a custom animation, does.
Also added another ScenePresence.HandleAgentRequestSit() method , that accepts the name of the sit animation. So that modules can override the animation used, when they are doing a server controlled sit.
Started some work on making the stand pose be played as soon as a user logs into a region. Rather than them starting with their arms stretched. This still needs more work
* This should probably be 1, but currently by default it is 8, to reflect what was being eon3 in OpenSim before this revision. So if the client requested a maximum throttle
of 1500 kilobits per second, we would actually send out 1500 kilobytes per second
* Adjusting this multiplier down towards 1 may improve your OpenSim experience, though in other situations it may degrade (e.g. if you're using a standalone over high bandwidth
links)
* This is currently a user setting because adjusting it down may currently reveal other OpenSim bugs.
* The attached patch changes the LSLInteger operator overrides for == and != to return LSLIntegers 1 or 0 instead of a bool and adds similar operator overrides for >, <, >= and
<=
* Thanks idb!
on-/offline updates, calling cards for friends.
This adds methods in the DB layer and changes the MessagingServer, so a full
update (incl. UGAIM) is necessary to get it working. Older regions shouldn't
break, nor should older UGAIM break newer regions, but friends/presence will
only work with all concerned parts (UGAIM, source region and destination
region) at this revision (or later).
I added the DB code for MSSQL, too, but couldn't test that.
BEWARE: May contain bugs.
* This is to avoid repetitive null checks - I'm beginning to think that blasting away the root part on object deletion is actually a bad move. Perhaps we should leave it around
and let the client ignore any superfluous packets (which it may well do anyway), since we're constantly exposing a race condition
with the old Grid Instant Message over OGS1. Refactor the EventManager
to be independent of the rigid module structure design imposed by
the current implementation. Message routing is now done in the destination
module rather than in the event manager. This way, more or less granular
solutions are possible without core changes.
locks to just before the try/catch/finally block, so that an exception
thrown between taking the lock and entering the try doesn't leave a mutex
locked
* This may help us detect if mysterious UDP disconnects are happening because of this.
* Shouldn't be any functional change but I would appreciate a buddy check from Teravus if he has time (as for all client stack changes)
* Since the client sets the appearance in the first place (in response to receiving wearables information originally) this seems a little redundant
* But I've realized I didn't actually test this assumption, so I'm going to reinstate it for now
SQLite reports System NUll Reference, but works, inside
LoadItems, on SQLiteRegionData.cs
From: Arthur Rodrigo S Valadares <arthursv@linux.vnet.ibm.com>
* This is to make things less confusing to users (and maybe a little easier to do future version filtering for grid connections)
* If there's disagreement about this, then please say so (preferably in the opensim-dev mailing list)
* Whilst this does automatically get the client to rebake, on crossing a region border the 'local' assets are left behind
* There may be a cunning solution (such as squirting the assets on region crossing, or having them fetched from the original region) but
instead I'm going to opt for the easy solution of keeping them in the asset database, for now
* And hopefully rebaking all the time should no longer be necessary now
* It turns out that when the client baked the texture, the uploaded asset had the Temporary flag to true (Temporary is actually deprecated).
* It also had the StoreLocal flag set to true, which signifies that the asset should be stored locally. If it disappears we should reply to the asset request with
ImageNotInDatabasePacket
* However, last time this was enabled some clients started crashing. This may well no longer be the case and needs to be tested, but in the mean time we will store
the asset instead.
* This needs to be resolved in a better way, possibly by starting to send the ImageNotInDatabase packet again instead
When the avatar stops flying in mid air, it stays still
while it falls to the ground. Normally, the avatar would
use the falling animation (when it spins its arms and legs
while falling) until it reaches the ground.
The attached patch fixes the bug where when linking in a new set of
prims to an already linked set of objects the prims were placed at the
end of the list rather than just after the root prim. ie. link prim
order result was different on OpenSim compared to an LL server. This
causes a few issues with respect to compatibility of scripts,
especially when using llCreateLink.
* If a change is going to affect a unit test, then please could we change the unit test at the same time? Otherwise this will never get done
* It also seems a bad idea to disable tests which start failing unless there's a very good reason
The following should silently fail when attached,
llBreakAllLinks, llBreakLink, llCreateLink.
The following should be restricted to avatars in the same sim,
llGetAgentInfo, llSameGroup, llGetAgentSize, llGetAnimationList.
Comment added to the following unimplemented functions,
llGetAgentLanguage, llGetAnimation.
llGetBoundingBox is completely unimplemented. The attached
patch contains a partial implementation for single prim
objects and standing, flying and ground sitting avatars.
In the case of an avatar sat on an object or multi-prim
objects only the bounding box of the root prim is returned.
llRezObject and llRezAtRoot ignored any velocity parameter.
The attached patch makes use of it if it is not a zero vector.
Support of strength-slider in latest sl-client (1.21.6)
Added a patch, which includes the support of strength-slider
in latest sl-client (1.21.6) for Raise- and LowerSphere.
* This moves authentication from the client thread (where failure was difficult to detect) to the particular thread handling that packet
* I've kept the authentication outside of the crucial clientCircuits lock (though any delay here is probably swamped by the other delays associated with login)
* Also added more to the unit test to ensure this doesn't regress
* This checks that a client circuit is established when the udp server is given a use client circuit code packet
* And checks that other circuit codes do not exist
* Not sure why things still worked in the presence of this bug - possibly the problem is compensated for later on. If you are having udp session problems this bug fix may help
(though no guarantees).
UUID parameter without checking for it at the method entry. this patch
adds logic to obtain the master UUID via the user profile service,
and, if the master avatar does not exist, will create the user. in any
case the UUID is then the one supplied by the user profile service.
logic to ConciergeModule. adding XmlRpc method to allow update of
welcome template for a region. documenting [Concierge] "password"
option in OpenSim.ini.example.
KeepAlive for certain XmlRpc handlers.
Making use of new AddXmlRpcHandler method in RemoteAdminPlugin to
avoid clients waiting indefinitely for response.
taking note of BaseHttpServer parameter in CommunicationsManager
constructor (was passed it but then just ignored so far).
Attached patch protects against a NullReferenceException
in SceneObjectGroup.stopMoveToTarget (used by LSL function
llStopMoveToTarget). Thanks to M. Igarashi.
welcomes = /path/to/welcome/files/directory
a directory in which you can place welcome templates for concierged
regions (those regions that match the "regions" regexp). you can use
format substitution:
0: will be replaced by avatar name of the avatar entering the region
1: will be replaced by region name
2: will be replaced the name of the concierge
MemberwiseClone() also clones the "already backed up" flag, preventing prims
created by drag-copying from being persisted. If such a prim is made the root
prims of a link set, the entire set will not be persisted. Fixed now.
chat relaying via private channels, and old IRCBridgeModule
behaviour. also cleaning up IRCBridgeModule's OpenSim.ini
configuration variable names (still supporting "old" variable
names). refactored IRCChatModule into IRCConnector and incorporating
watchdog from IRCBridgeModule into IRCConnector.
enabling ChatModule to be used as a super-class and utilizing it in
ConciergeModule.
* Guys, there's an endless loop there *ON PURPOSE*. Please don't try to *fix* it. We must continue to process the UDP stream buffer on clients that disconnected nastily until it ends or the UDP server accept thread will die a horrible death.
* Unix epoch starts at midnight, not at 8:00am
* All date/time handling should be done in UTC in the server, not in
the local timezone.
* Refactor out repeated computation of a constant value
- Added setting of CreationTime to some places where inventoryitems
are created
This fixes Mantis#2390.
Add rezzing time to objects. Add Object return and traffic fields to land
database. Add plumbing for auto return. Implement auto return.
Contains a migration. May contain nuts.
* Implement the linear impulse portion of llPushObject. We should have a lsl compatible implementation of that portion of the push. Angular.. well. still have yet to implement a torque accumulator.
* llPushObject respects the region and parcel settings for Restrict Push, it also respects GodMode as is defined in the LSL spec.
* Regarding an earlier change, I think it would be possible to eliminate the creation of new IPEndPoints on every end receive if we did the client circuit lookup before starting
the next receive. However, this would be a performance trade off and hence not worth trying without performance testing
* This widened what I think is an existing race condition where asynchronous recieves could potentially stomp on each other's end points (though this must occur very rarely, if at
all, in reality)
* This allows multiple user profile providers to be specified in OpenSim.ini separated by commas
* If multiple providers are specified then a request for a user profile will query each in turn until the profile is either found or all have been queried
* Unfortunately I don't believe this order can currently be specified, which if true is something that will need to be fixed.
* Thanks to smeans for the original patch.
* Additionally, you can probably get more physical prim now together.. though, I think this puts us back on par with where we were in the beginning of the year on number of physical objects. Experiment. Make videos. Send Feedback. Enjoy.
- Added two missing caps (UpdateScriptAgent, UpdateScriptTask)
- Added one missing EventQueue event (ScriptRunningReply)
- Changed DNE and XEngine to use this new event
As we only use the mono engine anyway, the "Mono" checkbox is set by
default but doesn't have any function.
* If you are hosting many regions on a single instance, you will probably notice a decrease in region startup time and maybe a slight increase in performance.
* Single regions won't notice anything different
- Makes SQLite mimick MySQL default behavior on first
and last name already on db: it does not insert the
new record.
- Added tests for UUID 0 and for new UUID with existing
first and last name.
* I believe this is reasonable since code outside the Linden client stack shouldn't be aware of the packet format being used
* I would love to have made the method protected, but the LoadBalancerPlugin is still calling it and resolving that would require more work
* This should fix a long standing issue where you often wouldn't see other people simply turn around without moving at all
* Arguably lastPhysRot (to mirror lastPhysPos) is not a good name, may change variable names later
* This may help http://opensimulator.org/mantis/view.php?id=2377 where large linksets do not always correctly delete - since a lost kill packet to the client could result in
the symptoms described
* Re-enabled the native ODE prim types when possible
* Fixed several invalid assumptions in the prim recycle process.
* Added better message for 'reused a disposed physicsactor'
* Added a way to recover from errors during collision_optimized
* Added a way to recover from an error condition where prim_geom wasn't reset properly
* Calculate an agents height in LLGetAgentSize() from apperance parameters rather than physics avatar numbers
* Another good looking patch from idb - thanks!
* Region registration is enabled by default in the configuration unless the user chooses otherwise
* On the console
* show status - shows grid status
* enable-reg - enables region registration to the grid
* disable-reg - disables region registration
* Enabling or disabling region registration will not affect any other grid functions or regions already on the grid
* If you're experiencing knee bendiness try the windows settings, as the *nix settings seem to now be incorrect. (this update does that, but you may have your own opensim.ini settings active.
* Mac users, pray to chi11ken to make you a .dylib version
* This is semi-tuned and post teravus hack. (Though I didn't apply the terrain pitting fix hack. I'm still deciding if it's necessary as there was a lot of work over the past several months on the heightfield collider.
* Please use '--enable-shared --disable-demos --disable-asserts' if you are building your own libode in the configure step. Asserts are pretty much useless for use with .NET
* This also updates ODE.NET as, there were some API changes in May that were just added to ODE.NET today.
* Experimenting with the PacketPool mechanism.
* It's still disabled in the code, however there's now a flag to enable it.
* Converted to use Generic Collections vs Hashtables, also now uses a list of 'OK to pool' packets, starting with the high volume PacketAck packet.
* Implemented a proper update thread
* Removed the UpdateLock Mutex as it's no longer needed because updates can only happen one at a time now.
* This should actually improve performance significantly.. But, see the warning on the next line!
* Warning: If there are deadlocks that the threadpool timer method was hiding, this will expose them for all the nastiness they are.
See mantis #2379 for some useful scripts that work with this.
Note that I added another configuration parameter in addition to the patch to allow for legacy behavior in the absence of new configuration settings.
fix for the LandManagementModule. I changed LandSnapshot to use
CachedUserInfo to take a load off the user server. Also, missing owner
profiles are legit, warning removed.
XmlIgnored the SceneObjectPart.SitTargetAvatar property, as (afaik) this is only used to indicate that a avatar is sitting (or about to sit) on the prim.
And there are situations where it might not be cleared, like if a client crashes while sitting on the prim. Which results in that avatar's id getting stored in any xml backup or taking the prim into inventory. And then its always classed as a avatar is sitting on that prim.
* This was not a problem with objects consisting of less than 30 prims, since the extra schedules would be ignored
* However, above approximately 30 prims extra schedules would actually occur.
* For instance, a 140 prim object would end up triggering approximately 2500 ObjectUpdates to every avatar in range rather than 140
* Hopefully, this change will improve client responsiveness on deselect and was one of the reasons that the AgentThrottle restriction started causing problems yesterday.
The average-value of modify.ModifyBlock.Height in LLClientView.cs:4170
seem to be incorrect or it isn't the average? Mhhh...
So the terrain build -> Flaten Sphere is unuseable.
I have put in a patch that contains a workaround while
the main problem is not solved.
* Puts remote requests in a single worker thread
* Worker thread only starts when there are agents to serve
* When there are no agents to serve, it shuts down
* A good example of how to deal with threads in non-shared modules so they don't end up consuming threads per regions
If prim is part of SOG, then ask the SOG to update the
position, rather than asking the part itself.
Ghosted child prims should no longer result from llSetPos.
Not sure if this is the right approach for all cases ,
would appreciate feedback on the patch.
The attached patch fixes mantis bug 2312 (llGetPos() returns incorrect
values for child prims where the root prim is rotated). Regression
tests still pass.
Incidentally AbsolutePosition which was used before looks a little
suspicious to me as its always going to return the wrong value if the
root prim is rotated. GetWorldPosition does take the rotation into
account, but AbsolutePosition is used in a lot of places. Though i
don't understand why there is both GetWorldPosition as well as
AbsolutePosition so I've left the latter alone.
[i also cleaned up some indent problems, --- dr scofield]
Attached is a patch for LLGround which was just plain broken and could
cause a runtime error. It now returns valid data with valid input (ie
the offset does not take the position off the edge of the sim), but a
runtime error will occur if invalid data is given.
On invalid data the LL servers return the ground height based on a
valid point closest to the effective position calculated using the
supplied offset. Is the OpenSim convention to replicate the LL servers
as closely as possible? If so I can submit an additional patch to
replicate the LL behaviour.
If you use load-oar to transfer region data from one sim to another
then currently inventory items can be left with unknown owner
permission which results in them being no-mod/no-copy for
everyone. The attached patch fixes things up so if the owner uuid does
not exist on the destination system then it assigns ownership (and the
creator for completeness) to the master avatar id. This will make it
much more practical to share copies of regions :-)
fields is GONE (HttpServer does not support that), you can read the
"normal" HTTP headers available via properties, and you can add
headers. also, it is now possible to set a timeout for KeepAlive (for
those clients that pay attention to it).
this also fixes the broken REST inventory/assets/appearance services,
they should be working again.
testcase for OSHttpResponse will follow.
* I believe this was the cause of the remaining packet_out_of_order messages in the Linden client logs
* There were race conditions where multiple clientstacks would overwrite each other's sequence numbers
* Changing network bandwidth in the preferences will now have a much more noticeable effect - a user may want to increase this if data is being slow to download from opensim
llSetLinkApha is not fully implemented and has not been updated
to use the recently added GetLinkParts and associated implementation
pattern as per llSetLinkColor and llSetLinkPrimitiveParams.
* Fixes 1 too large count in region you're in (Region no longer reports the green dot about yourself to you)
* For all local requests, the region will check itself instead of going to it's web service. (optimization)
Prevent EventAbortException inner exceptions of
TargetInvocationException being re-thrown from
OpenSim.Region.ScriptEngine.Shared.ScriptBase.
Executor.ExecuteEvent
Implementation of llModifyLand() and There is a bug on
permission-check of land-terraforming: x an y-coordinates
are interchanged on function-call ExternalChecksCanTerraformLand.
Correct: x is west, and y is north. 2) Missing check of
"Other allow to terraform-flag" (Parcel.ParcelFlags.AllowTerraform)
Introduce a resend counter on the ack queue. The header "Resent" field is
now obsolete. Implement 3 resends on reliable packets, variable.
Increase default resend timeout to 3000ms and default silence threshold
to 350ms.
* This revision also makes the exception catcher of last resort print to the log instead of just the console
* This means logs should now capture sim crashing exceptions, though not those which are caused by a crash of the virtual machine itself
* Resolve redundancy by removing the OpenSimBase check - if modules are recieve nini config directly they should probably be the ones to do the checking
Addresses llDie issues. The attached patch catches run time
exceptions that occur during method invocation (of type
TargetInvocationException) and exposes the internal exception.
This makes it possible to pass out the SelfDeleteException.
Also added handlers in a couple places to make sure that
exception was being passed out far enough to be handled
correctly. Tested on DNE.
* This patch aims to store look at data when an avatar logs off in grid mode
* However, in my short test it doesn't appear to be working yet - numbers are being stored but they don't look correct
* But this doesn't appear to cause any login problems
* Thanks tyre
instead of the 130s timeout somewhere. Additionally, mark the map-tile as
offline. This partly fixes the TP problems of Mantis 2332; the rest is a viewer
problem (just relogin).
- Added lookup in the data-layer
- MySQL works
- SQLite doesn't have a grid-db, so it won't work there
- I added MSSQL-code to the best of my knowledge; but I don't know MSSQL :-)
- Added the plumbing up to OGS1GridServices. This speaks with the grid-server
via XMLRPC.
- Modified MapSearchModule to use the new data. It's backward compatible; if
used with an old grid-server, it just returns one found region instead of a
list.
- Refactored a bit.
Note: This updates data, grid-server and region code. No new files.
Fix: objects being duplicated inventory on detach. Fix: Mad jumping around of
attachments while editing. Fix: Attachments being persisted to database on
login. Fix: Attachments being persisted when changed by a script like
invisprim refresh. Fix: Attachpoint set, but not reset correctly. Fix: prevent
spurious full updates while editing attachments. Several other fixes
* we appear to both setup a default configuration and provude identical defaults when we later try to read the values - this is probably not really necessary
old way: each region module interested in chat from client had to
- subscribe to scene.EventManager.OnNewClient
- then in its OnNewClient delegate it would subscribe to
client.OnChatFromViewer to capture chat messages coming
new way: ChatModule is the only region module that uses the "old
way" approach but is now forwarding all client chat via
scene.EventManager.OnChatFromClient
- each region module interested in chat from client now only
subscribes to scene.EventManager.OnChatFromClient
this not only simplifies code, but also allows us to substitute
ChatModule with derived classes (ConciergeModule is going to be one
example).
Also, this changeset changes ChatFromViewer to ChatFromClient as it
doesn't necessarily have to be a viewer that is a chat source.
i've taken great care to only comment out those OnNewClient delegates
that were only used for getting at the client chat --- hope it's not
breaking anything.
1. type issues on column create in ado.net
2. not setting a field in the ado.net row translates into explicitely
setting it to null in sqlite land (because it can't read the defaults
stanzas out of the database)
Things should work again after this.
* Switched it on by default
* Updated OpenSim.ini.example to reflect this
* Caught a UDP Server issue that occurs when the network pipe is saturated
* Still experimental :D
In Second Life's implementation of llParseString2List(), all spacer
strings which occur within the source string are included in the
resulting list. In OpenSim's implementation, any spacers occurring
at the beginning of the string are discarded; furthermore, if multiple
spacers occur between non-spacer elements, or at the end of the source
string, only the first spacer is added to the resulting list;
the remainder are discarded.
Thank you, fusspawn, for an implementation of osGetSimulatorVersion.
This patch removes the llRequestSimulatorData(..., 128) hack and
implements the functionality as an osFunction.
regions in the in-world map. It currently only returns the first region that
matches the search string; in a future version it will return more search
results.
Note: File added; run runprebuild.
* This actually probably doesn't make a huge difference. We still end up resending a massive number of packets in quite a few situations, but it's not easy to consistently
reproduce this.
* Might really need some throttling of packet send to the client on the OpenSim end.
required to log in. set_login_params accepts avatar_uuid and password of a
user with god level 200 or more, and allows setting either or both the
login_motd or login_level
* This is a HUGE update.. and should be considered fraut with peril.
* SSL Mode isn't available *yet* but I'll work on that next.
* DrScofld is still working on a radical new thread pump scheme for this which will be implemented soon.
* This could break the Build! This could break your Grid!
A number of the deprecated functions had missing parameters
causing compile errors. These included:
llSound, llMakeExplosion, llMakeFountain, llMakeSmoke,
llMakeFire, llPointAt, llXorBase64Strings, llSetPrimURL
OS/SL script conformance, implement llSoundPreload and
llRemoteLoadScript to behave as in SL. In SL
llSoundPreload appears to do nothing. In OS
llRemoteLoadScript shouts an error when invoked
"Deprecated. Please use llRemoteLoadScriptPin instead."
* Updated MSSQL to reflect resend changes
* Added the new columns in prims table.
* Created a implementation for getting gestures.
* Remove configurable table names for user.
* Thanks Ruud Lathorp
* This is an initial basic experimental code for inventory import and export from the region server
* Probably not yet ready for general use
* Thanks Kayne!
User server won't start up for a MSSQL grid migrating from a significantly
older version to current version due to duplication in three of the
migrations code files. Patch included takes out the duplicated code from
the three files so a smooth update should happen on start up.
Estate/ Manager Owner Uses the Region/Estate Menu Region TAB,
and uses "Teleport Home All Users..." (Action Button), the
action will complete but no one will be teleported and all
users still function in the region ok.
- Added TeleportFinish event to the event-queue. It works better than
before (you can teleport), but it doesn't work quite right yet (you
start TPing after the TP again).
Beware: Still experimental and non-working.
The current llGetLinkName returns an empty string if a prim
with the given link number is not found in the link set. In
SL an empty string is only returned if the prim name is actually
blank, a NULL_KEY is returned instead with a couple of exceptions.
* If EventQueueGet is enabled, use that instead of a few UDP packets, if it's disabled use the UDP packets like normal.
* We *really* suggest users do not turn on EventQueueGet yet.. as it's highly experimental, broken, and resource intensive
* Updated OpenSim.ini.example
* Testers of EventQueueGet.. in OpenSim.ini, it's in the [Startup] Section.. change EventQueue = false, to EventQueue = true.
* returns FAKEEVENT instead of the connection returning a 502. It doesn't like our 502's for some reason.. so, in leau of this.. send it a fake event.
* Once again, this is still 'really early' code, so please don't blame us if you have no more threads left.
* This won't function yet as far as the client can tell.. because it doesn't respond to the first query with a 200 message.
* We have to figure out how to encode those binary values in the example code in the module...
* Committing this so we have a start point. Will continue to work on this more today.