Compare commits

...

5060 Commits

Author SHA1 Message Date
Justin Clark-Casey (justincc)
bb7c88805a As per the LL grid, for attachments make llGetObjectDetails() OBJECT_VELOCITY return the avatar's velocity and not always Vector3.Zero.
This completes http://opensimulator.org/mantis/view.php?id=7177
2014-08-30 00:58:47 +01:00
Justin Clark-Casey (justincc)
4d8bc007e2 minor: fix wrong indentation in previous commit 0cc3cd 2014-08-30 00:54:36 +01:00
Justin Clark-Casey (justincc)
0cc3cdfb4e As per the LL grid, for attachments make llGetObjectDetails() OBJECT_ROT return the avatar's rotation.
This is already the behaviour of OBJECT_POS.
Partially satisfies http://opensimulator.org/mantis/view.php?id=7177
2014-08-30 00:48:59 +01:00
Justin Clark-Casey (justincc)
a02dae566c Fix issue where moving a seated avatar would not adjust their subsequent stand position.
Addresses http://opensimulator.org/mantis/view.php?id=7299
2014-08-30 00:26:18 +01:00
Justin Clark-Casey (justincc)
099212167b Implement STATUS_BLOCK_GRAB_OBJECT in llSetStatus()/llGetStatus() and correct effect of STATUS_BLOCK_GRAB
As per http://wiki.secondlife.com/wiki/LlSetStatus
Setting STATUS_BLOCK_GRAB_OBJECT prevents or allows move of a physical linkset by grab on any prim.
Setting STATUS_BLOCK_GRAB prevents or allows move of a physical linkset by grab on a particular prim.
Previously, setting STATUS_BLOCK_GRAB would prevent drag via all prims of the linkset.
2014-08-29 23:40:21 +01:00
Justin Clark-Casey (justincc)
1b75ec5647 Ignore whitespace when reading serialized XML objects.
This was previously effectively being done by XmlDocument in the multiple passes through the XML.
This change tells XmlReader to ignore whitespace.  This also means changing arguments to use XmlReader instead of XmlTextReader (a descendent of XmlReader) directly.
XmlReader.Create() has been the recommend way to create XML readers since .NET 2.0 as per MS SDK and is the only way to specific ignore whitespace settings.
2014-08-29 19:08:23 +01:00
Justin Clark-Casey (justincc)
3555c0c3f3 Fix recent regression test TestDeserializeXmlObjectWithOtherParts() which was not meant to indent the input xml 2014-08-29 18:14:47 +01:00
Justin Clark-Casey (justincc)
305c3e668a Add regression test for deserializing xml objects with more than one non-root part. 2014-08-29 18:06:29 +01:00
Justin Clark-Casey (justincc)
1a3ffda852 minor: Eliminate more unnecessary code copying individual parameters for Vector3 copying in Scene - this is not necessary as Vector3 is a value type 2014-08-28 18:37:34 +01:00
Justin Clark-Casey (justincc)
f132f642b2 On code section that rezzes single objects and attachments, reduce CPU use by reading asset XML a single time with a stream reader rather than multiple times.
Reading large XML documents (e.g. complex attachments) is CPU expensive - this must be done as few times as possible (preferably just once).
Reading these documents into XmlDocument is also more resource intensive than using XmlTextReader, as per Microsoft's own publication "Improve .NET Application Performance and Scalability"
Optimization of other cases will follow if this change is successful.
2014-08-28 18:15:33 +01:00
Justin Clark-Casey (justincc)
b1ff78f4d8 Don't allow update timer to invoke another scene update if the previous is still active. 2014-08-26 18:52:09 +01:00
Justin Clark-Casey (justincc)
bafa82eb12 Remove race conditions from where SP.AbsolutePosition could change between the various property checks. 2014-08-26 18:25:14 +01:00
Justin Clark-Casey (justincc)
42bb122232 Fix frame times when updating scene on timer. 2014-08-26 18:13:38 +01:00
Justin Clark-Casey (justincc)
64f640f901 Implement experimental non-default mechanism to update scene via a timer rather than a persistent thread with sleep.
This is to see if an inaccuracy in sleep times under load is responsible for increase in frame times even when there is spare time still available.
Can currently only be activated by setting "debug scene set update-on-timer true".
Can be switched between timer and thread with sleep updates whilst the scene is running.
2014-08-26 18:13:38 +01:00
BlueWall
aeadddf77a Add back URL endings in examples 2014-08-25 20:29:46 -04:00
Justin Clark-Casey (justincc)
fabab7414f Remove database connection locking in MySQLXAssetData. This is unnecessary as connections aren't shared and transactions are already in place where necessary. 2014-08-22 20:34:33 +01:00
Justin Clark-Casey (justincc)
0cb805a64c Remove query locking in MySQLUserProfileData. This is not necessary as the connection is not shared. 2014-08-22 20:28:56 +01:00
Justin Clark-Casey (justincc)
709038aa2a Remove some use of database connection locking from MySQLSimulationData - this has not been necessary for some time as database connections are not shared.
However, many locks remain since they may effectively be providing transactionality in some operations (e.g. prim updates across multiple tables).
These are candidates for being replaced with proper database transactions, since this would not block unrelated operations (e.g. land save and object save)
or unrelated operations on the same tables (e.g. storage of one linkset whilst another is being removed).
In practice, any performance deg due to contention is probably rare and short lived as the major prim operations are performed in memory and only persisted some time afterwards.
2014-08-22 20:23:48 +01:00
Justin Clark-Casey (justincc)
d899bdcb9b Remove lock in MySQLFramework. This is not necessary as the connection is not shared. 2014-08-22 19:52:03 +01:00
Justin Clark-Casey (justincc)
f129b824c3 Removing locking on requests in MySQLAssetData.
These locks are not necessary since the connection is taken from the underlying mysql pool and not shared.
Such locking is already not done by some other parts of OpenSim.Data.MySQL.
Pointed out by arribasim-dev
2014-08-22 19:46:46 +01:00
Justin Clark-Casey (justincc)
4e03d352c3 Extend drop command to "debug lludp drop <in|out>..." to allow drop of inbound packets.
For test/debug purposes.
2014-08-19 18:43:21 +01:00
Justin Clark-Casey (justincc)
298376d5c7 Add "debug lludp drop out <add|remove> <packet-name>" console command for debug/test purposes.
This drops all outbound packets that match a given packet name.
Can currently only be applied to all connections in a scene.
2014-08-19 18:34:17 +01:00
Justin Clark-Casey (justincc)
ce74418c20 minor:Give console feedback when we sit or stand pCampbot bots.
Also only write console lines for actually connected bots.
2014-08-19 00:58:33 +01:00
Justin Clark-Casey (justincc)
88b2fc61ff Add clientstack.<scene>.OQRERequestsWaiting stat
Only present if OQRE is enabled
2014-08-19 00:42:19 +01:00
Justin Clark-Casey (justincc)
84cea46c10 Add experimental OutgoingQueueRefillEngine to handle queue refill processing on a controlled number of threads rather than the threadpool.
Disabled by default.  Currently can only be enabled with console "debug lludp oqre start" command, though this can be started and stopped whilst simulator is running.
When a connection requires packet queue refill processing (used to populate queues with entity updates, entity prop updates and image queue updates), this is done via Threadpool requests.
However, with a very high number of connections (e.g. 100 root + 300 child) a very large number of simultaneous requests may be causing performance issues.
This commit adds an experimental engine for processing these requests from a queue with a persistent thread instead.
Unlike inbound processing, there are no network requests in this processing that might hold the thread up for a long time.
Early implementation - currently only one thread which may (or may not) get overloaded with requests.  Added for testing purposes.
2014-08-19 00:17:12 +01:00
Justin Clark-Casey (justincc)
b375f86f11 Make LLUDPServer.Scene publicly gettable/privately settable instead of protected so that other logging code in the clientstack can record more useful information
Adds some commented out logging for use again in the future.
No functional change.
2014-08-19 00:17:12 +01:00
Kevin Cozens
321816b32c Prevent exception if inventory item in llGiveInventory() call doesn't exist. 2014-08-18 16:00:49 -04:00
Justin Clark-Casey (justincc)
3a643e2456 Don't allow the last behavior to be removed from a pCampbot bot
If you want to stop existing behavious, add the None behaviour.
2014-08-15 22:44:31 +01:00
Justin Clark-Casey (justincc)
1d2933ca51 Resolve a small race condition on removing bot behaviours that might leave previous behaviour active
Also closes behaviours on disconnect instead of interrupt, though this makes no practical difference.
If existing behaviour is None, other added behavious will not take affect until None is removed (as this is an infinite wait until interrupted).
2014-08-15 22:41:00 +01:00
Justin Clark-Casey (justincc)
e0c6bfa81e If a user moves back in sight of a child region before the agent has been closed on teleport, don't unnecessarily resend all avatar and object data about that region. 2014-08-15 21:47:34 +01:00
Justin Clark-Casey (justincc)
91e1aaa5d4 On teleport to a region that already has a child agent established (e.g. a neighbour) don't resend all the initial avatar and object data again.
This is unnecessary since it has been received (and data continues to be received) in the existing child connection.
2014-08-15 21:47:34 +01:00
Kevin Cozens
626536b8cc Added RestrictEmail to make llEmail only send to avatars email address if true. 2014-08-14 02:40:06 -04:00
Justin Clark-Casey (justincc)
4c781db572 Make RootTerseUpdatePeriod and ChildTerseUpdatePeriod configurable in [InterestManagement] in OpenSim.ini for experimental purposes.
If n > 1 for RootTerseUpdatePeriod only every n terse update is actually sent to observers on same region, unless velocity is effectively zero (to stop av drift).
If n > 1 for ChildTerseUpdatePeriod only every n terse update is sent to observers in other regions, unless velocity is effectively zero.
Defaults are same as before (all packets are sent).
Tradeoff is reduction of UDP traffic vs fidelity of observed av mvmt.
Increasing n > 1 leads to jerky observed mvmt immediateley for root, though not on child, where experimentally have gone to n = 4 before jerkiness is noticeable.
2014-08-14 01:39:26 +01:00
Justin Clark-Casey (justincc)
6ea82ad48a Make some existing reprioritization values changeable outside the scene for test purposes, and use more consise property syntax.
No functional change.
2014-08-14 01:16:58 +01:00
BlueWall
dabb8e62f4 Update OpenID server handler with proper interface. fixes http://opensimulator.org/mantis/view.php?id=7301 2014-08-13 20:06:07 -04:00
Justin Clark-Casey (justincc)
bc0895c758 On entity transfer of scene presence, replace polling sleep in SP.WaitForUpdateAgent() with a triggered event instead.
Rapid polls are more expensive than triggered events (several polls vs one trigger) and may be problematic on heavily loaded simulators where many threads are vying for processor time.
A triggered event is also slightly quicker as there is no maximum 200ms wait between polls.
2014-08-13 23:45:51 +01:00
Justin Clark-Casey (justincc)
0d2a25b477 Remove redundant origin region lock in SP.CompleteMovement()
This is already going to be correctly set by WaitForUpdateAgent() earlier on in that method, which is always called where a callback to the originating region is required.
2014-08-13 23:11:32 +01:00
Justin Clark-Casey (justincc)
0db6f3a2bd Only set up the UnackedMethod for an outgoing message if that message is actually meant to get an ack (because it's reliable). 2014-08-13 22:57:14 +01:00
Justin Clark-Casey (justincc)
21176a3a90 Terminate 'nothing' behaviour (and potentially others) by signalling using an event rather than polling connection state every 100ms
This kind of polling is very expensive with many bots/polling threads and appears to be the primary cause of bot falloff from the client end at higher loads.
Where inbound packet threads can't run in time due to contention and simulator disconnect timeout occurs.
2014-08-13 22:38:27 +01:00
Justin Clark-Casey (justincc)
f1f935ed95 Add 'server' stats information to pCampbot, as used elsewhere in OpenSimulator
This adds the "show stats", "stats record", etc. commands and information on available Threadpool threads, etc.
It also adds the Watchdog which logs warnings if time between executions is unexpectedly large.
2014-08-13 19:53:42 +01:00
Justin Clark-Casey (justincc)
f1cec684e2 For pCampbot, set max number of permitted connections to an endpoint to int.MaxValue
This is to avoid issues where many bots connect to a single end point with multiple regions, where each region requires a long-lived poll connection for each bot.
2014-08-12 18:46:09 +01:00
Justin Clark-Casey (justincc)
fbdf507e98 Update libomv libraries with those built from commit 2208379.
This is to resolve some issues for pCampbot, chiefly with capability connection and inbound handling.
2014-08-12 01:53:48 +01:00
Melanie Thielker
37921c66e5 Avination's Dynamic Floater Module. This works with Singularity viewer only.
It's WIP in that a dialog builder is on it's way. For now, the XML needs to
be handmade.
2014-08-12 01:04:29 +02:00
Justin Clark-Casey (justincc)
8738445eb7 Move the inventory request lock introduced in git master a58152bd to HGInventoryBroker to preserve that behaviour there but allow 2 simultaneous inv requests (chiefly WebFetch) rather than 1
This lock serialized all requests and made the inventory throttling in WebFetch redundant.
By moving this lock, two simultaneous requests may now take place which may help with http://opensimulator.org/mantis/view.php?id=7054
2014-08-09 00:52:51 +01:00
Justin Clark-Casey (justincc)
30f1b424bb Change RootRotationUpdateTolerance from 0.01 to 0.1 in code as well. 2014-08-08 23:47:53 +01:00
Justin Clark-Casey (justincc)
36f01dce2d Change MaxPoolThreads default in code as well from 15 to 300 2014-08-08 23:47:03 +01:00
Justin Clark-Casey (justincc)
91f3be71e3 Reduce default rotation AgentUpdate output sensitivity to a setting that cuts down UDP traffic without obvious adverse effects on observed avatar rotations.
Experimentally, on the Linden Lab grid the avatar can rotate slightly before triggering AvatarUpdates, whereas this is practically impossible in OpenSimulator.
These updates allow other avatars to see rotations, though sensitivity is low since other avatars can only be seen in one of 8 body rotations.
This commit changes sensitivity from 0.01 to 0.1, which better matches LL and reduces UDP traffic which has a beneficial impact on network and CPU load.
This has no impact on rotations in the simulator itself so simulation fidelity is the same as before.
To change this setting back for test/other purposes, edit RootRotationUpdateTolerance in the [InterestManagement] section of OpenSim.ini
2014-08-08 23:39:40 +01:00
Justin Clark-Casey (justincc)
a483525016 Change default max threads if SmartThreadPool is used as the main thread pool from 15 to 300
Running out of such threads under heavy load causes delayed packet processing which can lead to spurious UDP resends and knock on issues.
We already massively boost the min/max builtin pool worker and IOCP threads (which even with STP are still used for inbound network requests) without obvious adverse effects.
The threads are only instantiated if they are required.
This change does not affect other async_call_method options.
2014-08-08 23:34:49 +01:00
BlueWall
2924d250ab Fix short help string for show region command. 2014-08-06 21:41:53 -04:00
BlueWall
10a8d2852e OpenSimExtras
Move the experimental extra features functionality into the GridService. This sends default values for map, search and destination guide, plus ExportSupported control to the region on startup. Please watch http://opensimulator.org/wiki/SimulatorFeatures_Extras for changes and documentation.
2014-08-06 17:25:12 -04:00
Oren Hurvitz
e36e416637 Fixed crash when using Allowed/Denied Viewers, and the viewer's name is shorter than one of the test strings
This fixes http://opensimulator.org/mantis/view.php?id=7294
2014-08-06 19:02:15 +03:00
Justin Clark-Casey (justincc)
78ccadb27e Add RootPositionUpdateTolerance, RootRotationUpdateTolerance, and RootVelocityUpdateTolerance parameters to [InterestManagement] in OpenSimDefaults.ini
These govern when AgentUpdates are sent to observers on position, rotation and velocity changes to an avatar (including the avatar themselves).
Higher values reduce AgentUpdate traffic but at a certain level will degrade smoothness of avatar and perceived avatar movement.
2014-08-06 00:53:14 +01:00
Justin Clark-Casey (justincc)
961cb9cc77 refactor: Rename recent new Client*UpdateTolerance to Root*UpdateTolerance for better accuracy and consistency with other similar parameters 2014-08-06 00:35:26 +01:00
Oren Hurvitz
dc2471fedd Fixed premature closing of the connection in DataSnapshotManager 2014-08-05 19:09:11 +03:00
Justin Clark-Casey (justincc)
0e71e3889c Go back to disconnecting bots in parallel since serially is too slow.
However, disconnecting now halts any current connection, with the possible exception of the single currently connecting bot.
2014-08-05 01:37:10 +01:00
Justin Clark-Casey (justincc)
fcc665a567 Put pCampbot "disconnect" command on separate thread like "connect" so that we can continue to run status commands whilst bots are disconnecting. 2014-08-05 01:15:07 +01:00
Justin Clark-Casey (justincc)
e57e9e95d4 Allow "show bots" pCampbot console command to quickly report status by not locking entire bot list for almost 100% of connection time. 2014-08-05 01:07:08 +01:00
Justin Clark-Casey (justincc)
d6890d78ad Make currently unfiltered EventQueue log messages only appear now at DebugLevel 1
This covers event queue setup messages and some outgoing messages (e.g. EnableSimulator)
In my experience these messages are only useful if you really know what they mean and you're looking for them
Otherwise, they're quite spammy.
Event queue DebugLevel 1 is enabled with the "debug eq 1" console command
2014-08-05 00:52:04 +01:00
BlueWall
de3421b408 Fix typo in log message 2014-08-02 08:21:25 -04:00
Justin Clark-Casey (justincc)
7cec4997db Fix regression in SimulatorFeatures module that would stop OpenSimulator from starting if no [SimulatorFeatures] section was present in config. 2014-08-01 20:29:25 +01:00
Justin Clark-Casey (justincc)
dfd0c2a54a If REMOVEAGENTFROMGROUP core groups call fails because requesting agent does not have sufficient permission, return null failure result rather than true.
On non-HG this is on the only recognized failure state so we can return more information in the error result.
On HG there are multiple failure states which would require more work to distinguish, so currently return the unsatisfying "Internal Error" like some other existing calls.
2014-07-31 21:32:20 +01:00
Justin Clark-Casey (justincc)
6ab463a446 Don't overwrite the null result with the true result is groups service REMOVEAGENTFROMGROUP call has failed because of missing parameters 2014-07-31 21:20:55 +01:00
BlueWall
cac910d401 Add region-side extra feature setting for destination guide 2014-07-31 08:20:06 -04:00
Robert Adams
50ed97aa1a BulletSim: thread safe handling of list of avatars.
Fix for 7284 which is an enumeration exception when starting up a region.
2014-07-30 21:49:57 -07:00
Justin Clark-Casey (justincc)
6c4eed5539 Fix bug where calling PUTGROUP on the core groups service without specifying a ServiceLocation would set the group name to an empty string.
This should set the ServiceLocation to an empty string instead.
2014-07-31 00:32:35 +01:00
BlueWall
3ec695e05b Add Chat module extra feature settings to GridExtraFeatures service 2014-07-30 15:01:26 -04:00
BlueWall
e0d8f42e6b Simulator Extra Features Service
Provide a means for regions to fetch extra features supported by modern viewers from a central location
.
2014-07-30 11:24:39 -04:00
Justin Clark-Casey (justincc)
a4107cb6c7 In TerrainModule, lock m_perClientPatchUpdates when removing entries.
This may have been the trigger CheckSendingPatchesToClients() dictionary out of sync exceptions in today's load test.
Don't need to check ContainsKey() since Remove() returns false on a request to remove a key that it doesn't have
2014-07-29 23:39:10 +01:00
Justin Clark-Casey (justincc)
fcf5fb5dfd Implement "scene debug set root-upd-per" for dropping 1 in N root agent updates except to originator
For experimental purposes.
Also corrects a previous bug where each terse update sent was counted rather than each set of terse updates to agents.
2014-07-29 18:54:16 +01:00
Justin Clark-Casey (justincc)
0f87a99e54 Add debug mechanism for only sending 1 in N AgentUpdate packets to child agents.
Allows experiments in manually reducing updates under heavy load.
Activated by "debug scene set client-upd-per" console command.
In a simple test, can send as few as every 4th update before observed movement starts becoming disturbingly rubber-banded.
2014-07-29 18:09:11 +01:00
Justin Clark-Casey (justincc)
5cd21516a4 Add "debug scene set appear-refresh true|false" to control whether periodic appearance refresh is active.
Corresponds to ResendAppearnceUpdates setting in [Appearance] in OpenSim.ini
This was originally implemented to alleviate cloud appearance problems but could be too expensive with large numbers of avatars.
2014-07-29 03:26:14 +01:00
Justin Clark-Casey (justincc)
f54fccba1e Make it possible to change avatar position update, rotation and velocity tolerances on the fly.
This is done via "debug scene set client-pos-upd, client-rot-upd, client-vel-upd".
For testing purposes.
2014-07-29 03:13:10 +01:00
Justin Clark-Casey (justincc)
3654ae8d8c Allow the "debug scene set physics false|true" command to work when bulletsim physics is running in a separate thread.
This will also allow the "disable physics" setting in the region debug viewer dialog to work in this circumstance.
2014-07-29 01:21:15 +01:00
Justin Clark-Casey (justincc)
df816b38ac minor: make "debug scene set" usage command accurate again from last commit f6f7585 2014-07-29 00:20:35 +01:00
Justin Clark-Casey (justincc)
f6f7585ec5 Add a "debug scene set child-repri <double>" command that allows child reprioritization distance to be changed on the fly.
This governs when child agent position changes are sent to neighbouring regions.
Corresponding config parameter is ChildReprioritizationDistance in [InterestManagement] in OpenSim.ini
For test purposes.
2014-07-29 00:13:29 +01:00
Robert Adams
9c804466e5 BulletSim: rearrange code for sensing whether shapes have been
constructed.
Add routine to check for failed and use that method rather than
    checking individual state.
2014-07-26 16:03:43 -07:00
Justin Clark-Casey (justincc)
327632dc66 Add inventory.<url>.RequestsMade stat.
This gives a count of all requests made to the remote inventory service.
This is finer grained than inventory.httpfetch.ProcessedFetchInventoryRequests since such a request can be comprised of many individual inv service calls.
In addition, this will count requests that don't go through the HTTP inventory fetch (e.g. HG, archiving, etc.)
2014-07-26 02:17:04 +01:00
Justin Clark-Casey (justincc)
56a623ac0c Fix issue with TestTextureNotFound in previous commit 1e3027a
Stop failure by actually giving the test handler a path instead of null
2014-07-26 01:56:42 +01:00
Justin Clark-Casey (justincc)
1e3027afb1 Temporary stop CAPS service points from being added to stats as this can be a huge number.
A stop gap solution - a better one may be to improve stats display on simulator-side.
Caps information is still accessible via the "show caps stats by user" and "show caps stats by cap" commands
2014-07-26 01:41:03 +01:00
Justin Clark-Casey (justincc)
c0c92a95bf Add undocumented RemoteRequestTimeout seconds parameter to xinventory requests
This is for testing purposes (chiefly http://opensimulator.org/mantis/view.php?id=7054) so many not be permanent
Setting this will change the xinventory request timeout from the simulator from the default 100 seconds
2014-07-25 23:06:23 +01:00
Justin Clark-Casey (justincc)
8c5c9806d7 Add stats for service endpoints using existing data.
For each service endpoint (e.g. posts to the xinventory service), a stat is available which shows the number of requests received and moving average per second
The full name is "service.<http-method>:<path>.requests (e.g. service.POST:/xinventory.requests)
2014-07-25 23:00:41 +01:00
Michael Cerquoni
46781253c3 fix comments in physics section of [Startup] to reflect the actual default engine. 2014-07-25 12:30:09 -04:00
Justin Clark-Casey (justincc)
e85291329b Add suppression of grid-side "show regions" command in simulator console for Hypergrid setups as well as normal grid.
Should have been done in recent commit 6048dfcd
Resolves http://opensimulator.org/mantis/view.php?id=7281
2014-07-25 02:02:07 +01:00
Justin Clark-Casey (justincc)
cc61681484 Revert "Write UDP statistics to the log, not just the console (e.g., "show queues")"
Fixes http://opensimulator.org/mantis/view.php?id=7280
It can't be done this way because the stats data needs to show up on the console at all log levels, not just debug.
But this means setting it to log at fatal, which is not appropriate for this stuff in the log.
I understand the desire but this has to be done some other way, perhaps by (yet another) config parameter.
Also, this was already being done with the ClientStatsReport but that also should be done in another way, I think.

This reverts commit 5d53412766.
2014-07-25 01:56:41 +01:00
Justin Clark-Casey (justincc)
086bc6f748 Add missing default female hair texture for Ruth avatar.
This was not in library assets despite being referred to in assets/BodyPartsAssetSet/base_hair.dat
Texture ID is 7ca39b4c-bd19-4699-aff7-f93fd03d3e7b
Taken from https://github.com/openmetaversefoundation/simiangrid/blob/master/Grid/default_assets/Default%20Female%20Hair-7ca39b4c-bd19-4699-aff7-f93fd03d3e7b.j2c
2014-07-24 20:03:19 +01:00
Justin Clark-Casey (justincc)
3a87cce2e0 Fix recent regression in 3c6becd5 where login or hg login to variable sized regions failed with outdated simulator message.
I forgot that a null 'their version' would not be passed over the wire and ends up as an empty string instead (like older simulators).
So instead pass through the correct simulator protcol version instead (SIMULATOR/0.3) when querying from login or hg login.
Also removes a debug console write for agent limit accidentally left in for the same commit.
Relates to mantis 7276
2014-07-22 18:04:28 +01:00
Justin Clark-Casey (justincc)
36920adb96 minor: convert tabs to spaces that got in on recent commit 4a9282e 2014-07-21 23:58:30 +01:00
Justin Clark-Casey (justincc)
3c6becd524 On login and first HG entrance to a foreign grid, perform query access checks before proceeding. 2014-07-21 23:53:33 +01:00
Justin Clark-Casey (justincc)
3355bedaeb minor: Limit processor related stats to 3 decimal places instead of all the places.
Easier to read and analyze, and probably still too much detail (1 dp would probably be fine)
2014-07-21 23:08:15 +01:00
Justin Clark-Casey (justincc)
200dcee1b7 Fix CPU processor use reporting on Mono.
Despite the comments in the code, it appears that the issue where the .NET performance counter was wrongly idle time time on Mono was fixed in 2009.
https://bugzilla.novell.com/show_bug.cgi?id=468625
Which means that the workaround is no longer necessary and produces bad results instead.
2014-07-21 22:55:38 +01:00
root
1a9c14b041 Revert "Removed unused files: Texture/Mesh server connectors"
This reverts commit f6ea5088f4.
2014-07-21 21:25:48 +00:00
BlueWall
4a9282e681 Add missing parts to profiles - classified delete 2014-07-21 12:46:26 -04:00
Oren Hurvitz
899bcb7acd Fixed: after a Hypergrid teleport, attachments often either disappear, or appear both on the avatar AND as in-world objects.
Another manifestation of this bug is that after a Hypergrid teleport, when you click on one of the avatar's attachments the object doesn't show its name. This means that the viewer knows the attachment is there, but the simulator does not.

The problem was caused by treating Hypergrid teleports as if they're Logins (because the teleport flag ViaLogin is enabled).

This may fix: http://opensimulator.org/mantis/view.php?id=7238
This may fix: http://opensimulator.org/mantis/view.php?id=7220
2014-07-21 09:29:51 +01:00
Oren Hurvitz
712c50e0bf Don't append attachments multiple times 2014-07-21 09:29:50 +01:00
Oren Hurvitz
feacae173e Fixed avatar hovering above the ground. The avatar physics capsule was too tall.
This is related to http://opensimulator.org/mantis/view.php?id=7067 .
But that bug complains about BulletSim, and this fix is for ODE.
2014-07-21 09:27:57 +01:00
Oren Hurvitz
4804edf77f Allow reading the BulletSim detail log while the sim is running 2014-07-21 09:27:57 +01:00
Oren Hurvitz
2d034e20c4 XBakes: store the assets only in the sim's local assets cache; not in the main assets server. Also, some cleanup. 2014-07-21 09:27:56 +01:00
Oren Hurvitz
11031abf26 Changed the default XBakes directory to a local path: "./bakes".
Previously it was an absolute path. Now it's a sibling of the maptiles directory.

This fixes http://opensimulator.org/mantis/view.php?id=7063
2014-07-21 09:27:47 +01:00
Oren Hurvitz
6b57b61836 Log RestClient requests similarly to WebClient (e.g, "debug http all 6" logs the entire request and response) 2014-07-21 09:24:45 +01:00
Oren Hurvitz
4c5d7d4683 Fixed problems if an avatar tries to cross regions when the previous cross hasn't completed yet
This caused the client to stop responding, and even the simulators to have problems. The solution is to disallow crossing before the previous cross has completed.
2014-07-21 09:23:13 +01:00
Oren Hurvitz
b481711fa6 Added locking in AccessModule to prevent possible errors when shutting down a simulator that has >1 region 2014-07-21 09:19:05 +01:00
Oren Hurvitz
05cacf6eb6 Eliminated common but un-useful log messages 2014-07-21 09:18:20 +01:00
Oren Hurvitz
f94b3bbe0f Minor: changed "existant" to "existent" 2014-07-21 09:15:05 +01:00
Oren Hurvitz
3cb31e9685 Removed warning about YieldProlog 2014-07-21 09:12:30 +01:00
Oren Hurvitz
46c1d4e319 pCamBot: download Meshes
The "Sculpt" field in prims is used for both Sculpties (where the assets are Textures), and real meshes. Meshes require a different download URL than textures.
2014-07-21 09:12:16 +01:00
Oren Hurvitz
470161ae2e Write some pCampBot messages to the log 2014-07-21 09:11:51 +01:00
Oren Hurvitz
af3498efdb In "show throttles", show the maximum drip rate. This shows whether a client is being throttled due to past poor performance. 2014-07-21 09:10:50 +01:00
Oren Hurvitz
5d53412766 Write UDP statistics to the log, not just the console (e.g., "show queues") 2014-07-21 09:10:19 +01:00
Oren Hurvitz
0d70033a5d Include the group name in group IM's
When sending an ImprovedInstantMessage to a group, the IM's binary bucket is supposed to contain the group's name (this is what SL does). Singularity uses this to show the group name when it shows the message at the bottom of the viewer for a few seconds: "[Group Name] From User: Message". Before this update, the group name was empty ("[]").

This update doesn't have any visible effect in Firestorm, because it doesn't use the group name sent in the IM.
2014-07-21 09:09:17 +01:00
Oren Hurvitz
528704bc04 Added "debug packet --all" option, which changes the packet logging level for both current and future clients
The existing "--default" option only changes the logging level for future clients.
2014-07-21 08:31:20 +01:00
Oren Hurvitz
a57b4b81b9 Fixed the logic that decides if a packet was queued (it was reversed) 2014-07-21 08:31:09 +01:00
Oren Hurvitz
f6ea5088f4 Removed unused files: Texture/Mesh server connectors 2014-07-21 08:30:23 +01:00
Oren Hurvitz
48d1cca303 Better logging of threadpool activity in Overload mode: if we didn't log "Queue threadfunc" for a particular thread then don't log "Run threadfunc" or "End threadfunc" for that thread either. 2014-07-21 08:30:17 +01:00
Oren Hurvitz
9fa8d84598 Eliminated some warnings 2014-07-21 08:30:10 +01:00
Oren Hurvitz
99ac770abb Close streams immediately when we finish using them 2014-07-21 08:30:03 +01:00
Robert Adams
b81187db5a Set "[Terrain]SendTerrainUpdatesByViewDistance=true" by default.
This, by default, enables terrain patches being sent to each avatar
from the avatar away (rather than the old outside-in pattern), only
sending terrain patches within the avatars view distance (making
view loading quicker), and sending multiple terrain patches per
protocol packet (making terrain loading and editing quicker).
2014-07-20 10:56:52 -07:00
Robert Adams
aa8b44c001 Add code to GridService to check for overlapping of varregions
when registering a new region.

Adds parameter "[GridService]SuppressVarRegionOverlapCheckOnRegistration=false"
that can be turned on to suppress the error check if a simulator's database
has old regions that overlap.
2014-07-20 10:34:09 -07:00
Vegaslon
738c60459c BulletSim: Modify first and default vehicle vertical attractor to be feature complete with use of the Limit Roll Only Flag.
Signed-off-by: Robert Adams <misterblue@misterblue.com>
2014-07-18 19:07:00 -07:00
Justin Clark-Casey (justincc)
d1b7c2ece3 minor: remove long unused RegionInfo.ignoreIncomingConfiguration 2014-07-19 01:15:15 +01:00
Justin Clark-Casey (justincc)
29d5950838 minor: remove long unused RegionInfo.commFailTF 2014-07-19 01:10:53 +01:00
Justin Clark-Casey (justincc)
4dc0aaa03f minor: Add meters unit to water height console display 2014-07-18 23:57:33 +01:00
Justin Clark-Casey (justincc)
1bdf0bed9c Add "show region" command which will show parameters for current region.
This shows static data (e.g. region agent limit) whereas "show scene" shows live data (sim fps, current prims, etc.)
2014-07-18 23:52:49 +01:00
Justin Clark-Casey (justincc)
6048dfcd71 In grid mode, add SuppressConsoleCommands flag to [GridService] so that we can stop misleading grid service only console commands from registering.
We need to do this because the simulator initializes and internal copy of the GridService in grid mode for internal purposes
2014-07-18 22:57:04 +01:00
Justin Clark-Casey (justincc)
a26d1ffc66 minor: add method doc to ICommands.HasCommand() 2014-07-18 22:31:04 +01:00
Justin Clark-Casey (justincc)
9be935ac6d Add ICommands.HasCommand() method so that we can detect whether a command has already been registered without needing to also run it 2014-07-18 22:27:39 +01:00
Justin Clark-Casey (justincc)
f0853139d5 refactor: slightly adjust some code in ODECharacter.Move() to eliminate a condition check without changing the logic 2014-07-18 18:13:38 +01:00
Justin Clark-Casey (justincc)
cfbfca6447 With ODE physics, fix an issue where the avatar couldn't jump and then move forward when moving south or west.
Addresses http://opensimulator.org/mantis/view.php?id=5003
Thanks to UbitUmarov for this fix.
2014-07-18 18:03:30 +01:00
Robert Adams
1daec26ba0 BulletSim: rearrange code to prevent using null pointers when a
child mesh is not available when building a linkset.
2014-07-17 21:41:39 -07:00
Michael Cerquoni
e455374a4b fix all instances of "non-existant" to "non-existent" (spelling mistakes) thanks Ai Austin for pointing this out. 2014-07-17 09:37:24 -04:00
Justin Clark-Casey (justincc)
8cd7ca568d Change default script stop method to co-op instead of abort.
co-op should be more stable as it doesn't abort threads, which can trigger virtual machine instability
This change will be invisible to users as script DLLs are recompiled automatically where necessary, though the change won't take affect until the next simulator restart.
This change has no effect on existing script state.
If you want to continue using abort, set ScriptStopStrategy = abort in the [XEngine] section of OpenSim.ini
2014-07-16 22:58:38 +01:00
Justin Clark-Casey (justincc)
d62acc7e37 Update information in OpenSimDefaults to reflect the fact that ScriptStopStrategy in [XEngine] can now be changed without manually deleting old compiled scripts. 2014-07-14 20:53:06 +01:00
Justin Clark-Casey (justincc)
0c8f3dddd8 Use thread-safe version of .NET Random as the SDK class is not thread-safe.
As per http://msdn.microsoft.com/en-us/library/system.random%28v=vs.100%29.aspx, the .NET Random class is not thread-safe.
If called by multiple threads at once, methods may return 0.
Except for llRand(), other OpenSimulator code did not lock before calling a shared Random instance.
This commit adds a ThreadSafeRandom class that extends Random but does internal locking so that it is thread-safe.
This change is invisible to existing callers and the explicit locking in the llFrand() implementation is now redundant.
2014-07-14 20:08:11 +01:00
Justin Clark-Casey (justincc)
e008d54cd4 minor: Remove compiler warning in GridService 2014-07-14 19:28:43 +01:00
Dev Random
4e92b55231 Call RemoveScriptInstance when removing from inventory 2014-07-14 18:06:24 +01:00
Justin Clark-Casey (justincc)
2766bf3fef minor: Move debug xengine script console command to Debug help section where other debug commands live. 2014-07-11 00:18:39 +01:00
Justin Clark-Casey (justincc)
15b38f0036 minor: further cleanup of old vb and yield prolog script engine references that were removed some time ago 2014-07-11 00:15:47 +01:00
Justin Clark-Casey (justincc)
d7b9260496 If [XEngine] ScriptStopStrategy is changed between abort and co-op, for the existing session use the previous strategy for that script rather than not starting the script at all.
We have to do this since we can't unload existing DLLs if they're all in the same AppDomain.
But we can still update the underlying DLL which will be used in the next simulator session.
2014-07-11 00:03:02 +01:00
Justin Clark-Casey (justincc)
6d3b409af2 refactor: use existing Compiler.CreateScriptsDirectory() (renamed to CheckOrCreateScriptsDirectory()) when checking that scripts directory exists on compile.
Code was identical apart from error logging, but if there are failures creating these directories then you'll be
seeing lots of errors anyway, and these will be more informative
2014-07-10 19:40:44 +01:00
Justin Clark-Casey (justincc)
fea18a909f Fix bug in "show modules" comamnd that was showing shared modules as non-shared and non-shared as shared 2014-07-09 23:24:12 +01:00
Justin Clark-Casey (justincc)
a8860d79d8 Turn RestClient.Request() logging down the debug and comment out for now. 2014-07-09 23:12:14 +01:00
Justin Clark-Casey (justincc)
8ae5ab809f Fix issue with running "stats record start|stop" console command
In commit e6080a38 (Wed Mar 19 00:29:36 2014) I renamed this from "debug stats record start|stop"
Unfortunately, I didn't do this fully so before this commit "stats record start|stop" will report a usage failure with the old debug text.
Unfortunately this is in the 0.8 release.  The workaround is to repeat the last command twice (e.g. "stats record start start")
2014-07-08 18:49:57 +01:00
Diva Canto
ba233008cd Changed GetUserInfo so that the exposure of user account details is ruled by a configuration variable. It's on by default. 2014-07-06 16:02:04 -07:00
Diva Canto
108978be1e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-07-06 15:17:27 -07:00
Blake Bourque
63b5c11b9c Lookup username given key(uuid) XML-RPC 2014-07-06 15:14:55 -07:00
Justin Clark-Casey (justincc)
219d273418 Add experimental "show grid size" robust console command.
This will show an approximate grid size that doesn't count regions that are hyperlinks
Not particularly trustworthy since it will still count regions that are not active but were not deregistered (deliberately or due to simulator crash or similar)
2014-07-05 00:50:33 +01:00
Diva Canto
bb9071e5f0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-07-04 16:28:58 -07:00
Diva Canto
869191a51d Small change to my previous commit: not so aggressive on the trigger, please. 2014-07-04 16:28:37 -07:00
Justin Clark-Casey (justincc)
b019fd5a95 Show region size column in simulator version of "show regions" console command 2014-07-05 00:20:39 +01:00
Justin Clark-Casey (justincc)
82a5d00bc8 Adjust "show regions" and "show region" robust service console output to show size
"show regions" drops the owner id column but is till present in "show region"
"show regions" name column expanded to allow for longer hg regions (probably still too short, may eventually have to truncate rather than taking up huge screen space)
2014-07-05 00:15:35 +01:00
Diva Canto
dac8703949 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-07-04 15:56:32 -07:00
Diva Canto
78c155cd12 Instrument the UDP path of creating assets so that it triggers an asset post for users with different asset servers 2014-07-04 15:56:09 -07:00
Justin Clark-Casey (justincc)
4b73268cbd minor: put standard 'category' in brackets at front of log messages from previous commit 3d70db4a 2014-07-04 23:48:37 +01:00
Latif Khalifa
3d70db4a58 When uploading mesh objects with textures also create inventory items for uploaded textures.
This implements:
http://opensimulator.org/mantis/view.php?id=7250
2014-07-04 23:40:09 +01:00
AliciaRaven
6e0e35cd66 Include option to remove auto backup files older than given number of days. New property created to specify how many days to keep files for. Off by default, also made sure only oar files will be removed. 2014-07-04 23:32:13 +01:00
Justin Clark-Casey (justincc)
20b47fce07 Still log (but this time with warning rather than an exception) if we regenerate a new child caps seed for a region where we already have one.
I think it's still useful to know this to show up any errors early, but it's reasonable to still carry on rather than throw an exception.
Follow on from Diva's commit 9643792
2014-07-04 22:59:10 +01:00
Diva Canto
82b875317b On logout, delay the removal of AgentCircuitData until the very end, because that data structure contains important information about the agent that may be needed by modules. 2014-07-04 14:36:11 -07:00
Diva Canto
60ad72357e This fixes the bug related to rebooting neighboring varregions while avatars are logged in; the avies would not see the region anymore until they relogged. Same problem as before: inconsistent calculation of scope. 2014-07-04 11:45:30 -07:00
Diva Canto
d99c8e68a7 It turns out that child agent management has had a bug for a while: there was an inconsistency in the scope between opening and closing child agents in neighboring regions. For opening (in EnableChildAgents), the region's DrawDistance was being used; for closing (in IsOUtsideView) , the viewer's (SP) DrawDistance was being used. This fixes this inconsistency, therefore eliminating bugs observed in TPs between, at least, neighboring varregions. 2014-07-04 10:13:53 -07:00
Diva Canto
d0782c2bc0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-07-03 20:09:38 -07:00
Diva Canto
9643792b34 Avoid an exception in creating child agents some times. 2014-07-03 20:09:16 -07:00
Justin Clark-Casey (justincc)
4ba396b81c Temporarily disable new regression test TestLifecycle() until I have a chance to fix it
This was working for me locally because it was still picking up all my *.ini config files, which jenkins won't have in its test env
2014-07-03 00:30:42 +01:00
Justin Clark-Casey (justincc)
c3923a1aa6 Re-enabled TestLifecycle regression test logging so I can get some idea of why it's failing on jenkins but not locally 2014-07-03 00:01:47 +01:00
Justin Clark-Casey (justincc)
889194db63 Actually call Close() for shared region modules when the simulator is being shutdown.
Adds regression test for this case.
2014-07-02 23:49:25 +01:00
Justin Clark-Casey (justincc)
fe6dab7f13 minor: Change default max phys prim size in code to match OpenSimDefaults.ini 2014-06-28 00:20:09 +01:00
Justin Clark-Casey (justincc)
cd031d129a minor: change allow script crossings default in code to true in order to match OpenSimDefaults.ini 2014-06-28 00:18:00 +01:00
dahlia
9d2789aff8 add LSL constant PRIM_ALPHA_MODE 2014-06-27 16:06:03 -07:00
Vegaslon
abf85b7f19 Bulletsim: Create AvatarTerminalVelocity to BulletSim like what ODE and SL has. Before this falling from really high caused the avatar to fall faster then the veiwer can handle and cause camera issues. 2014-06-27 23:34:34 +01:00
dahlia
a93799d03b add LSL constants PRIM_SPECULAR and PRIM_NORMAL 2014-06-23 20:06:22 -07:00
Diva Canto
ca2379ee83 Bug fix in map teleports in varregions. The cherry was missing from the ice-cream Sunday: the packet itself was hardcoding the size of the region... 2014-06-21 15:38:38 -07:00
Robert Adams
481b7c71c3 BulletSim: add some locking for collision lists to prevent collsions
from locking up when running BulletSim on a separate thread.
2014-06-20 21:42:08 -07:00
Aleric Inglewood
c90b986d8b Improved line map heuristics.
If the C# column can't be found in the positionMap (but the line can),
use the map immediately after it while correcting for the offset,
unless that results in an LSL position before the previous LSL position
in the positionMap.

The idea behind this heuristic is that in most, if not all cases C#
consumes more characters than LSL (for example LSL_Types.LSLInteger
instead of just 'integer').

Thus if the distance between the columns of two markers differ in
the C# and LSL file, the distance in the C# file will be larger.
Moreover, we can assume that every time this happens we will have
a marker at the beginning of the longer 'keyword', because those
keywords were generated by us in the first place.

For example:

C#:     LSL_Types.LSLInteger f2(LSL_Types.LSLString s)
        ^                       ^
        1                       2

will always have markers at the beginning of the long keywords
'LSL_Types.LSLInteger' and 'LSL_Types.LSLString'.
If an error is generated in between (for example at the beginning
of the function name 'f2') then the correct position is found
by using an offset relative to 2 rather than 1.

Note that a case where this isn't working correctly is
when the user adds extra spaces. For example:

LSL:   integer f2(    string s)

would still use the start of 'string' as reference and
then go backwards 3 characters only because the corresponding
C# still looks like

C#:     LSL_Types.LSLInteger f2(LSL_Types.LSLString s)
                             ^  ^
			     only 3 chars difference

and the reported error at 'f2' would be here:

LSL:   integer f2(    string s)
                   ^

This can only be fixed by generating a mapping for 'f2' itself, or
generating a mapping whenever the amount of spaces is changed.
2014-06-19 23:52:51 +01:00
Aleric Inglewood
3fe9c7c49d Fix looking up line number and colum when there is no exact match.
When a compile error reports a colum/error that is not an exact
match in the positionMap dictionary, the last position in the
map with a line number and position before the reported error
should be returned.

The old code had the following problems:
1) It returns l,c - which are line and column of the C# file, not LSL.
2) It doesn't set l to 'line' when the map has an entry with 'line'.
3) It sorts the map without taking columns into account, which may
   result in a random order of the columns. With my mono implementation
   the columns were reversed in order.

For example, if the map contains the following lines:

99,5,49,10
100,30,50,10
100,40,1,0
101,5,51,10

and a translation of 100,35 was requested,
then the old code would compare '100' with the keys in
the first column - setting l to that key while it is
smaller. Hence, l is set to 99.
Then it finds the key 100 and doesn't update l.
Because of the reversed sort order, it first compares
the column 35 with 40, finding that it is smaller
and therefore it stops; returning 99,1 instead of finding
the correct 100,30 entry and returning 50,10.

This patch causes 50,10 to be returned.

The remaining problems after this patch are:
1) The sorting might not be necessary at all.
2) The is code duplication (I fixed both instances,
   but really there should be no code duplication
   imho).
2014-06-19 23:52:51 +01:00
Robert Adams
4651cd1f50 BulletSim: stop processing linkset child when it is discovered that the
child doesn't have a physical shape. Another attempt at fixing Mantis 7191.
2014-06-18 23:01:39 -07:00
Robert Adams
f348928590 BulletSim: more tweeks to AliciaRaven's flying mods. Added parameters
AvatarFlyingGroundMargin and AvatarFlyingGroundUpForce set to 5.0 and
2.0 respectively which seems to give about the same action as in SL.
Also moved force addition to before the velocity to force computation
so the upward velocity is properly applied to the avatar mass.
2014-06-18 22:39:28 -07:00
Justin Clark-Casey (justincc)
3cbdf3bfe0 refactor: Simplify compilation result tests by factoring out common code. 2014-06-18 23:04:31 +01:00
Justin Clark-Casey (justincc)
7b2f125fb6 In compiler regression tests, setup and teardown structures for each test to avoid any possibility of inter-test inter-ference 2014-06-18 22:46:54 +01:00
Justin Clark-Casey (justincc)
a0d6705fe6 Fix issue with LSL jumps screwing up the C# compiler error -> LSL code position map and leading to invalid error line numbers/columns
This is because jump statement generation was mistakenly inserting its own line without updating the csharp positions in CSCodeGenerator.
This is Aleric Inglewood's patch in http://opensimulator.org/mantis/view.php?id=7195 but applied to opensim itself rather than the defunct code generation in opensim-libs.  Thanks!
This patch also adds a regression test for this case from myself.
2014-06-18 22:24:36 +01:00
AliciaRaven
db0c41501c Fix previous commit to ignore water height and allow flying underwater (swimming)
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-06-17 23:06:49 -04:00
AliciaRaven
ff892b5bcf Add upward force to flight when close to the ground. Prevents current belly flop to the floor when flying with bullet physics and acts more like ODE and SL flight.
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-06-17 21:47:36 -04:00
Justin Clark-Casey (justincc)
5450b1b024 Change assembly versions to 0.8.1 2014-06-17 18:37:15 +01:00
Justin Clark-Casey (justincc)
602587b8d5 Update dev version to 0.8.1 2014-06-17 18:32:26 +01:00
Justin Clark-Casey (justincc)
b59812b4e3 If MaterialsModule unexpected sees a part with DefaultTexture of null, log this with a warning. 2014-06-16 22:20:30 +01:00
Justin Clark-Casey (justincc)
4374ce9fbf If processing a queued request fails up to the top of the stack, log the exception and move to the next request rather than terminate the simulator. 2014-06-16 22:11:34 +01:00
Justin Clark-Casey (justincc)
696df33e5c In materials module, if a texture entry somehow has no default entry then don't try to extract materials data rather than throw an exception 2014-06-16 21:47:34 +01:00
Diva Canto
c5f7184d1b Behavior change: only local users can set home in any parcel of a grid. Setting it for foreign users does not make sense, since cntrl+shift+H always teleports them back to their original grid. 2014-06-15 16:29:25 -07:00
Diva Canto
dcd8e74584 Manual change as per patch in mantis #7212. (the patch failed to apply, but the fix was good) Thanks FreakyTech. 2014-06-15 07:26:27 -07:00
Robert Adams
7f0adfd203 Add [Startup]LogShowStatsSeconds=n parameter which controls the interval
that simulator statistics is output to the console. Setting to zero turns
stats logging off.
2014-06-13 21:27:07 -07:00
Justin Clark-Casey (justincc)
31096fb1fe Add rc3 flavour option 2014-06-10 20:19:19 +01:00
Diva Canto
807fb8339b Revert "Let HG users be gods too, if they have local permission to be so."
HG gods are not safe at this point. It's better to disallow this until
they can be made safe.

This reverts commit e86c765be3.
2014-06-09 22:00:10 -07:00
Diva Canto
e86c765be3 Let HG users be gods too, if they have local permission to be so. 2014-06-09 21:46:24 -07:00
Diva Canto
c915791824 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-06-08 12:18:49 -07:00
Diva Canto
7f45ac72e1 Don't try to package null invites. 2014-06-08 12:18:26 -07:00
Robert Adams
8956cdc55f Add [Terrain]SendTerrainUpdatesByViewDistance=false to OpenSimDefaults.ini
so people can find the setting.
2014-06-08 09:50:31 -07:00
Robert Adams
3552cfb1a5 BulletSim: fix exceptions while rebuilding linksets with mesh children.
This should get around the exception reported in Mantis 7191 and 7204
by checking for the unbuilt child and rebuilding the linkset the next tick.
A warning message is output when this rebuild happens and this message is
clamped to 10 times in case there is a problem with a loop.
2014-06-08 09:03:38 -07:00
Michael Cerquoni
0dc14b5f35 fix the comment section of max_distance setting to reflect default value 2014-06-06 22:29:04 -04:00
Diva Canto
74cda2ad78 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-06-06 14:51:05 -07:00
Diva Canto
2766b37d8b Missed this ini change in previous commit 2014-06-06 14:50:38 -07:00
Michael Cerquoni
b913f1c8ab bump default teleport limit to 65535 regions 2014-06-06 16:59:13 -04:00
Diva Canto
fe779128b0 Added simulation version compatibility check so that agents coming from 0.7.6 to a varregion running in 0.8 and above will be denied teleport, rather than be allowed and crash the viewer. 2014-06-06 11:04:53 -07:00
Diva Canto
90de9df3e8 Better comment regarding SizeX and SizeY 2014-06-05 20:31:31 -07:00
Diva Canto
733763c4e2 Amend to previous commit -- write down the problematic Profile server URL. 2014-06-05 20:06:01 -07:00
Diva Canto
5bb95a8a55 May fix mantis #7133 2014-06-05 18:59:30 -07:00
Diva Canto
30cde52634 Updated Regions.ini.example to include var regions configs. 2014-06-05 16:51:08 -07:00
Michael Cerquoni
278530bf04 add Alicia Raven to Contributors list, thanks for the patch! 2014-06-04 22:04:09 -04:00
AliciaRaven
c1bdd22274 Fix AutoBackupModule and include option to skip saving assets.
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-06-04 22:01:55 -04:00
Diva Canto
f8fe4dee8f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-06-02 08:46:00 -07:00
Diva Canto
77913eb679 Added a ResetLand method to RemoteAdmin, whereby all land is reset with the given parameters. 2014-06-02 08:45:39 -07:00
Robert Adams
0aa0dad478 Send multiple terrain patches per terrain update packet if terrain
draw distance optimization is enabled. Makes terrain editting a lot
snappier.
2014-06-01 19:23:49 -07:00
Diva Canto
3aa99b9a7f Fixes a permissions bug where a user with group powers to always rez was not being given permission to rez on group land. 2014-06-01 16:45:37 -07:00
Diva Canto
14a31c3e9b Correct minor bug regarding packing of estate bans 2014-06-01 12:01:49 -07:00
Diva Canto
94d0ae0d91 This may fix mantis #7200, but I am unable to test because I don't have any old viewers around anymore. 2014-06-01 10:18:53 -07:00
Diva Canto
0eaca7aafb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-06-01 10:06:59 -07:00
Diva Canto
2ff9ea3f80 Fixed a few things pertaining to interfacing with the estate service. Specifically, StoreEstateSettings was not being used anywhere; instead EstatSetting.Save was being called, but that method is a trigger to the DB-layer code directly, which, besides being wrong, was making it impossible to replace the service with a remote connector.
Also added more packing/unpacking code.
2014-06-01 10:06:26 -07:00
Robert Adams
a2ea844494 Move the generation of the multi-resolution map tiles off the main
region creation thread. For varregions or simulators with many regions,
this will speed up simulator startup and elimiate some thread timeout
warnings.
2014-05-31 14:21:39 -07:00
Robert Adams
0300ec45eb Modifications to debugging printouts. No functional changes. 2014-05-31 12:19:51 -07:00
Robert Adams
22dade6463 varregion: More tweeking to only sending patches within avatar draw distance.
Still has problems with child avatars.
2014-05-31 12:19:50 -07:00
Robert Adams
db5a42ffac varregion: send terrain patches from where the avatar outward if the parameter
[Terrain]SendTerrainUpdatesByViewDistance=true.
This tracks which patches have been sent to each client and outputs the
patches as the avatar moves.
2014-05-31 12:19:49 -07:00
Diva Canto
eaf595c008 Fix a bug where estate not found would result in a dummy estate record with erroneous information.
Also, added conversion of EstateSettings from/to key-value pairs in preparation for robust net work connectors.
2014-05-31 11:40:54 -07:00
Diva Canto
d6f9f690e5 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-31 08:22:56 -07:00
Diva Canto
02a53665c9 Added missing reference 2014-05-31 08:22:36 -07:00
Justin Clark-Casey (justincc)
bf5320eb26 minor: rename velocidyDiff -> velocityDiff 2014-05-30 22:21:13 +01:00
Justin Clark-Casey (justincc)
3c992b028c minor: Add some commented out logging to ScenePresence.SendTerseUpdateToAllClients() which is extremely helpful when investigating presence update triggers. 2014-05-30 22:18:07 +01:00
Justin Clark-Casey (justincc)
a755c57b44 Fix issue with BulletSim avatar level flight jitter by commenting out RawVelocity update threshold for now in BSCharacter.UpdateProperties().
For some reason as yet unidentified (feedback?) a threshold above 0.4 here causes the RawVelocity to move between a lower and upper bound rather than remaining constant.
The RawVelocity increased until it triggered the threshold update, at which point it started to decrease until it again triggered the threshhold update.
This delta-v was enough to exceed the checks in ScenePresence.SendTerseUpdateToAllClients() and produce jittery avatar flight because of the fluctuating velocity.
With a threshold of 0.4 (or 0, as with ODE), the RawVelocity remains constant in BulletSim and so avatar flight becomes mostly smooth - remaining occasional glitches appear to be a result of errors in distance extraploation.
There are no obvious problems with commenting out the threshold.
Misterblue, if this is wrong or I've missed some subtlety here, please feel free to revert and/or correct.
The same considerations may or may not apply to object velocity updates.
2014-05-30 22:12:23 +01:00
dahlia
9ced61fbc2 Add a 0 parameter overload for RestClient.Request() for use when no auth is required. This preserves API compatibility for external modules using this function. 2014-05-30 13:47:19 -07:00
Diva Canto
0eede1467f Moved these two estate-related interfaces to the projects where they belong. 2014-05-30 13:11:46 -07:00
Justin Clark-Casey (justincc)
35c7fb2038 minor: Comment out log line in Groups V2 GroupsServicePostHandler for now which logs every request it receives. 2014-05-30 19:45:05 +01:00
Justin Clark-Casey (justincc)
8656b5e948 Fix bug where setting a parcel in a varregion for sale would make sale bitmap generation in WorldMapModule throw an exception on next startup.
This commit replaces the hardcoded region sizes in WorldMapModule.GenerateOverlay() with numbers pulled from m_scene.RegionInfo
2014-05-30 19:40:10 +01:00
BlueWall
1efaf0c85c Add some info about xbuild command line switches to clean and select between producing Debug or Release binaries 2014-05-30 11:56:05 -04:00
Justin Clark-Casey (justincc)
27597463da Change Assembly verson of OpenSim.Data.PGSQL.dll to 0.8.0.* to match all other assembly versions 2014-05-27 23:40:29 +01:00
Justin Clark-Casey (justincc)
c32ccfb520 minor: Comment out 2 error level debugging message in authentication code 2014-05-27 23:18:33 +01:00
Justin Clark-Casey (justincc)
9ca86664bb Make RegionReady login disabled during initialization message a console messages instead of a warning message.
Same justification as earlier commit 996a6c2.  These are not warnings but should still be visible to the user at any log level.
2014-05-27 23:15:50 +01:00
Justin Clark-Casey (justincc)
464d31b70b Stop appending redundant newline to console messages in Robust and pCampbot configs
This is to fix an issue since recent commit fbcb763 where these are no longer removed automatically.
OpenSim.*.config was already not appending these newlines
2014-05-27 20:44:00 +01:00
Justin Clark-Casey (justincc)
5622cf68aa In compiler tests, remove the ResolveEventHandlers after test exit 2014-05-27 18:47:42 +01:00
Justin Clark-Casey (justincc)
394ec508f6 Make CompilerTest add same AssemblyResolver as XEngine to see if this solves the issue with different AppDomain BaseDirectory in local and Jenkins test runs 2014-05-27 18:37:16 +01:00
Justin Clark-Casey (justincc)
bcaacb4e41 Temporarily print regression TestCastAndConcatString() script compile errors out to console to get a handle on what's going wrong.
Does not fail for me locally and I failed to notice this test was failing on Jenkins.
2014-05-27 18:19:08 +01:00
Justin Clark-Casey (justincc)
d131c57978 Update regression TestInventoryDescendentsFetch() to account for recent commit 1fa3a6f
This was hidden in continuous integration because of another regression test issue.
2014-05-27 18:14:36 +01:00
Diva Canto
987c56984d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-27 10:13:43 -07:00
Diva Canto
e19c830a6c Fixes a bug where map search results pertaining to varregions would only send the SW-most corner of the varregions; the other areas, when clicked, would result a blue circle, meaning that the viewer didn't know about those areas. This is still not quite right, as all the areas appear to be in the same coordinates, but it's good enough for now. 2014-05-27 10:13:24 -07:00
Robert Adams
fab0389cb1 BulletSim: add locking of PhysObjects while processing simulation
step updates and collisions. This is an attempt to fix a crash reported
by Justin when doing high velocity teleports.
2014-05-26 20:29:45 -07:00
Diva Canto
d2877b9cd4 Don't report NPC presences. 2014-05-26 10:28:31 -07:00
Diva Canto
b778bd9423 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-26 08:14:34 -07:00
Diva Canto
449548d7a4 Adds an optional redirect URL to the asset server handler for when assets are not found locally. 2014-05-26 08:13:49 -07:00
Oren Hurvitz
33cc847c4a When saving an OAR in "Publish" mode, also discard Group information 2014-05-26 15:33:13 +01:00
Oren Hurvitz
5aeaa7fcdd Prevent login to a region if the Telehub or Landing Point are in a banned parcel 2014-05-25 15:37:28 +01:00
Oren Hurvitz
e68867c9b6 When taking an object into inventory, set the inventory item's "Next Owner" permissions according to the permissions of the items in the object 2014-05-25 15:35:00 +01:00
Oren Hurvitz
1fa3a6f1bd When creating a new user, create the folders "Current Outfit", "Favorites", and the standard subfolders of "Calling Cards".
(If we don't create them now then they'll be created later by the viewer, but why wait.)
2014-05-25 15:34:49 +01:00
Diva Canto
ff9da24465 Added HTTP Authentication also to Groups and offline IM. 2014-05-23 17:31:39 -07:00
Diva Canto
227685bea4 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-23 16:20:04 -07:00
Diva Canto
20f20895cf Adds optional HTTP Basic Authentication to Robust service connectors. 2014-05-23 16:19:43 -07:00
Justin Clark-Casey (justincc)
9bae636ff0 Fix issues where reported LSL compiler error line numbers do not match the script.
This is probably due to changes in the layout of the generated script preamble (using statements etc, ) in c8afc852 (Jan 17 2013).
Re-enabled existing regression test that exercises at least one case of this.
2014-05-24 00:12:23 +01:00
Justin Clark-Casey (justincc)
cf95b65c10 Get regression test TestUseUndeclaredVariable() functional again, though not yet enabled.
This reveals the position map problems and will make the fix (and subsequent continual checking) easier.
2014-05-23 22:29:47 +01:00
Justin Clark-Casey (justincc)
250ea09328 Reactivate regression test TestCastAndConcatString() in CompilerTests. 2014-05-23 22:12:49 +01:00
Justin Clark-Casey (justincc)
b3a496d6f2 Add mikemig to contributors 2014-05-23 21:13:37 +01:00
Justin Clark-Casey (justincc)
f55e153636 Compile the regex that extract categories for colourization just once rather than on every single log.
Compiling every time is unnecessary since Regex is thread-safe.
2014-05-23 21:09:48 +01:00
Justin Clark-Casey (justincc)
fbcb76383d Allow console output to be multiline by making colourization regex RegexOptions.SingleLine 2014-05-23 20:57:50 +01:00
Justin Clark-Casey (justincc)
72c67c5091 Fix possible infinite recursion in MessageTransferModule.SendGridInstantMessageViaXMLRPCAsync() whilst preserving retry lookup behaviour.
This is based on heavily mikemig's original patch in http://opensimulator.org/mantis/view.php?id=7149
but instead of exiting after the first IM delivery failure to presence information retrieved from the presence service
it will retry the lookup until the result matches the previous lookup.
This is to deal with the case where the agent is sent an IM whilst they are teleporting.
2014-05-23 20:14:49 +01:00
Justin Clark-Casey (justincc)
5015b0b485 If one is sitting on a child with an unset camera-eye and so using one set in a root prim, the focus should remain on the root prim.
Matches behaviour just tested on the Linden grid.
2014-05-23 01:55:05 +01:00
Justin Clark-Casey (justincc)
c78a8271c4 Add any camera at compensation for sat upon child prims to any existing camera-at value, rather than replace. 2014-05-23 01:38:05 +01:00
Justin Clark-Casey (justincc)
fbed245596 Compensate camera-at and camera-eye for child prim rotation when sitting on child prim with camera-eye set 2014-05-23 01:34:02 +01:00
Justin Clark-Casey (justincc)
174df94172 If a script calls llSetCameraAtOffset() or llSetCameraEyeOffset() on a child prim and the root prim has no corresponding value set, then also set the root prim.
This matches behaviour just tested on the Linden Lab grid.
2014-05-22 23:58:28 +01:00
Justin Clark-Casey (justincc)
3fbaef9275 If the root prim has a camera-at or camera-eye setting and a sat upon child prim does not, use the root prim offsets.
This matches behaviour just tested on the Linden Lab grid.
2014-05-22 23:52:28 +01:00
Justin Clark-Casey (justincc)
16bf38e1ab Fix issue where llSetCameraAtOffset() and llSetCameraEyeOffset() in non-root prims moved camera/focus to wrong position.
For non-root prim, eye offsets now need to be made relative to root prim if either camera-at or camera-eye are set.
Probably a regression since November 2013 when all sits were made relative to root prim to match viewer expections (and fix other bugs).
Addresses http://opensimulator.org/mantis/view.php?id=7176
2014-05-22 23:39:22 +01:00
Justin Clark-Casey (justincc)
f8b8241239 Add regression test for north-south chat across neighbour regions. 2014-05-22 20:28:26 +01:00
Justin Clark-Casey (justincc)
bffc9ad184 Extend regression TestInterRegionChatDistanceEastWest() to test out of range chat 2014-05-22 20:04:32 +01:00
Justin Clark-Casey (justincc)
15b50ae737 Extend regression TestInterRegionChatDistanceEastWest() to test in range chat both ways. 2014-05-22 19:55:34 +01:00
Justin Clark-Casey (justincc)
65a135f4d3 Simplify regression TestInterRegionChatDistanceEastWest() by making the child presence connection directly rather than routing through TestClient.
This code isn't relevant to this test and is already exercised by other tests.
2014-05-22 19:47:33 +01:00
Justin Clark-Casey (justincc)
1b156b7fe8 Add regression test for in-range chat between neighbouring regions from east to west. 2014-05-22 19:18:24 +01:00
Diva Canto
b7c7293c7a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-22 10:16:19 -07:00
Diva Canto
f7b2aa0f49 Fixed a problem with detaching attachments in situations where the user's asset server is not the same as the simulator's asset server. Unfortunately this still continues to be wasteful -- new assets are created every time an attachment is detached, but the process of storing the new asset goes through the InventoryAccess module, which does all sorts of checks regarding the users' inventory. 2014-05-22 10:16:01 -07:00
AliciaRaven
04aa13a086 Fix mantis 6973. Prevent BOM being prefixed to message XML which was causing an exception when the service tried to read the data later on.
Signed-off-by: Oren Hurvitz <orenh@kitely.com>
2014-05-22 13:16:14 +01:00
Oren Hurvitz
251b93d97e Store the Teleport Flags in the Circuit. This doesn't seem to be necessary, because everything has worked so far, but it's the right thing to do. 2014-05-22 13:16:06 +01:00
Oren Hurvitz
a1b291c889 Allow map searches for regions that contain the characters "!+|"
These characters are used as placeholders for other characters: ": /". But we should search first for the exact string the user entered, and only if that fails then replace the characters and search again.
2014-05-21 07:39:23 +01:00
Justin Clark-Casey (justincc)
5b433e101d minor: Comment out currently unused log setup in TerrainCompressor 2014-05-20 23:59:08 +01:00
Justin Clark-Casey (justincc)
d93275745b minor: Remove some unused fields in ScenePresence 2014-05-20 23:57:03 +01:00
Justin Clark-Casey (justincc)
32070fa5f4 minor: remove compiler warning in SceneObjectPartInventory 2014-05-20 23:54:49 +01:00
Justin Clark-Casey (justincc)
9479f64778 Fix issue where avatar and script chat could sometimes be heard from anywhere in neighbouring regions.
This was due to a silent uint overflow in ScenePresence.UpdateChildAgent() corrupting child agent positions
when the child agent was in a region with a greater x or y map co-ord than the root agent region
Probably introduced in beeec1c.
This still will not function properly with very high region map co-ords (in the millions) but other parts of the code don't handle this properly anyway.
Looks to address http://opensimulator.org/mantis/view.php?id=7163
2014-05-20 23:52:07 +01:00
Justin Clark-Casey (justincc)
5ec3429843 On verbose groups messaging logging, count all operations in reported time when sending group messages, not just those after get group members and get presence status, as applicable 2014-05-19 23:01:48 +01:00
Justin Clark-Casey (justincc)
77a331fce3 Add DebugMessagingEnabled = false to OpenSim.ini.example for consistency. Slightly simplify config comments. 2014-05-19 23:00:04 +01:00
Justin Clark-Casey (justincc)
b46be88db6 Split verbose groups messaging logging into its own setting separate from that of the groups module.
This is to allow us to get useful information on messaging without being overwhelmed by the rest of groups debug.
Enabled with [Groups] DebugMessagingEnabled = true in config (default false)
Or "debug groups messaging verbose true|false on the console" (similar to existing groups setting).
Done for both xmlrpc and V2 groups.
2014-05-19 22:45:17 +01:00
Justin Clark-Casey (justincc)
3a6f312484 Fix recent regression from 77e7bbc where an attachment on a received group notice with XmlRpcGroups messaging did not appear in the user's inventory.
This was because the "session ID" when the message template was copied was always replaced with the group ID, whereas a notice requires this to be the notice ID.
Instead just copy the "session ID" as is - other callers already have this set properly so replacing with group ID was redundant anyway.
Relates to http://opensimulator.org/mantis/view.php?id=7037
2014-05-19 22:06:41 +01:00
Oren Hurvitz
47b84875fd Tell QueryAccess explicitly whether the user is coming in via Teleport or Cross, because the permission checks are different.
Previously we used a heuristic of checking if the entry position is 0 to differentiate between Teleport and Cross, but that doesn't work anymore since we've started providing the precise entry position for cross, too. That's required in order to ensure that the user is allowed to enter the parcel that he's walking into.
2014-05-19 11:19:11 +01:00
Oren Hurvitz
78733b979f Log the user when an inventory operation is blocked because the item/folder isn't in the Suitcase 2014-05-19 11:12:53 +01:00
Oren Hurvitz
dd30a29ba0 Return more specific error messages if an attempt to enter a region fails due to permissions (in QueryAccess and IsAuthorizedForRegion) 2014-05-19 11:11:30 +01:00
Oren Hurvitz
882af7195c Better error-handling and logging in case User Profile requests fail 2014-05-19 11:11:06 +01:00
Oren Hurvitz
96e5836b50 When can't rez, show only one error message; not two. And show more specific error messages. 2014-05-19 10:54:27 +01:00
Diva Canto
ab1472e5b7 Don't trigger ItemUploaded when no item has been uploaded. 2014-05-18 23:01:55 -07:00
Diva Canto
922f76a3a7 Don't fetch assets from the server when doing simple inventory operations like copy-paste items in inventory. 2014-05-18 07:49:01 -07:00
Robert Adams
0be9e3b079 BulletSim: adjust avatar step up parameters to better walk up small
staircases. This change is required because of the change in the
avatar default shape from the capsule to the rectangle.
2014-05-17 20:11:22 -07:00
Justin Clark-Casey (justincc)
4a74c4533c minor: eliminate now unnecessary string.Format in postgresql RetrieveGroups method 2014-05-15 22:51:47 +01:00
Justin Clark-Casey (justincc)
d2c738fc09 Don't warn on not seeing [Groups] Robust section for core groups as this does not contain any mandatory parameters and won't be present on older installations. 2014-05-15 22:48:05 +01:00
Justin Clark-Casey (justincc)
6dc1b113d0 Escape find string in PgSQL core groups plugin 2014-05-15 22:45:01 +01:00
Justin Clark-Casey (justincc)
d32d25634d Escape find string in MySQL core groups plugin 2014-05-15 22:09:37 +01:00
Justin Clark-Casey (justincc)
7c12dfe185 On ScenePresence.MakeChildAgent(), reset the m_originRegionID as this is currently being used as a flag to orchestrate destination simulator threads on teleport.
If not reset, it's possible that teleports back and forth between simulators may not restart scripts in attachments.
2014-05-14 22:08:06 +01:00
Justin Clark-Casey (justincc)
2f7539a25b Remove a race where the client's SP.CompleteMovement() thread could attempt to restart attachment scripts before the source simulator's SP.UpdateAgent() thread had added them.
This commit changes the order of code so that attachments are re-added before the CompleteMovement() thread is released.
Relates to http://opensimulator.org/mantis/view.php?id=7148
2014-05-14 21:49:29 +01:00
Justin Clark-Casey (justincc)
0c0ee95bd8 minor: Clean up and make consistent some log file messages in EstateManagementModule relating to RAW file uploading. 2014-05-14 19:22:55 +01:00
Justin Clark-Casey (justincc)
c23d37a509 Fix recent asset request timeout issue by commenting out (for now) the m_maxAssetRequestConcurrency mistakenly passed in as a timeout to SynchronousRestObjectRequester.MakeRequest()
For a long time, possibly forever, the m_maxAssetRequestConcurrency was mistakenly passed in as a 30 ms timeout rather than as a concurrent connection limiter.
This didn't come to light until the timeout was actually used in recent commit faf9ba53
Since this hasn't been operational for a long time and in release candidate phase, commenting it out for now though will need to revisit this.
Relates to http://opensimulator.org/mantis/view.php?id=7165
2014-05-14 00:11:07 +01:00
Justin Clark-Casey (justincc)
4569c595bf Fix behaviour change in recent commit bbc1dc6 so that SynchronousRestObjectRequester.MakeRequest() calls with no timeout specified use the default HttpWebRequest timeout as previously.
I mistakenly thought that that default request timeout was inifite rather than 100 seconds, restoring previously behaviour.
As per http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout%28v=vs.100%29.aspx
Relates to http://opensimulator.org/mantis/view.php?id=7165
2014-05-13 22:21:20 +01:00
Justin Clark-Casey (justincc)
484aa72ff8 minor: Add some method doc to IMessageTransferModule 2014-05-12 23:49:37 +01:00
Justin Clark-Casey (justincc)
8ad29fc5c8 Make offline IM delivery to URL (pre recent Addons code) have a 10 second rather than infinite timeout.
This both signals a problem with the URL and eventually frees the thread, rather than hanging indefinitely with no information.
2014-05-12 23:42:47 +01:00
Justin Clark-Casey (justincc)
87e2668529 For XmlRpcGroups (Flotsam) module, when MessageOnlineUsersOnly = true, handle notices to offline users directly as known undeliverable messages rather than discarding or attempting delivery.
Offline notices can still be controlled with the [Messaging] ForwardOfflineGroupMessages setting.
Looks to address more of http://opensimulator.org/mantis/view.php?id=7037
Only for Flotsam now for testing, but if approach works should be possible with core offline notices as well.
2014-05-12 23:38:48 +01:00
Justin Clark-Casey (justincc)
515d373a8e Add send group notice regression test for when MessageOnlineUsersOnly=true 2014-05-12 22:54:54 +01:00
Justin Clark-Casey (justincc)
bbc1dc6bce Replace existing 0 timeout in internal overloaded SynchronousRestObjectRequester.MakeRequest() methods with proper Timeout.Infinite (-1) instead.
Triggered by recent faf9ba53 though this was wrong in the code before, it's just that we didn't actually try to set the timeout given.
2014-05-12 22:37:07 +01:00
Justin Clark-Casey (justincc)
8457044b2f Eliminate subsequently unused scene finding in UndeliveredMessage() method of xmlrpc and core offline IM modules 2014-05-12 22:23:24 +01:00
Justin Clark-Casey (justincc)
19d8f05584 minor: eliminate unused UUID in xmlrpc GroupsMessagingModule.ProcessMessageFromGroupSession() 2014-05-12 22:15:01 +01:00
Justin Clark-Casey (justincc)
7db4336f1c minor: Add method doc to SynchronousRestObjectRequester.MakeRequest() methods 2014-05-12 22:05:02 +01:00
Justin Clark-Casey (justincc)
faf9ba53fc In SynchronousRestObjectRequester.MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj, int pTimeout, int maxConnections) actually set timeout on WebRequest if given.
Previously, we were doing nothing with this parameter.
No effect on current code since none of the 6 callers attempt to use the timeout.
2014-05-12 19:20:00 +01:00
Oren Hurvitz
bf8f64e40e Fixed error if a user didn't have a "Current Outfit" folder in their suitcase.
This fixes http://opensimulator.org/mantis/view.php?id=7161
2014-05-12 08:54:31 +03:00
Diva Canto
73891c7fd3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-09 11:06:33 -07:00
Diva Canto
667a272cce This little sucker had evaded my attention forever. As a consequence some assets associated with foreign users were being missed. 2014-05-09 11:06:03 -07:00
Justin Clark-Casey (justincc)
f41809e07d minor: Capitalize Hypergrid help category like others 2014-05-08 22:39:52 +01:00
Diva Canto
afb938e579 Fix test breakage 2014-05-08 11:30:45 -07:00
Diva Canto
a31393ba0b Make the URL for texture redirects match the path of the resource that we use in OpenSim. 2014-05-08 11:18:17 -07:00
Diva Canto
a845c1a893 Finished implementing redirects in GetTexture. 2014-05-07 19:38:33 -07:00
Diva Canto
093705efd1 Delete extraneous console message in the Configger. 2014-05-07 17:19:57 -07:00
Diva Canto
f4cba27105 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-07 17:00:12 -07:00
Diva Canto
3db9b847bf Allow Tools.Configger to take -inifile as argument 2014-05-07 16:59:11 -07:00
Justin Clark-Casey (justincc)
2b33677402 Add GridUserService service config to [UserAccountService] in Robust[.HG].ini.example so that home can be set for new users rather than always warning that it can't be set.
Code already exists to do this but forgot to put entry into config files a long time ago.
Thanks to AliciaRaven for the spot.
Relates to http://opensimulator.org/mantis/view.php?id=7155
2014-05-07 23:32:02 +01:00
Justin Clark-Casey (justincc)
812f5e124d Remove duplicate HypergridLinker entry from [GridService] in Robust.HG.ini.example 2014-05-07 18:39:56 +01:00
Justin Clark-Casey (justincc)
2fbafc7465 Add Matt Lehmann to contributors 2014-05-06 22:37:26 +01:00
Justin Clark-Casey (justincc)
e44450cce1 Revert "fix infinite recursion loop in SendGridInstantMessageViaXMLRPCAsync()"
There is a problem here with infinite recursion, but this patch loses the 'hunting' behaviour where the code will attempt multiple lookups if the avatar is teleporting rapidly around different simulators.
This patch only does a single lookup before giving up.

This reverts commit cecb446e0e.
2014-05-06 19:53:35 +01:00
Dev Random
78015bbbdc Console commands for Estate Mgmt 2014-05-06 18:55:42 +01:00
Matt Lehmann
9e83b43009 new version of patch to add default-user switch new version :qw :wq updated version of default user switch for load oar :q :q 2014-05-06 18:48:59 +01:00
Matt Lehmann
8b3c2f7d0c updated version of default user switch for load oar :q :q 2014-05-06 18:48:42 +01:00
Kunta Kinte
cecb446e0e fix infinite recursion loop in SendGridInstantMessageViaXMLRPCAsync() 2014-05-06 17:52:32 +01:00
Vegaslon
0faba7dc33 Fix avatars going to corner of region when they are sitting on a child prim and the prim is deleted. 2014-05-06 17:41:13 +01:00
Vegaslon
e245638f24 Change llUnSit to be able to unsit any avatar that is currently sat on the object, not just avatars sitting on the sittarget in the object containing the script. or when the object is owned by the parcel, land group or estate owner. 2014-05-06 17:35:34 +01:00
Talun
c9742c826d Mantis 7146 The lsl function llGetMassMKS is not implemented
This patch implements llGetMassMKS as it is described in the wiki
http://wiki.secondlife.com/wiki/LlGetMassMKS
2014-05-06 17:31:21 +01:00
Justin Clark-Casey (justincc)
539165e6bd minor: Change configuration text in config files to reflect the existing situation of BulletSim as the default physics engine. 2014-05-06 17:28:21 +01:00
Justin Clark-Casey (justincc)
95eeb4dde8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-05-06 17:22:47 +01:00
Oren Hurvitz
ef262799ca Better error handling in AssetServerPostHandler. Invalid XML causes an InvalidOperationException, not an XmlException 2014-05-06 09:43:07 +03:00
Oren Hurvitz
614b9e14c4 When moving an item from a prim to a user's inventory, don't delete the item from the prim until it was successfully copied to the user 2014-05-06 07:28:46 +01:00
Oren Hurvitz
eb79c882ea Show more meaningful error messages when failed to move an item from a prim to a user's inventory.
Also, actually show the error to the user in more cases. (Previously, sometimes the operation failed without telling the user anything.)
2014-05-06 07:28:45 +01:00
Oren Hurvitz
1e5cff32fc Show more meaningful error messages when failed to give an item to another user 2014-05-06 07:28:44 +01:00
Oren Hurvitz
df49196e17 Log whenever an inventory operation is blocked because the item/folder isn't in the Suitcase 2014-05-06 07:28:43 +01:00
Oren Hurvitz
0fe08c8799 - When sending the "My Suitcase" folder to the client, always claim it has Folder Type 8. (Previously we had used Folder Type -1 in one place, and LLClientView didn't even bother changing Folder Type 100 to anything else.) 2014-05-06 07:16:37 +01:00
Oren Hurvitz
7862d1e20d Added range-checking for the parameters to PRIM_POINT_LIGHT (used in llSetLinkPrimitiveParamsFast() ) 2014-05-06 07:14:58 +01:00
Diva Canto
13b2ac1425 Makes it possible to support grids in which all the simulators share all central services of a Robust server EXCEPT assets. In other words, grids where the simulators' assets are kept in one DB and the users' inventory assets
are kept on another. When users rez items from inventory or take objects from world, an HG-like asset copy takes place between the 2 servers, the world asset server and the user's asset server. This makes the simulators independent of the central asset server.

Note that this an advanced configuration and requires some security strengthening coming up.
2014-05-04 20:54:42 -07:00
Diva Canto
7f570636f8 Please note: older simulators (0.7.6) still send the info about gzip in ContentType 2014-05-04 11:41:52 -07:00
Diva Canto
5a10da3ee8 Added a optional key between the group remote connectors, sim and service. This allows for more secure group services, to be used by collections of mutually-trusting grids. 2014-05-03 17:13:53 -07:00
Justin Clark-Casey (justincc)
53b72ab4b8 minor: Comment out Cacheitems debug log lines for now 2014-05-02 13:31:58 +01:00
Talun
3a2c099169 Mantis 7144 missing ATTACH_AVATAR_CENTER constant
This patch adds ATTACH_AVATAR_CENTER and ATTACH_NECK
2014-05-01 23:20:31 +01:00
Justin Clark-Casey (justincc)
c31d93cb6f Fix issue where only one of multiple attachments on the same attachpoint for NPCs would be seen by other viewers.
It appears that at least Singularity 1.8.5 (but probably others) rely on attachment FromItemIDs being different to display more than one.
This commit resolves this by generating random IDs instead of always using UUID.Zero for NPCs.
Resolves http://opensimulator.org/mantis/view.php?id=7110
2014-05-01 22:24:21 +01:00
Justin Clark-Casey (justincc)
f0411dc128 minor: Use Vector2.Zero constant and only set in condition branch where it was missing in TryParseConsole2DVector(). xbuild still compiles. 2014-04-30 21:50:18 +01:00
Melanie
7c121a2acc Change XEngine to call StateChange rather than RemoveScript on state changes 2014-04-30 20:56:49 +01:00
Melanie
f0eeb47262 Add the "StateChange" function to the async comand manager to differentiate
between state changes and script exit/reset.
2014-04-30 20:54:34 +01:00
BlueWall
44f533d95a Assign value to 'vector' to fix building under xbuild and Monodevelop 2014-04-30 15:45:00 -04:00
Justin Clark-Casey (justincc)
7bb673a854 minor: Correct mistake in terrain flip error message from previous commit 5d01a1f 2014-04-30 19:41:11 +01:00
Justin Clark-Casey (justincc)
5d01a1ff4d minor: Print output in response to terrain console commands on the console rather than in the log. 2014-04-30 19:24:17 +01:00
Justin Clark-Casey (justincc)
253110293a Add "terrain show" console command which outputs terrain height for a given region co-ordinate.
For debug purposes.
2014-04-30 18:04:47 +01:00
Justin Clark-Casey (justincc)
5fc61942e0 minor: convert back some tabs to spaces that got into ScenePresence via recent patch bc969a6b 2014-04-29 20:15:29 +01:00
Justin Clark-Casey (justincc)
d4eee213a9 Restore terrain height and flying adjustments that were eliminated from non-megaregion paths in ScenePresence.MoveToTarget() by recent patch bc969a6b 2014-04-29 20:05:08 +01:00
Justin Clark-Casey (justincc)
2dbc18054e Add regression test for NPC movement on a variable region.
Extends basic physics to allow av movement on a varregion (basic physics is only really useful for regression test purposes).
2014-04-29 19:29:16 +01:00
Oren Hurvitz
88f7a833dc Improved HTTP logging 2014-04-29 07:59:17 +01:00
Oren Hurvitz
06e4fcd260 Fixed the UpdateAgentInformation CAP: the viewer expects the simulator to echo back the maturity that it sent
Without this change, attempts to change the maturity rating in the viewer's Preferences don't work.
2014-04-29 07:59:10 +01:00
Robert Adams
df89e15290 BulletSim: non-functional changes to debugging statements and formatting. 2014-04-28 18:36:50 -07:00
Robert Adams
63aea3a5f2 BUlletSim: move safeynet ground plane to lower altitude. Define new BulletSim
parameter 'TerrainGroundPlane' which defaults to -500.

BulletSim had assumed altitudes never went negative but that is not true. The
ground plane is just a safety net so things wouldn't fall to infinity.
2014-04-28 11:08:47 -07:00
Oren Hurvitz
cb8c3ba023 Removed dependency on Linq in OpenProfileClient 2014-04-28 16:41:02 +01:00
Justin Clark-Casey (justincc)
2e216aa056 Add missing [Test] decorator to actually get the basic scene creation test from 2227f51b to run 2014-04-25 23:35:20 +01:00
Justin Clark-Casey (justincc)
9664273df6 Add basic regression test for creating a var region 2014-04-25 23:34:30 +01:00
Justin Clark-Casey (justincc)
2227f51b29 Add basic sanity regression test for creating a scene. 2014-04-25 23:16:07 +01:00
Justin Clark-Casey (justincc)
38acda9f29 Add regression test for terrain fill at two digit height and max ll height. 2014-04-25 23:01:24 +01:00
Justin Clark-Casey (justincc)
904baa6da6 Fix issue where terrain height values > 327 caused chaotic spiked terrain.
Per http://wiki.secondlife.com/wiki/Tips_for_Creating_Heightfields_and_Details_on_Terrain_RAW_Files#Notes_for_Creating_Height_Field_Maps_for_Second_Life
terrain heights up to 508 are possible on the LL grid (and were available on previous releases of OpenSimulator).
The obvious way to allow both this and equivalent -z values, is to rewiden the internal terrain height storage from short to int.
The memory tradeoff is most noticeable on the maximum 8192x8192 var region (equiv to 1024 normal regions), where it adds 128mb to resident use (128k on a normal region)
This is still better than the double used in previous releases.
This does not affect physics or data storage since they already use float and double respectively.
This may not be the final solution if we actually want to sacrifice -z, >327 or something else.
Relates to http://opensimulator.org/mantis/view.php?id=7076
2014-04-25 22:56:25 +01:00
Melanie
a108fcac95 Restore overload mode accidentally disabled in a prior commit. Add a new
config option, LogOverloads, to log when a thread pool overload occurs.
This option defaults to "True" because the logging data is useful for
diagnosing threading issues.
2014-04-25 21:34:29 +01:00
Melanie
2572ed9ed9 Adjust permissions to work hand in hand with what the viewer believes they are.
This fixes the issue of "Show in Search" seeming resetting at random.
2014-04-25 00:35:53 +01:00
Diva Canto
cf54df3ecf Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-04-24 14:12:04 -07:00
Diva Canto
1d9a9e6004 Fixes a long-standing bug related to god-mode change ownership of objects permissive, where the permissions of the children prims' inventory items were not changed. As a consequence, we couldn't control some of the objects imported via HG and OARs even in god mode. 2014-04-24 14:11:42 -07:00
Oren Hurvitz
0d898d8d8a Revert "When linking a Hypergrid region, set the region's flags on the in-memory GridRegion immediately."
This reverts commit 463d0b2f8f.
2014-04-24 19:08:50 +03:00
Oren Hurvitz
463d0b2f8f When linking a Hypergrid region, set the region's flags on the in-memory GridRegion immediately.
(When using llTeleportAgent() this *specific* object is used for the teleport, so it should have the correct flags.)
2014-04-24 16:58:16 +01:00
Oren Hurvitz
bc06db3df4 - Created a standard function to send XML-RPC requests, which logs them like we do for other types of HTTP activity.
- Changed OpenProfileClient to use the new XML-RPC sending function
- Improved logging in WebUtil
2014-04-24 15:58:43 +01:00
Oren Hurvitz
e8a2eff2e8 Changed how UserProfile performs a fallback call using the OpenProfile API, because now JsonRpcRequest() returns an error result instead of throwing an exception 2014-04-24 15:58:43 +01:00
Oren Hurvitz
d62f0bc35d Refactored: moved OpenProfileClient to a location where it can be used by both the Simulators and Robust 2014-04-24 15:58:42 +01:00
Oren Hurvitz
d15a3b10a3 When sending JSON-RPC calls (for UserProfile), use WebUtil instead of constructing the HTTP requests manually. This allows the calls to be logged when using "debug http all 6". 2014-04-24 15:58:41 +01:00
Oren Hurvitz
6efc203ce8 Fixed: hypergrid-linking stopped accepting the following format: "http://grid.example.com" (without a region name)
Fixes http://opensimulator.org/mantis/view.php?id=7128
2014-04-24 06:19:57 +01:00
Oren Hurvitz
d1865c526d Removed unused CsharpSqlite DLLs 2014-04-24 06:19:49 +01:00
Melanie
98c1940820 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2014-04-24 01:48:05 +01:00
Melanie
5dc0298f83 Apply logging flag to a spammy message that may have been overlooked.
No one needs to see every thread launch.....
2014-04-24 01:44:11 +01:00
Dev Random
7180690a14 Show Group name when land is group-owned 2014-04-23 23:29:17 +01:00
Michael Cerquoni
0b743045ef Add Dev Random to CONTRIBUTORS.txt, thanks for the patches! 2014-04-23 17:51:26 -04:00
Justin Clark-Casey (justincc)
5092cbd77e minor: Remove unused System.Linq reference and use ParcelFlags.None instead of 0 from previous commit cb1f28 2014-04-23 19:55:51 +01:00
Dev Random
cb1f2886cd Prevent sending Land Properties for unprivileged users 2014-04-23 19:50:59 +01:00
Justin Clark-Casey (justincc)
7a5699224e Fix regression test break on previous commit 328bc3b 2014-04-23 19:46:58 +01:00
Justin Clark-Casey (justincc)
328bc3b76e Adjust avatar sit positioning on a target to pretty much exactly match that of the LL grid.
This uses an offset of 0.05 on the up vector of the sit orientation, after extensive analysis on
http://opensimulator.org/mantis/view.php?id=7096 and https://wiki.secondlife.com/wiki/Talk:LlSitTarget
This supersedes the previous adjustment in 5b73b9c4 which had been wrongly applied.
The maximum change is about 0.1 with a maximum height avatar.
This patch is all Aleric's work - I am applying manually in order to add these additional notes
2014-04-23 19:19:09 +01:00
Oren Hurvitz
b01e73cf27 Dynamic textures shouldn't be saved in the assets service (only in the simulator cache) 2014-04-23 14:42:40 +01:00
Oren Hurvitz
7eb12f96ec Hypergrid: don't send Local assets to other grids
This commit also contains other changes, but they're all just for clarity. The only actual behavior change is to avoid Posting local assets.
2014-04-23 16:42:23 +03:00
Oren Hurvitz
2506b3d89e Removed references to Community.CsharpSqlite*.dll. This eliminates some warnings, and SQLite still works. 2014-04-23 14:38:41 +01:00
Oren Hurvitz
018832522c Removed GetUserInventory(). It wasn't being used, and was creating warnings because it's Obsolete. 2014-04-23 14:38:33 +01:00
Oren Hurvitz
ca78c8326e Eliminated 'Obsolete' warning: don't call do-nothing function SetPreviousAppearance() 2014-04-23 14:38:04 +01:00
Oren Hurvitz
998d7009a6 Eliminated many warnings 2014-04-23 16:37:36 +03:00
Oren Hurvitz
617bc4710a Workaround for SRAS: if Store Asset returns 'null' then assume the asset already exists, and this isn't an error 2014-04-23 14:19:24 +01:00
Oren Hurvitz
2c9859314f Changed table 'im_offline' to use UTF8 characters. This fixes a problem with Offline IM V2 (only relevant to MySQL).
This fixes http://opensimulator.org/mantis/view.php?id=7123

Users that use MySQL should change their MySQL configuration to support UTF8. In the config file /etc/my.cnf (Linux) or my.ini (Windows), add these settings:

   [mysqld]
   character-set-server=utf8

   [client]
   default-character-set=utf8

And then restart MySQL (on Linux: "sudo service mysqld restart").
2014-04-23 16:18:28 +03:00
Melanie
eb5bfd14fa Reverting test change to cause another email 2014-04-23 12:49:28 +01:00
Melanie
85f4357ce6 Test commit to trigger a mailing list update 2014-04-23 12:44:43 +01:00
Oren Hurvitz
a893fd90cd Fixed KeyframeMotion to work with very slow movement.
Previously, if the movement speed was below 0.05/sec then it didn't work correctly.

Fixes http://opensimulator.org/mantis/view.php?id=7117
2014-04-22 10:19:11 +01:00
Oren Hurvitz
93a9ed2a6d Changed the maximum asset name and description lengths to constants. Also, pre-truncate the description of dynamic textures. 2014-04-22 12:18:54 +03:00
Oren Hurvitz
4cac87d9f4 Fixed: when a user logged-in, sometimes he didn't get notified of the Online status of friends, so they continued to appear Offline.
This happened because these notifications (the UDP packets) can only be sent to Root Agents. But the notifications were done in OnClientLogin(), at which point the client is still a Child Agent. Since a FireAndForget is used, it became a race condition as to whether the packets would be sent before or after the client became a Root Agent.

To fix this, we now only send the notifications once the client becomes a Root Agent for the first time.
2014-04-21 16:56:49 +01:00
Oren Hurvitz
538ff31b28 Better error handling when retrieving offline IMs 2014-04-21 16:56:26 +01:00
Oren Hurvitz
06db136fbc Removed an attempt to set a user's presence to "Region 0" when they HG teleport to another grid.
a) This shouldn't have been done because at that point the user is still logged-in to the current grid. b) It's not necessary because the user will soon be logged-out completely. c) And it didn't even work because the MySQL database layer prevents setting the region to 0.
2014-04-21 16:56:14 +01:00
Oren Hurvitz
acc2c42a79 Better logging in PresenceService, to help diagnose presence problems. 2014-04-21 18:55:53 +03:00
Robert Adams
b065c02661 Add 'lillith_xue' to list of CONTRIBUTORS.TXT
Removed references to 'Intel' as the contributors are no independent.
2014-04-21 06:00:55 -07:00
lillith_xue
bc969a6b46 Possible solution for #7120 and #7051
Signed-off-by: Robert Adams <misterblue@misterblue.com>
2014-04-21 05:58:29 -07:00
Oren Hurvitz
3f76f72137 Better error-handling when storing assets: recognize that 'null' is an error value 2014-04-20 06:23:38 +01:00
Oren Hurvitz
52f8669169 Stopped setting the Service URL "GatekeeperURI" on users' accounts. It isn't actually used. 2014-04-20 06:23:37 +01:00
Oren Hurvitz
853c0fccc8 Fixed: when any avatar changed his Active Group, it was set as the active group for *all* the avatars in the scene (not permanently) 2014-04-20 06:23:37 +01:00
Oren Hurvitz
090f9bcece Fixed: once a user has rezzed an object, they could then duplicate it as much as they wanted even if the parcel's permissions had since been changed to disallow rezzing 2014-04-20 06:23:36 +01:00
Oren Hurvitz
3185db7f94 Fixed: if a user belonged to the parcel's group then he was allowed to rez object in the parcel even if the flag "Create Objects by Group" was disabled 2014-04-20 06:23:36 +01:00
Oren Hurvitz
a780e01a54 Fixed: the parcel flag "Allow Scripts from Group" should only check if the parcel has a Group set; it doesn't have to be *deeded* to the group
Also some cleanup of the use of Group ID's (with no change to functionality).
2014-04-20 06:23:35 +01:00
BlueWall
63fd027494 Catch empty url error 2014-04-19 22:25:21 -04:00
Oren Hurvitz
b3ebec184f In teleports, when sending the Source region, set its ServerURI to the Gatekeeper URI (which is used with Regions); not the Home URI (which is used with Users) 2014-04-13 12:58:37 +03:00
Oren Hurvitz
e1dd228f18 Better error checking when creating hyperlinks: a) Reject invalid strings; b) Default port is 80, not 0
The change of default port may fix http://opensimulator.org/mantis/view.php?id=7108 , where a user was able to create a Hyperlink to OSGrid from inside OSGrid.
2014-04-13 09:54:56 +01:00
Robert Adams
c8914d22eb BulletSim: reduce the terrain collison margin to be the same as other
objects in the world.

This was originally changed in an attempt to make vehicles work better
but the effect was not that large and it causes avatars to float
above the terrain.
2014-04-12 17:37:57 -07:00
Melanie
574a11558d Refactor: Rename GetOtherSetting to GetSetting and make SetOtherSetting private 2014-04-12 17:32:16 +01:00
Melanie
5d964a6424 Remove the old XML format parsing. Now additional region params can just be
added as they are already exposed through an API when using Nini. That will
remove the need to always edit RegioInfo just to add a region based setting.
2014-04-12 16:58:07 +01:00
Dev Random
18b91fdbe9 Tweak to PrimLimits and add missing Regions.ini example
Signed-off-by: Melanie <melanie@t-data.com>
2014-04-12 14:40:34 +01:00
Dev Random
f0998a9222 Add per-user checking to PrimLimitsModule
Signed-off-by: Melanie <melanie@t-data.com>
2014-04-12 09:28:29 +01:00
Justin Clark-Casey (justincc)
7c148d9b2f minor: use constants instead of magic numbers in llRequestAgentData() where possible 2014-04-11 00:52:28 +01:00
Justin Clark-Casey (justincc)
de0ab04d00 Actually add the llRequestAgentData() test class for commit 530c86 2014-04-11 00:36:50 +01:00
Justin Clark-Casey (justincc)
530c86335d Fix the presence info caching used in llRequestAgentData(), which was completely inoperative.
This means the presence info may be out of date by up to 20 seconds, but this avoids scripts potentially triggering constants requests to user accout and presence info services.
Relates to http://opensimulator.org/mantis/view.php?id=7088 though I fixed in a different way.
Adds regression test for this case.
2014-04-11 00:29:06 +01:00
Robert Adams
562a3cb338 BulletSim: small tweek to avatar height reduce feet embedded into prims.
This adjustment makes a default, shoeless avatar stand properly on a prim
for the various heights (0% to 100% in the appearance adjustment).
2014-04-10 06:53:36 -07:00
Snoopy Pfeffer
32ad66c274 Allows to sell objects on a parcel of land together with that parcel of land. The objects that are sold together with the parcel of land need to fulfill the following preconditions: owned by the current parcel owner, not set to a group, transferrable. This feature does not work for group owned parcels or land bought by a group. 2014-04-10 11:47:46 +02:00
Oren Hurvitz
c725ad1577 Fixed: when teleporting between grids, the avatar name wasn't always updated.
When an avatar is in their home grid, their name appears as "First Last". In other grids the name appears as "First.Last @grid.example.com". However, viewers have a bug and they don't always show the new name. We use a trick (changing the Group Title briefly) in order to make the viewers show the new name. This is only done after a Hypergrid teleport.
2014-04-09 15:00:54 +01:00
Oren Hurvitz
06e0528d0b In teleports, pass the source region to the destination (similar to an HTTP referrer) 2014-04-09 09:22:20 +01:00
Oren Hurvitz
cf1686335f Log when the presence service logs-out all the users in a region 2014-04-09 06:06:52 +01:00
Oren Hurvitz
af406748a2 Improved error messages when a teleport fails. The viewer's dialog already says "Teleport failed", so adding "Teleport refused" is redundant. 2014-04-08 08:11:30 +01:00
Oren Hurvitz
e00f1a0410 Allow invalidating the users cache 2014-04-08 08:11:29 +01:00
Diva Canto
86105a1533 Better (amend to previous commit) 2014-04-07 19:51:26 -07:00
Diva Canto
c0fd09b445 Avoid calling HELO service on malformed URLs. This is in response to an exception reported by danbanner. 2014-04-07 19:41:25 -07:00
Oren Hurvitz
85d51e57a9 When sending QueryAccess to a region, also send the user's Home URI 2014-04-07 07:32:36 +01:00
Oren Hurvitz
55cc8044cb Refactored: use Scene.GetAgentHomeURI() to get the Home URI of a user 2014-04-07 07:26:44 +01:00
Oren Hurvitz
f3508649f5 Fixed: during a teleport we always sent the error "The teleport destination could not be found" to the client. This happened on both success and failure.
On successful teleports this error wasn't actually shown to the user. But on failed teleports this error could hide the true cause of the failure. For example, attempting to use a Landmark that's more than 4095 regions away would result in two warnings appearing in the viewer: "Region too far" and "Destination could not be found". The second message hid the first one, so it wasn't obvious to the user what is actually the problem.
2014-04-06 15:42:33 +01:00
Oren Hurvitz
abe0f4a088 When preparing a Hypergrid teleport, tell the receiving grid which user is entering the grid.
This can affect which region to use. E.g., returning users may be allowed to enter any region, whereas users from other grids will have to enter a gateway region. Previously per-user decisions were only made later, but by then it's too late to change which region the user enters.
2014-04-06 15:40:45 +01:00
Oren Hurvitz
d4acaf25af Pass the correct position to QueryAccess() instead of UUID.Zero (it was wrong in one place) 2014-04-06 15:40:45 +01:00
Justin Clark-Casey (justincc)
cacbb5c165 Don't re-retrieve sit part in SP.HandleAgentSit() when we already have it (this time with the right code change) 2014-04-05 02:16:14 +01:00
Justin Clark-Casey (justincc)
86a2cd915c Revert "Don't re-retrieve sit part in SP.HandleAgentSit() when we already have it."
This reverts commit 2c00b73cd2.

Wrong code change
2014-04-05 02:11:36 +01:00
Justin Clark-Casey (justincc)
2c00b73cd2 Don't re-retrieve sit part in SP.HandleAgentSit() when we already have it. 2014-04-05 02:09:44 +01:00
tglion
8b8e1b88ec fixed object-collision issue after uncheck phantom-flag
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-04-04 12:29:44 -04:00
Justin Clark-Casey (justincc)
aec723b955 Fix sp.AbsolutePosition when agent is sitting on a child prim, which in turns fixes llDetectedPos(), llGetLinkPrimitiveParams() and similar functions.
Add regression test for this case.
In relation to http://opensimulator.org/mantis/view.php?id=7043
2014-04-03 23:22:57 +01:00
Michael Cerquoni
6b1d09813e remove some whitespace that snuck in with last patch 2014-04-03 13:25:32 -04:00
Dev Random
50eec6df52 Add Varregion support to Terragen Handler
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-04-03 13:14:13 -04:00
Vegaslon
3c5b7d7b79 BulletSim: Minor Fix to vehicle hovering, add more ways to disable it.
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-04-03 13:07:48 -04:00
Dev Random
4aa483777b Move new Estate commands to OpenSim.cs
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-04-03 12:45:43 -04:00
Oren Hurvitz
672bd9fc98 Reduced log levels for REST 404 errors to DEBUG 2014-04-03 15:04:26 +01:00
Oren Hurvitz
01daa74adf Better error messages in RestClient 2014-04-03 14:13:22 +01:00
Oren Hurvitz
6d2893be67 When teleporting using Hypergrid, show more informative error messages in case of error 2014-04-03 14:13:03 +01:00
Robert Adams
65c4cb48ac BulletSim: make avatar physical shape to be a rectangle rather than
a capsule. Set the default to be the rectangle shape and adjust the
parameters in OpenSimDefaults.ini for the new shape.

The rectangle shape will perform better and avatar height can be
computed more accurately.
2014-04-02 21:53:58 -07:00
Robert Adams
9406db3047 Fix problem with floating avatar by passing avatar size information
to the physics engine.

This operation was accidentally removed while in the middle of improving
the computation of the avatar height. This is a temp fix until the real
solution is added.
2014-04-02 21:52:24 -07:00
Justin Clark-Casey (justincc)
e756457703 Remove redundant part.SitTargetAvatar setting from SP.MakeRootAgent as part.AddSittingAvatar already does this. 2014-04-03 01:21:50 +01:00
Justin Clark-Casey (justincc)
6ac9c9c972 refactor: Use m_sittingAvatars to maintain the list of sitting avatars instead of two independent structures that do exactly the same thing
m_sittingAvatars code also already properly handles locking to avoid races.
2014-04-03 01:14:39 +01:00
Justin Clark-Casey (justincc)
91b7679db9 minor: Fix warning in AvatarFactoryModule 2014-04-03 00:35:42 +01:00
Justin Clark-Casey (justincc)
17929abd28 Wrap contents of ETM.CrossAgentToNewRegionAsync() in try/catch to avoid a failure terminating simulators running on Windows
In relation to http://opensimulator.org/mantis/view.php?id=7050
2014-04-03 00:34:20 +01:00
Justin Clark-Casey (justincc)
5cb4044539 Don't clear avsToCross in SOG.AbsolutePosition.set(), this is unnecessary since the structure is local and never reused after the clear 2014-04-03 00:26:55 +01:00
Justin Clark-Casey (justincc)
e6d0dcd4e8 Fix bug where crossing to a neighbouring region and back again would trigger an exception, and a second recross would stop the user moving until relog
Also fixes an issue where sitting avatar counts became inaccurate after any cross.
Part of the problem was due to cloning code using MemberwiseClone() but not resetting certain collection structures.
Adds regression test for this case.
In relation to http://opensimulator.org/mantis/view.php?id=7050
2014-04-03 00:19:53 +01:00
Oren Hurvitz
2051535ce1 String matching in REST handlers: must allow '-' as a separator, because the "/map" handler uses it 2014-04-02 15:11:54 +01:00
Oren Hurvitz
0301c81b01 Made GetScenePresence() case-insensitive when searching by user name. This makes it easier to use console commands such as "show appearance". 2014-04-02 13:08:31 +01:00
Oren Hurvitz
9211361b19 Fixed AssetsExist in SQLite 2014-04-02 10:00:09 +03:00
Oren Hurvitz
6b65895736 Made the SQLite unit tests work on Windows (sqlite3.dll wasn't being loaded) 2014-04-02 09:49:57 +03:00
Oren Hurvitz
559c66afe6 Added System.Core reference to MSSQL 2014-04-02 09:20:28 +03:00
Oren Hurvitz
aa217cf90f Better string matching when searching for REST handlers: must match an entire path component (ending with '/' or a similar character).
For example, these should match: "/assets" and "/assets/12345", but these shouldn't match: "/assets" and "/assets_exist".
2014-04-02 08:52:44 +03:00
Oren Hurvitz
bbfda8e19e Fixed last-resort sending of error response (HTTP 500) when an error occurs while handling a request.
The previous code didn't actually send the response, so the caller was stuck until the timeout (100 seconds).
2014-04-02 06:32:41 +01:00
Oren Hurvitz
fad0fd7f75 Fixed the "Update Asset" handler: it was looking for the Asset ID in the wrong parameter.
This doesn't actually matter because the "Update Asset" operation isn't implemented in AssetsServer. But still, the handler should do the right thing...
2014-04-02 06:32:40 +01:00
Oren Hurvitz
d1c3f8eef5 Added assets service method AssetsExist(), which returns whether the given list of assets exist.
This method is used to optimize sending assets with embedded assets: e.g., when a Hypergrid visitor takes an item into the inventory.
2014-04-02 06:30:57 +01:00
Mic Bowman
ac16a667e1 fix orphaned code in sun module per mantis 7068 2014-04-01 19:48:03 -07:00
Justin Clark-Casey (justincc)
7bafee28fa Removing warning from SceneObjectLinkingTests.TestLinkDelink2SceneObjects() by actually checking whether delinked grp3 is not null 2014-04-02 01:26:58 +01:00
Justin Clark-Casey (justincc)
46095c058e minor: comment out currently unused RegionCombinerModule.LogHeader 2014-04-02 01:24:40 +01:00
Justin Clark-Casey (justincc)
e5a5b69b08 remove EstateManagmentCommands.m_commander that has been unused for some time 2014-04-02 01:23:40 +01:00
Dev Random
43eab5e163 Console command to rename Estate 2014-04-02 01:17:41 +01:00
Justin Clark-Casey (justincc)
444737c830 minor: Only calculate fetched usedPrims and simulatorCapacity info in PrimLimitsModule.CanObjectEnter() when we know for sure that we need them. 2014-04-02 01:05:37 +01:00
Justin Clark-Casey (justincc)
7cb1690589 minor: disable logging in recently added scene object crossing tests and remove some unnecessary test config 2014-04-02 01:01:53 +01:00
Justin Clark-Casey (justincc)
0af8886400 Fix problem where moving an object to another region on the same simulator was failing, with the object returning to its original position.
Root cause was that PrimLimitsModule was not properly handling the case where the parcel it was asked to check was outside the current region's bounds.
If this is the case, we can abort the check since the receiving region will perform it.
Added a regression test for this case.
2014-04-02 00:58:33 +01:00
BlueWall
4cbd45f3d5 Merge branch 'master' of /home/opensim/src/opensim 2014-03-31 15:50:27 -04:00
BlueWall
59d0e3c3c8 Add check to prevent the return of a wrong value when key is NULL_KEY 2014-03-31 15:49:53 -04:00
Dev Random
635f3f77ab Console command to change Estate owner
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-03-29 00:59:15 -04:00
Oren Hurvitz
6557eba235 Removed default timeout when starting scripts after Load OAR 2014-03-28 13:04:19 +03:00
Oren Hurvitz
1fe504fee5 Better skipping of "SculptData" when parsing XML 2014-03-28 12:52:06 +03:00
Oren Hurvitz
f360b687d6 Removed "SculptData" from the serialized XML format of prims 2014-03-28 07:51:21 +01:00
BlueWall
ba5a236922 Profiles local StorageProvider fix, round 3 2014-03-27 13:41:20 -04:00
BlueWall
20640357ab Fix to local StorageProvider override 2014-03-27 13:27:46 -04:00
BlueWall
45ada5ca2d Merge branch 'master' of /home/opensim/var/repo/opensim 2014-03-27 12:56:12 -04:00
BlueWall
9c7b28341c Add support for specifying non-default StorageProvider 2014-03-27 12:36:30 -04:00
BlueWall
a15282f023 Merge branch 'master' into m_test 2014-03-27 12:21:38 -04:00
Oren Hurvitz
161c827a44 Fixed a case where logging an HTTP response failed because the stream was non-seekable 2014-03-27 17:46:37 +02:00
Oren Hurvitz
76add0fdb0 Log errors in MakeRequest() as INFO, not ERROR. Some communications problems are benign (e.g., can't send Friend status update to a region that is down), so don't log them as ERROR so soon. We rethrow the exception, so the caller can still decide to log the error as an ERROR.
Resolves http://opensimulator.org/mantis/view.php?id=7077
2014-03-27 15:00:42 +01:00
Justin Clark-Casey (justincc)
af54e6f370 minor: Change incorrect "Maximum" in the PhysicalPrimMin OpenSim.ini.example description to "Minimum"
Thanks to aiaustin for the spot.
2014-03-26 23:45:02 +00:00
Justin Clark-Casey (justincc)
e7fa8a4699 minor: change misspelling of overriden to overridden in comments within config files
Thanks to aiaustin for the spot.
2014-03-26 23:43:49 +00:00
Justin Clark-Casey (justincc)
262892336b Add LuciusSirnah to contributors list 2014-03-26 21:03:21 +00:00
Justin Clark-Casey (justincc)
1247174db4 Fix MSSQLInventoryHandler.IncreementFolderVersion where sql accidentally used a MySQL style ?folderID insted of @folderID
Thanks to LuciusSirnah in http://opensimulator.org/mantis/view.php?id=7075 for this fix
2014-03-26 21:02:26 +00:00
Justin Clark-Casey (justincc)
de941d2ec7 minor: remove compiler warning from NullEstateData 2014-03-26 21:00:57 +00:00
Justin Clark-Casey (justincc)
b0bae62c30 refactor: Actually use MaptileStaticFile in RegionInfo rather than having both a public field and a get property 2014-03-26 20:58:58 +00:00
Justin Clark-Casey (justincc)
7a4c5b067d Add MSSQL EstateStore.migrations VERSION 10 transaction to add AllowLandMark, AllowParcelChanges and AllowSetHome columns to estate_settings table.
Taken from http://opensimulator.org/mantis/view.php?id=7074 by LuciusSirnah.  Thanks!
2014-03-26 20:42:53 +00:00
Justin Clark-Casey (justincc)
6c447f892e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-03-26 20:36:33 +00:00
Justin Clark-Casey (justincc)
5e8dfb4f7e Fix extra physics params MSSQL migration (version 39).
This was failing because it used MySQL syntax
This is taken from Lucius Sirnah's entry in http://opensimulator.org/mantis/view.php?id=6593
But with the column existence checking removed, as this should not be necessary in a migration and is inconsistent with all other migrations, though I can see a case for doing it.
2014-03-26 20:34:04 +00:00
Oren Hurvitz
7a47c15edb - Increased the threadpool timeout to 10 minutes
- Changed a few places that launch long-lasting threads to skip the timeout altogether
2014-03-26 20:34:55 +01:00
Oren Hurvitz
14a7ddb885 Revert "Use log-rolling on the log files (once per day)"
This reverts commit 8ecab21b37.
2014-03-26 08:56:56 +02:00
Justin Clark-Casey (justincc)
2fbb906ff6 Reinsert code to extract size_x and size_y parameters from GetHomeRegion response in UserAgentServiceConnector.
This is actually code from commits afb2e07 and cf61cdf
For as yet unexplained reasons, the section of these commits which changed UserAgentServiceConnector.cs disappeared from its history between approx Feb 5 2014 and Feb 13 2014.
This ought to be impossible.  More details to follow in opensim-dev mailing list
2014-03-26 02:34:22 +00:00
Justin Clark-Casey (justincc)
62a03a5cac Also take YP/commented out JS references from script engine CodeTools.
Fixes build break from d3387d591a
2014-03-26 01:20:49 +00:00
Justin Clark-Casey (justincc)
d3387d591a Remove unmaintained and unused YieldProlog scripting language
This hasn't been mainntained since 2008 and has not been kept up with the rest of the language infrastructure.
Hence, it almost certainly doesn't work and has never been used, afaik
If this is wrong, please say on the opensim-users/dev mailing list.
Removing to reduce maintenance burden (since it still needs to be made to compile).
2014-03-26 00:59:57 +00:00
Justin Clark-Casey (justincc)
cffea984f1 minor: Remove "js" (Javascript) from list of allowed languages in script config since it hasn't been present in OpenSimulator for a very long time (0.6 days)
One reason support was removed is that the external DLL that implemented Javascript stopped development.
Not sure how well this ever worked in OpenSimulator.
Not removing vb for now as this is directly supported by Mono (via vbnc compiler) though I strongly suspect it is also inoperable.
2014-03-26 00:50:33 +00:00
Justin Clark-Casey (justincc)
99308d64c6 minor: Add some doc to Scene.Backup() detailing its direct invocation if the indepedent backup thread is not running (e.g. in a regression test) 2014-03-26 00:43:17 +00:00
Oren Hurvitz
6d1d58b654 Use the "X-Content-Encoding" header to indicate gzipped data, because old OpenSims fail if they get an unknown "Content-Encoding" 2014-03-25 18:09:23 +01:00
BlueWall
14836e60ff Fix issue with user picks creation. The snapshot id is UUID.Zero in new parcels. 2014-03-25 11:10:48 -04:00
BlueWall
9aec36156e Sync code that has moved in development branch with changes in master 2014-03-25 11:09:27 -04:00
BlueWall
fce3fca7f9 Add the UserProfiles local service module to non-HG Standalone configuration. 2014-03-25 11:08:58 -04:00
BlueWall
542bef20e8 Move JsonRpc request code out for general availability 2014-03-25 11:08:27 -04:00
BlueWall
dba33fee39 Move from UserProfileModule for general availability 2014-03-25 11:08:11 -04:00
Oren Hurvitz
b1d8aa0b64 Use the "Content-Encoding" header to indicate gzipped streams 2014-03-25 15:36:59 +01:00
Oren Hurvitz
8ecab21b37 Use log-rolling on the log files (once per day)
Resolves http://opensimulator.org/mantis/view.php?id=6950
2014-03-25 09:53:02 +01:00
Oren Hurvitz
368b29a680 In Core Profiles: as a fallback, try to get profiles from foreign grids using the OpenProfile protocol
Resolves http://opensimulator.org/mantis/view.php?id=6954
2014-03-25 09:37:18 +01:00
Oren Hurvitz
f90aee696a Always throw an exception if MakeRequest (used for HTTP POST) fails. (Previously many exceptions were ignored)
Resolves http://opensimulator.org/mantis/view.php?id=6949
2014-03-25 09:37:10 +01:00
Oren Hurvitz
f901a38204 Improved logging of HTTP requests
- MemoryBuffer isn't seekable, so we can't log it. Log the string instead.
- Handle compressed streams
- Don't attempt to dump binary data. Either don't log it at all (if we know it's binary), or at least convert non-ASCII characters to ASCII.
- Log responses to HTTP requests
- Use the same log prefix for all of these log messages ("[LOGHTTP]"), to make them easy to see at a glance
- Increased the snippet length to 200 (80 doesn't show enough), and add "..." only if the message was actually truncated

Resolves http://opensimulator.org/mantis/view.php?id=6949
2014-03-25 09:36:53 +01:00
Oren Hurvitz
4289b71141 Fixed unit tests due to changes in the threadpool 2014-03-25 10:04:52 +02:00
Oren Hurvitz
e131e73652 Run slow operations in a separate thread, instead of using FireAndForget (which has a 1-minute timeout)
Resolves http://opensimulator.org/mantis/view.php?id=6945
2014-03-25 08:01:55 +01:00
Oren Hurvitz
84d7227dfd Changed LogThreadPool to have 4 logging levels. Added console command "debug threadpool level" to set the logging level.
Resolves http://opensimulator.org/mantis/view.php?id=6945
2014-03-25 08:01:50 +01:00
Oren Hurvitz
b13214af27 Added a watchdog to abort slow threads in the main thread pool
If a task in the thread pool hangs then it will permanently take up
one of the threads. If this happens repeatedly then the thread pool will
become exhausted and OpenSim will fail. This watchdog terminates threads in the
thread pool that have been executing for over a minute (which probably
means they're hung).

Resolves http://opensimulator.org/mantis/view.php?id=6945
2014-03-25 08:01:45 +01:00
Oren Hurvitz
e735f76553 LogThreadPool: when the thread is for ProcessPacketMethod, also log the packet type
Resolves http://opensimulator.org/mantis/view.php?id=6945
2014-03-25 08:01:41 +01:00
Oren Hurvitz
4031933475 Refactored DebugFlagsEnum
Resolves http://opensimulator.org/mantis/view.php?id=6945
2014-03-25 08:01:37 +01:00
Oren Hurvitz
8555e54e22 Automatically start logging FireAndForget activity if the threadpool is full
Resolves http://opensimulator.org/mantis/view.php?id=6945
2014-03-25 08:01:32 +01:00
Oren Hurvitz
7c0ebcb984 Added debug flag: LogThreadPool. It makes us log every use of the main threadpool.
Resolves http://opensimulator.org/mantis/view.php?id=6945
2014-03-25 08:01:13 +01:00
Justin Clark-Casey (justincc)
091f3a8000 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-03-25 00:20:38 +00:00
Justin Clark-Casey (justincc)
e12c044eab Don't fail to enable permissions modules correctly if there is any leading or trailing whitespace between comma separate module combinations. 2014-03-25 00:19:24 +00:00
Oren Hurvitz
8276a9e5f7 Fixed Debug command for Groups. (Use of wrong capitalization caused *two* "debug" options to appear in "help")
This is a (small) part of http://opensimulator.org/mantis/view.php?id=6949
2014-03-24 18:27:18 +01:00
Oren Hurvitz
6a477e044d If prim region crossing fails then don't delete the prim from the original region
Resolves http://opensimulator.org/mantis/view.php?id=6946
2014-03-24 18:24:50 +01:00
Oren Hurvitz
1769e93c42 Fixed parsing of coalesced objects if the XML starts with an XML Declaration ("<xml ...>")
Resolves http://opensimulator.org/mantis/view.php?id=6944
2014-03-24 18:18:29 +01:00
Oren Hurvitz
1a32b35279 In Load OAR, correctly restore group-owned objects
Resolves http://opensimulator.org/mantis/view.php?id=6943
2014-03-24 18:18:23 +01:00
Oren Hurvitz
305f5110c6 In Load OAR: Zero isn't a valid Group ID
Resolves http://opensimulator.org/mantis/view.php?id=6943
2014-03-24 18:18:08 +01:00
Oren Hurvitz
35078e03e5 During Load OAR, fix the User and Group ID's in objects that are embedded in assets (previously only rezzed objects were fixed)
Resolves http://opensimulator.org/mantis/view.php?id=6942
2014-03-24 18:17:59 +01:00
Oren Hurvitz
5fd9411143 Refactored Load IAR: created a generic mechanism to modify the SOG's as they are being loaded
Resolves http://opensimulator.org/mantis/view.php?id=6942
2014-03-24 18:17:35 +01:00
Oren Hurvitz
0ff61341e4 HGAssetService searches for the "HomeURI" setting in several sections: Startup, Hypergrid, HGAssetService
Resolves http://opensimulator.org/mantis/view.php?id=6940
2014-03-24 18:02:22 +01:00
Oren Hurvitz
8cec0b3fa1 If updating a user's profile notes fails then return an error
Resolves http://opensimulator.org/mantis/view.php?id=6938
2014-03-24 18:02:17 +01:00
Oren Hurvitz
1b30ae81b5 Fixed updating usersettings in the database
Resolves http://opensimulator.org/mantis/view.php?id=6938
2014-03-24 18:02:05 +01:00
Oren Hurvitz
b9e0d0fdb2 Don't show hidden groups in search results
Resolves http://opensimulator.org/mantis/view.php?id=6937
2014-03-24 18:01:56 +01:00
Oren Hurvitz
1d4551e52f Check settings for groups module
Resolves http://opensimulator.org/mantis/view.php?id=6937
2014-03-24 18:01:47 +01:00
Oren Hurvitz
c8583e566d When searching for users, don't add users from the local cache if they have an invalid UUID
Resolves http://opensimulator.org/mantis/view.php?id=6935
2014-03-24 18:01:37 +01:00
Oren Hurvitz
a2dd8f31de Trim search queries (for users, groups, etc.). I have found that sometimes the viewer adds a space at the end, which causes searches to fail.
Resolves http://opensimulator.org/mantis/view.php?id=6935
2014-03-24 18:01:28 +01:00
Oren Hurvitz
6edc446780 Fixed: OnRegionInfoChange was never triggered
Resolves http://opensimulator.org/mantis/view.php?id=6934
2014-03-24 18:01:22 +01:00
Oren Hurvitz
bf68dbabd7 Save to database these parcel updates: Force Owner, Abandon Request, Reclaim. (Previously these updates only changed the parcel in memory)
Resolves http://opensimulator.org/mantis/view.php?id=6934
2014-03-24 18:01:08 +01:00
Oren Hurvitz
89945f8829 Refactored: ExternalRepresentationUtils should be the only place where the "CreatorData" field is calculated, to ensure uniformity
Resolves http://opensimulator.org/mantis/view.php?id=6933
2014-03-24 18:00:59 +01:00
Oren Hurvitz
edc04d4184 When updating the CreatorId of an inventory item, automatically update the CreatorIdAsUuid field as well
Resolves http://opensimulator.org/mantis/view.php?id=6933
2014-03-24 18:00:39 +01:00
Oren Hurvitz
5b2af7f99e Moved the linkage between LoginService and HGInventoryService to the config file 2014-03-24 18:33:18 +02:00
Oren Hurvitz
df9845a283 When a user logs-in, automatically create the Suitcase folder
This is only done if the Suitcase Inventory Service is used.
Previously the Suitcase was created at a later time, which meant that it wasn't shown in the viewer until the viewer was restarted.
2014-03-24 17:02:13 +01:00
Oren Hurvitz
7496d0b0f7 Fixed unit tests for delinking objects 2014-03-24 15:05:39 +02:00
Oren Hurvitz
4bccfed80c When logging in UserAgentServiceConnector, always log the original server URL (the hostname), not the IP
This resolves http://opensimulator.org/mantis/view.php?id=6955 (that patch was modified a bit)
2014-03-24 14:20:19 +02:00
Oren Hurvitz
eaf99bf928 Changed to Unix line-endings in VS2010Target.cs
Resolves http://opensimulator.org/mantis/view.php?id=6951
2014-03-24 12:27:07 +01:00
Oren Hurvitz
f5ae36d7e2 Updated Prebuild to support .NET 4.5
Resolves http://opensimulator.org/mantis/view.php?id=6951
2014-03-24 12:26:54 +01:00
Oren Hurvitz
425d76bb98 Enable runprebuild.bat to run in Cygwin
This resolves http://opensimulator.org/mantis/view.php?id=6951
2014-03-24 12:26:53 +01:00
Oren Hurvitz
921f0052f4 Get the full viewer name even if it's (incorrectly) sent in the 'Channel' field
Recent versions of Firestorm and Singularity have started sending the viewer name in the 'Channel' field, leaving only their version number in the 'Viewer' field. So we need to search both of these fields for the viewer name.

This resolves http://opensimulator.org/mantis/view.php?id=6952
2014-03-24 12:26:52 +01:00
Oren Hurvitz
6734b94761 Better error messages
This resolves http://opensimulator.org/mantis/view.php?id=6936
2014-03-24 12:22:32 +01:00
Oren Hurvitz
773ffcafc3 Removed "hacktastic" code that is no longer needed.
We no longer set the object's AbsolutePosition in this place, so the IsAttachment hack doesn't do anything anymore.

This resolves http://opensimulator.org/mantis/view.php?id=6936
2014-03-24 12:05:25 +01:00
Oren Hurvitz
62b3bdf0fc When linking two groups, and then deleting the combined group: delete *all* of the combined group's prims, including those that came from the second subgroup
This fixes http://opensimulator.org/mantis/view.php?id=6175
2014-03-24 11:44:48 +01:00
Robert Adams
b0cb0ec02f BulletSim: fix problem where axis constraints were also constraining
linear motion.

The code was limiting linear motion to be only in the positive direction
for any axis that was constrained.
2014-03-23 13:08:31 -07:00
Oren Hurvitz
81c9952e99 Added missing quotes in Robust.HG.ini.example 2014-03-23 16:40:09 +02:00
Dev Random
db83208794 Fix negative stat for Active Scripts
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-03-22 23:02:10 -04:00
Kevin Cozens
ff5c38534d Reverting "Set default name for mute list" that was pushed by mistake.
This reverts commit 58def34dbe.
2014-03-22 16:38:48 -04:00
Kevin Cozens
58d7e3b8ed Reverting "Pass method to offline.php" commit that was pushed by mistake.
This reverts commit fe16a72a9a.
2014-03-22 16:31:36 -04:00
Kevin Cozens
949139eb0b Moved Kevin Cozens to the core developers list. 2014-03-22 15:57:32 -04:00
Kevin Cozens
fe16a72a9a Pass method to offline.php using ?blah instead of /blah/. Avoids issue with Apache web servers running PHP via CGI. 2014-03-22 15:13:03 -04:00
Kevin Cozens
58def34dbe Set default name for mute list module as shown in OpenSim.ini.example 2014-03-22 15:13:03 -04:00
Vegaslon
d4dad75a3c BulletSim: Fix jumping while running. Was unintentional taking way all upward target motion for avatar when running.
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-03-22 15:00:48 -04:00
Melanie
ebe7726cd7 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2014-03-22 01:49:28 +00:00
Melanie
a4d322dcd1 Allow the setting from the environment to take effect if no explicit setting is given.
This is done by calling the constructor only with a directory if one is actually given.
2014-03-22 01:47:48 +00:00
Justin Clark-Casey (justincc)
ccf18fd2ef Rename SOG.InSceneBackup to CanBeBackedUp to reflect its actual functionality.
It does not indicate that a SOG has been set to be backed up or not.  It indicates that a SOG can be backed up in principle.
In practice, this was added by lbsa71 in 2007 and is set to always true, albeit as a virtual property.
2014-03-22 01:36:21 +00:00
Dev Random
3d0778bcd6 Allow Mono Plugin Registry setting for Regions
Signed-off-by: Melanie <melanie@t-data.com>
2014-03-22 01:29:51 +00:00
Justin Clark-Casey (justincc)
a5800f479e If an object has it's temporary flag unset after being set, put it back in the persistence list.
Effectively uses the patch in http://opensimulator.org/mantis/view.php?id=7060
But also adds a regression test and exposes the necessary property to allow this to work.
2014-03-22 00:29:13 +00:00
Justin Clark-Casey (justincc)
178a5a5585 rename prefix of scene-inventory.<scene-name>.ProcessedFetchInventoryRequests and QueuedFetchInventoryRequests to inventory.httpfetch.*
Actual inventory processing is done with a single set of static structures rather than per scene.
2014-03-21 23:29:31 +00:00
Justin Clark-Casey (justincc)
6664079f84 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-03-21 23:18:13 +00:00
Talun
fb312279c9 Mantis 6922: No particles are generated if their size exceeds the maximum allowed size.
This patch ensures that no particle scal value can exceed 4.0
2014-03-21 23:13:34 +00:00
Oren Hurvitz
f8caf41bd8 Moved Oren Hurvitz to core developers list 2014-03-21 17:33:19 +02:00
Justin Clark-Casey (justincc)
47e7febebc Add monitored thread last update times as stats in "show stats all"
These have the format server.thread.<thread-name>
2014-03-21 02:06:10 +00:00
Justin Clark-Casey (justincc)
33ae733006 Add H-H-H to contributors 2014-03-20 22:43:00 +00:00
H-H-H
da25903300 Adding a way to disable/enable the in built Dwell Module 2014-03-20 22:35:50 +00:00
Justin Clark-Casey (justincc)
7f027552ec If we find an existing suitcase folder in HGSuitcaseInventoryService.GetRootFolder(), then return that as a response rather than null.
Fixes a regression from commit 346644016c (Fri Nov 15 23:10:59 2013)
This is actually the reverse of zadark's patch in http://opensimulator.org/mantis/view.php?id=6969
But I'm assuming that was a mistake since clearly we should be returning this data - this was original behaviour
2014-03-20 20:36:47 +00:00
Justin Clark-Casey (justincc)
d04bb3ca9b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-03-20 20:15:57 +00:00
Talun
bd6f734d3a Mantis 6974 PERMISSION_TRACK_CAMERA should be implicit on attach.
http://wiki.secondlife.com/wiki/Run_time_permissions
This change makes PERMISSION_TRACK_CAMERA implicit on attach
2014-03-20 20:11:26 +00:00
Michael Cerquoni
b5f94c72b9 Allow MaptileStaticFile path to be set to anywhere and not force it to bin/maptiles 2014-03-19 11:16:52 -04:00
Robert Adams
220ea9f687 Add Jak Daniels to CONTRIBUTORS.TXT 2014-03-18 22:20:00 -07:00
Jak Daniels
61353dde80 Allow Region specific static maptiles to be loaded from file. 2014-03-18 22:18:50 -07:00
Justin Clark-Casey (justincc)
cf97535d9e Revert "Simplify DoubleQueue to eliminate redundant sempahore work."
This reverts commit 52b7b40034.

Got the semantics wrong - the sempahore is required so that the blocking thread waits for a signal.
2014-03-19 01:40:56 +00:00
Justin Clark-Casey (justincc)
52b7b40034 Simplify DoubleQueue to eliminate redundant sempahore work.
Exclusion is already guaranteed by the lock on m_syncRoot.
Semaphore could not allow more than one thread in these sections anyway since the underlying SDK structures are not thread-safe.
2014-03-19 00:48:13 +00:00
Justin Clark-Casey (justincc)
1497b75361 minor: Put ProcessedFetchInventoryRequests and QueuedFetchInventoryRequests in stats category "scene-inventory" instead of "scene"
To distinguish from general scene stats
2014-03-19 00:37:06 +00:00
Justin Clark-Casey (justincc)
9858766516 minor: Make "stats show" an alias for "show stats" command. 2014-03-19 00:35:49 +00:00
Justin Clark-Casey (justincc)
e6080a38c5 Rename "debug stats record" command to "stats record" for consistency. Move from debug to general command category 2014-03-19 00:29:36 +00:00
Justin Clark-Casey (justincc)
1d0a9e521c Allow a snapshot of stats to be dumped to a file with a "stats save" command 2014-03-19 00:28:57 +00:00
Justin Clark-Casey (justincc)
fad1d70180 Add httpserver.<port>.QueuedPollResponses and httpserver.<port>.ProcessedPollResponses statistics 2014-03-18 23:47:33 +00:00
Justin Clark-Casey (justincc)
9e0d419239 minor: Correction to description of QueuedPollResponses since this covers long poll and other 'poll' types 2014-03-18 23:24:22 +00:00
Justin Clark-Casey (justincc)
eed343ed8a Add httpserver.<port-number>,QueuedPollResponses stat
This shows the number pf poll responses queued for processing.
2014-03-18 23:21:07 +00:00
Justin Clark-Casey (justincc)
7df325c275 Extend locking in BlockingQueue to cover operations that are not guaranteed to be thread-safe 2014-03-18 23:05:49 +00:00
Justin Clark-Casey (justincc)
fdcd392582 Set executable bit on Npgsql.dll for cygwin 2014-03-18 21:04:37 +00:00
Justin Clark-Casey (justincc)
f27766d47b Set executable flag on BulletXNA.dll for cygwin 2014-03-18 21:02:51 +00:00
Justin Clark-Casey (justincc)
a660c0a750 Add scene.<scene-name>.ProcessedFetchInventoryRequests
This shows the number of requests that have been processed.
These have not necessarily been sent back to the request since this is done separately by the PollServiceRequestManager
2014-03-18 20:59:11 +00:00
Justin Clark-Casey (justincc)
8ce3fa646b Allow "show stats" console command to take a full stat name and display only that stat.
For example, scene.test.RootAgents will show only the RootAgents stat in the scene named "test"
2014-03-18 20:21:47 +00:00
Justin Clark-Casey (justincc)
e82d394ddf Add scene.<scene-name>.QueuedFetchInventoryRequests stat
This is to aid in detecting whether there are fetch inventory requests remaining to be processed.
2014-03-18 20:10:41 +00:00
Justin Clark-Casey (justincc)
d5f5649750 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-03-18 20:09:15 +00:00
Justin Clark-Casey (justincc)
c605c7a7b7 Lock m_syncRoot on DoubleQueue.Count. This is not documented as a thread-safe operation 2014-03-18 19:54:07 +00:00
Melanie Thielker
a53272c5fb Add delete maptile ability to MapImageService - yet untested 2014-03-18 00:50:00 +00:00
Justin Clark-Casey (justincc)
ae56b946cf Fix a bug in previous commit 01520bb where I accidentally saved OtherCleanTime instead of Dwell 2014-03-18 00:34:40 +00:00
Justin Clark-Casey (justincc)
01520bbb3e Save and load dwell parcel stat in MySQL DB adaptor. Field in table already exists!
The SQLite database adaptor was loading and saving dwell whilst MySQL was not, even though the field already exists in the db table.
2014-03-18 00:02:55 +00:00
Justin Clark-Casey (justincc)
f3e177814a Add regression test for http inventory fetch.
Involved some restructuring to allow regression tests to dequeue inventory requests and perform poll responses synchronously rather than async
2014-03-17 20:51:35 +00:00
Justin Clark-Casey (justincc)
873eee5431 Implement osForceBreakAllLinks().
Identical to llBreakAllLinks() except that it doesn't require the script to have link permissions.
2014-03-13 00:04:20 +00:00
Justin Clark-Casey (justincc)
6a279feb2f Only allow llBreakAllLinks() to work if script has received PERMISSION_CHANGE_LINKS
As per http://wiki.secondlife.com/wiki/LlBreakAllLinks
Same as existing llCreateLink() and llBreakLink()
2014-03-12 23:54:20 +00:00
Justin Clark-Casey (justincc)
296d63e20b Implement osForceCreateLink() and osForceBreakLink()
These are identical to llCreateLink() and llBreakLink() except that they don't require script permissions.
However, osForceCreateLink() still requires that linked and linkee still have the same owner.
There's also an AutomaticLinkPermission setting in [XEngine] that could be set to true to prevent the LSL function checks.
But this doesn't allow the finer control over which users/scripts, etc. can do this that the OSSL functions provide.
2014-03-12 23:05:16 +00:00
Justin Clark-Casey (justincc)
beba20846f When sending group notices through group messaging, allow the agent ID to use for fetching group data to be different from im.fromAgentID
This is because xmlrpcgroups currently always checks visibility for the requesting agent ID (unlike Groups v2, which can accept UUID.Zero)
But group notice IMs have a from agent which is the group rather than the sending agent.
Further addresses http://opensimulator.org/mantis/view.php?id=7037
2014-03-12 19:31:04 +00:00
Dev Random
7112ee0015 Enable MapImageServiceModule with no refresh 2014-03-11 23:52:11 +00:00
Justin Clark-Casey (justincc)
86630a1b70 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-03-11 23:39:07 +00:00
Justin Clark-Casey (justincc)
d975b42f6a Instead of auto-creating a parcel on request if one doesn't cover a given location, fill in gaps or extend existing parcel right after initial data load.
This is in line with simpler and still existing behaviour where a default parcel is created if no parcels are in storage at all.
Making this change as another step to address current problems with spurious parcels occasionally being created.
Also adds regression tests for different load behaviours depending on existing stored parcel data.
Relates to http://opensimulator.org/mantis/view.php?id=7035
2014-03-11 23:38:22 +00:00
Robert Adams
8edf4225f3 varregion: remove serialization of region terrain to floats when sending patches.
This should eliminate much memory thrashing and CPU usage while sending initial
terrain.

The old way of passing terrain was to convert it to an array of floats. This is
really bad for large terrain (think 4096x4096 floats). This change passes a dummy
float array since the real region info is used anyway and the floats are ignored.
(The ignoring the terrain floats is a kludge so as to not change IClientAPI.)
2014-03-11 07:12:47 -07:00
Robert Adams
6b17c9bd98 Add Lani Global to CONTRIBUTORS.txt 2014-03-10 22:12:56 -07:00
Lani Global
71c808cd32 PhysicalPrimMax 64m for OpenSim_ini_example standard size prim
Signed-off-by: Robert Adams <misterblue@misterblue.com>
2014-03-10 22:11:24 -07:00
Lani Global
3e8f593bf2 PhysicalPrimMax to 64m for ini Default files to enable standard size prims and mesh to be used with vehicles.
Signed-off-by: Robert Adams <misterblue@misterblue.com>
2014-03-10 22:11:09 -07:00
Robert Adams
742f505440 Change terrain update sending to be triggered by frame tick rather
than everytime terrain is changed.

The TerrainModule now hooks the frame event and, if terrain has changed,
sends terrain updates to the clients. This polling pattern replaces
the previous push on change pattern and will make it easier to do per
client throttling and per scene presence terrain update ordering.
2014-03-10 22:05:18 -07:00
Oren Hurvitz
0237d9113d Don't start KeyframeMotion timers until all the regions are ready. This prevents problems in megaregions (prims that think they've crossed over to other regions). 2014-03-11 00:55:58 +00:00
Oren Hurvitz
120f872d2b After an object with KeyframeMotion is copied into inventory, resume the motion (previously it remained stopped) 2014-03-11 00:43:22 +00:00
Justin Clark-Casey (justincc)
932c9e757b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-03-11 00:16:31 +00:00
Justin Clark-Casey (justincc)
77e7bbcbf7 Send group notices through the same messaging module mechanism used to send group chat to avoid timeout issues when sending messages to large groups.
Only implementing for XmlRpcGroups initially to test.
May require MessageOnlineUsersOnly = true in [Groups] to be effective.
In relation to http://opensimulator.org/mantis/view.php?id=7037
2014-03-11 00:11:18 +00:00
Michael Cerquoni
4f67286044 fix missing quote for xBakes connector in Robust example ini files 2014-03-09 19:09:10 -04:00
Michael Cerquoni
cfd3e8f0ea minor spelling mistake fix. 2014-03-09 11:46:25 -04:00
Michael Cerquoni
abcb2cdb36 add XBakes connector to Robust.HG.ini.example 2014-03-08 21:50:41 -05:00
Michael Cerquoni
a96601478c add [BakedTextureService] section to Robust.HG.ini.example file same as Robust.ini.example. 2014-03-08 21:48:33 -05:00
Michael Cerquoni
e3c4936dea remove RefreshTime = 0 from [MapImageService] in Standalone.ini, StandaloneHypergrid.ini, Grid.ini, GridHypergrid.ini they were redundant and would not allow variables in OpenSim.ini to be set to anything. 2014-03-08 16:28:45 -05:00
Michael Cerquoni
da990d01f2 set RefreshTime = 0 in [MapImageService] in Standalone.ini and StandaloneHypergrid.ini to eliminate memory leaking for Warp3D map tiler, these variables should be erased needs more discussion! 2014-03-08 15:57:19 -05:00
Michael Cerquoni
12f2648a57 set RefreshTime = 0 in [MapImageService] in Grid.ini and GridHypergrid.ini to eliminate memory leaking for Warp3D map tiler, these variables should be erased needs more discussion! 2014-03-08 15:41:26 -05:00
Dev Random
9de3fe9410 Add Varregion support to osGetRegionSize OSSL function
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2014-03-07 17:48:07 -05:00
Justin Clark-Casey (justincc)
8225e3f40c Remove try/catch in LandManagmentModule.GetLandObject() - this is very old code and the caught exceptions can no longer occur. 2014-03-07 01:41:31 +00:00
Justin Clark-Casey (justincc)
3c05d67094 Lock m_landlist whilst loading parcels from storage to prevent a race against any parcel auto-creation in GetLandObject() 2014-03-07 01:36:06 +00:00
Justin Clark-Casey (justincc)
6b7625a56b Only auto-create a land parcel when there is none in a specified tile if there is more than 1 existing land parcel.
This is because there are still issues with bad parcels being generated in http://opensimulator.org/mantis/view.php?id=7035
Theorizing now that it's possible that something is calling GetParcel() before any parcel data has been loaded from persistence.
2014-03-07 01:23:19 +00:00
Justin Clark-Casey (justincc)
71918eeab4 Add regression test for sending group notices via xmlrpc groups connector. 2014-03-07 01:04:54 +00:00
Justin Clark-Casey (justincc)
ddd38a3dea Add scene name to bad parcel add logging 2014-03-06 19:12:16 +00:00
Justin Clark-Casey (justincc)
58c0ed78d4 refactor: Simplify land object by using c# get/set auto-properties where applicable. 2014-03-06 02:12:58 +00:00
Justin Clark-Casey (justincc)
470d053443 minor: slightly simplify code in LandObject.ContainsPoint() 2014-03-06 00:51:39 +00:00
Justin Clark-Casey (justincc)
ed14e97bb4 Remove array initialize calls in LMM - these are unnecessary as the VM already does this. 2014-03-06 00:46:16 +00:00
Justin Clark-Casey (justincc)
aa2fb1ec25 minor: Increase size of parcel name field in "land show" console command output. Construct table using CDT rather than string formats 2014-03-06 00:40:24 +00:00
Justin Clark-Casey (justincc)
14569992e1 Prevent adding a land object if it overlaps any existing objects that have not had their bitmaps adjusted.
This is to prevent an immediate problem in http://opensimulator.org/mantis/view.php?id=7035 where a development code bug occasionally overlays all the existing parcels with a blank parcel owned by the estate manager and to gather more data.
My guess is that this parcel is being created by the new code in LandManagementModule.GetLandObject(), probably some race between threads since this only happens occasionally.
Adds regression tests for this case and for parcel subdivide.
2014-03-06 00:11:13 +00:00
Justin Clark-Casey (justincc)
4e6f7435d0 Add UUID and ready status (whether region has finished starting up) to "show regions" console output. 2014-03-05 01:23:48 +00:00
Justin Clark-Casey (justincc)
39ed382ddf Don't request a terse update after local teleport - this will be done by the main frame loop anyway and has the potential to race that thread. 2014-03-05 00:59:27 +00:00
Justin Clark-Casey (justincc)
c9415fd763 If an avatar is sitting, send out position updates to clients for any change, not just those outside the usual tolerances.
This is to allow small adjustments of less than 0.05m in functions such as llSetPrimitiveLinkParams() to work
This is another fix for http://opensimulator.org/mantis/view.php?id=7044
Extends regression test for this case.
2014-03-05 00:38:38 +00:00
Justin Clark-Casey (justincc)
31de7b845f When positioning agent with PRIM_ROTATION in llSetLinkPrimitiveParams(), set the global rotation rather than the local rotation
Functionally the same as the patch in http://opensimulator.org/mantis/view.php?id=7044, thanks Aleric.
This commit also extends the regression test
2014-03-03 23:35:21 +00:00
Justin Clark-Casey (justincc)
5038a59ef3 Maybe slightly reduce warp3d memory leakage by disposing of decoded bitmap in Warp3DImageModule.GetTexture()
However, this still appears to be leaking massively, at least for me.  Possible cause is warp3D using GDI objects internally and not disposing of them.
2014-02-28 00:16:06 +00:00
Justin Clark-Casey (justincc)
88b1fc1382 Set up a StreamReader and call ReadToEnd() instead of using the GetStreamString() extension method
This eliminates some stream seeking that was never necessary and makes disposable of the StreamReader consistent with other code
2014-02-27 23:13:26 +00:00
Justin Clark-Casey (justincc)
94ad69faf2 Remove long unused UntrustedWebRequest class
This purports to check web requests but doesn't appear to actually do that.
2014-02-27 22:58:44 +00:00
Justin Clark-Casey (justincc)
5fafea6631 refactor: More consistently use using construct within WebUtil to match other existing code there. 2014-02-27 22:52:43 +00:00
Justin Clark-Casey (justincc)
1f4f09ad69 Add more details to InvalidOperationException logging in SychronousRestFormsRequest.MakeRequest(). 2014-02-27 20:35:56 +00:00
Justin Clark-Casey (justincc)
91333b9267 Stop LSL_Api.GetLinkEntities() from creating an unused list on every parameter except LINK_THIS. Simplify code. 2014-02-27 00:23:24 +00:00
Justin Clark-Casey (justincc)
ed760f2586 minor: remove unused variable from recent commit 0e23374 2014-02-27 00:14:16 +00:00
Justin Clark-Casey (justincc)
d7c9725ec0 refactor: Make osGetPrimtiveParams() and soSetPrimitiveParams() use common get/set params code in LSL_Api rather than an old copy&pasted section. 2014-02-27 00:11:50 +00:00
Dev Random
6955190c7d Add Util method to load OpSys env vars 2014-02-26 23:39:45 +00:00
Justin Clark-Casey (justincc)
ce5d308d23 Add some regression tests for previous commit 0e23374 2014-02-26 23:13:56 +00:00
Justin Clark-Casey (justincc)
0e23374aa2 Implement PRIM_ROTATION, PRIM_ROT_LOCAL, PRIM_POSITION and PRIM_POS_LOCAL when manipulating avatars via llSetLinkPrimitiveParams()
Combination of core parts of Freaky's patch at https://github.com/ft-/opensim-patches/blob/master/opensim-llsetlinkprimitive-agent-fix.patch plus further adjustments from myself.
Resolves Mantises 6121, 6421, 6573, 6657
2014-02-26 23:07:13 +00:00
Justin Clark-Casey (justincc)
26fe59c35e Improve regression test TestSetAppearance() 2014-02-24 19:43:06 +00:00
Justin Clark-Casey (justincc)
bc9952f901 Re-enable regression TestSaveBakedTextures() 2014-02-24 19:30:33 +00:00
Justin Clark-Casey (justincc)
fd1b2a1c57 Stop mesh avatars that specify the alpha texture in their bake slots from causing the simulator to continually request that they rebake
This is because the alpha texture is not in the cache, we must continue to have the fallback of looking for these and other persisted bakes in the asset service.
Relates to http://opensimulator.org/mantis/view.php?id=6927
2014-02-24 19:20:50 +00:00
Robert Adams
0f03c64a0c Make Scene.DefaultDrawDistance to be the max of the region size and the
user setting. Seems this parameter has many side effects.
2014-02-23 21:56:37 -08:00
dahlia
d6837f5dc7 update libomv to 59280cfe3e96714151158f4ec7b167af57f60e93 (current head) to hopefully resolve zlib incompatibilities when rendering maptiles with mesh 2014-02-22 18:52:59 -08:00
Robert Adams
0b213af675 Fix problem of hurricane speed winds. Thanks Vegaslon. 2014-02-22 15:04:28 -08:00
Diva Canto
cddf1ec0dc Added 2 new behaviors to pCampBot 2014-02-21 10:06:08 -08:00
Diva Canto
97c74afca8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-02-21 10:05:06 -08:00
Diva Canto
d27e188fe2 Added 2 new behavirors to pCampBot. These are part of a systematic study I'm doing for understanding the load that AgentUpdate packets incur on the server. 2014-02-21 10:04:12 -08:00
Justin Clark-Casey (justincc)
11b4f534c2 If texture decode fails in Warp3D map maker, log uuid of asset that failed to decode along with exception 2014-02-20 23:36:50 +00:00
Justin Clark-Casey (justincc)
d50d169441 If GetFolderContent called by WebFetchInvDescHandler.Fetch() fails for some reason and returns null, log and return empty contents rather than throwing an exception that ends up terminating the simulator. 2014-02-20 22:35:41 +00:00
Justin Clark-Casey (justincc)
28419251bf minor: Add some method doc to AFM,SetAppearanceAssets() 2014-02-20 19:30:47 +00:00
Justin Clark-Casey (justincc)
d1bb73d068 In core.groups GroupsServiceRemoveConnector, if GetGroupRecord() or UpdateGroup() do not have a RESULT parameter in the result message, return null rather than fail with NullReferenceException
This check was already done by other methods.
Looks to resolve http://opensimulator.org/mantis/view.php?id=7012
2014-02-20 19:17:21 +00:00
Justin Clark-Casey (justincc)
4d1426e77d For now, do not replacing missing wearables with default wearables if itme details cannot be found.
This is causing many issues on OSGrid, possibly due to teleporting timing differences with simulators hosted in different places or HG teleports
Added a bit more logging for debug purposes.
See http://opensimulator.org/mantis/view.php?id=6939
2014-02-20 18:40:21 +00:00
dahlia
a2866b85f3 add newRegion parameter to CrossAgentToNewRegion event and trigger the event after crossing thread is invoked 2014-02-20 00:18:28 -08:00
dahlia
269a6410a0 add EventManager event OnCrossAgentToNewRegion 2014-02-19 17:52:38 -08:00
Robert Adams
c26f01ff8c varregion: make scene default draw distance to be the maximum size of the
region. This is a temp fix for the use of draw distance to compute child
regions. Eventually must use the draw distance from the viewer for the
computation.
2014-02-19 09:51:49 -08:00
Robert Adams
fc9930e420 Repair check for if in region position (I mean || is kinda like &&). 2014-02-15 18:49:40 -08:00
Robert Adams
79200ed270 Fix displacement and location operations on legacy trees and grass in
the 'load oar' and 'scene' commands. Before they  were ignored but the
code now relies on the SOG.IsAttachment function for attachmentness.
2014-02-15 17:10:20 -08:00
Robert Adams
7fc289c039 Properly restore position on crossing failure for mega-regions.
Fix odd "cannot cross into banned parcel" viewer error message when crossing
into non-existant region. Proper permission failure messages are now returned.
2014-02-15 17:02:53 -08:00
Robert Adams
877bdcdce1 Rewrite of mega-region code to use new form of border checking.
This commit eliminates all of the 'border' class and list code and replaces
it with testing if in the current region.
Impacts: can make a mega-region out of varregions of the same size; and
mega-region combinations must be rectangular (not square but rectangular)
2014-02-15 16:01:43 -08:00
Robert Adams
bdbbeaa494 Non-functional changes of numbers into symbolic references and a few
comments on what variables really mean.
2014-02-15 16:01:01 -08:00
Justin Clark-Casey (justincc)
f6913e911e Merge branch 'justincc-master' 2014-02-15 01:18:10 +00:00
Justin Clark-Casey (justincc)
f74aafaf63 In GridUserService, if a UUID is given consistently use the longest matched entry (as already done by GetGridUserInfo()) in order to avoid problems with multiple entries.
This is to avoid issues where LoggedIn, SetHome, etc were always using the exact UUID match but GetGridUserInfo() would use the longest.
Looks to address http://opensimulator.org/mantis/view.php?id=6986
2014-02-15 01:13:58 +00:00
Justin Clark-Casey (justincc)
4fed301e65 Don't request group information in SP.MakeRootAgent() if the presence belongs to no group (UUID.Zero)
This was trigger the XmlRpcGroups errors described in http://opensimulator.org/mantis/view.php?id=6986
Introduced in commit 5b73b9c4 (Wed Dec 11 01:39:56 2013)
2014-02-14 23:43:07 +00:00
Justin Clark-Casey (justincc)
733e067958 Log information about which function, request data and agent ID triggered an XmlRpcGroupsServiceConnector error 2014-02-14 21:28:45 +00:00
Justin Clark-Casey (justincc)
ffd0da23fb Merge branch 'justincc-master' 2014-02-14 00:16:17 +00:00
Justin Clark-Casey (justincc)
f49d513089 Change warns associated with UserAgentServiceConnector to debugs, as this is not necessarily a problen with the source simulator (e.g. someone else's remote simulator cannot be contacted).
This is Oren Hurvitz's second patch from http://opensimulator.org/mantis/view.php?id=6956 with a small amount of correction
2014-02-14 00:08:13 +00:00
Justin Clark-Casey (justincc)
fc35b45e21 If calls to UserAgentServiceConnector fail then throw an exception. This lets the caller decide whether to discard the error or not.
This is Oren Hurvitz's 0001 patch from http://opensimulator.org/mantis/view.php?id=6956 but I ended up doing some tweaking to resolve patch application issues.
2014-02-14 00:01:12 +00:00
Justin Clark-Casey (justincc)
bc7fda39b4 Merge branch 'justincc-master' 2014-02-12 23:23:56 +00:00
Justin Clark-Casey (justincc)
e10012a7a6 If a caller tries to queue a CAPs message to a scene presence that has no event queue (e.g. an NPC), only warn if event queue debugging is greater than zero.
Removes the spurious log warnings if groups are active when NPCs are used.
Adds more regression tests associated with adding messages to the event queue
2014-02-12 23:18:10 +00:00
Robert Adams
3a7c8d1f32 BulletSim: the minimum vehicle velocity was set too low so moving slow
was getting zeroed too easily. Added VehicleMinVelocity parameter.
2014-02-11 21:07:55 -08:00
Robert Adams
c0cc5e0fa4 varregion: Send large region patches for wind and clouds. 2014-02-11 21:07:55 -08:00
Mic Bowman
b83a224147 Add JsonRezAtRoot script function. Operation is very similar to
llRezAtRoot except that the start parameter is a Json string that will
be unpacked into a json store identified by the objects uuid.  This
makes a much more expressive (and simpler) way of passing initial
parameters to a rezzed object.
2014-02-09 18:07:49 -08:00
Robert Adams
4a1c1fc009 Add zadark to CONTRIBUTORS.txt 2014-02-06 11:47:19 -08:00
Roger Kirkman
cf61cdf58c Fix - Viewer crash during HG Teleport
Signed-off-by: Robert Adams <misterblue@misterblue.com>
2014-02-06 11:33:17 -08:00
Mic Bowman
1913ab5ad5 Update the SimianMaptile uploader to accommodate varregions. 2014-02-05 21:26:39 -08:00
Melanie
29c8461631 Remove the added whitespace, test concluded 2014-02-04 05:54:28 +00:00
Melanie
8f372b8ac8 Bot test 2014-02-04 05:52:22 +00:00
Robert Adams
342be228c6 Remove compile error from returning value in void function 2014-02-03 21:53:14 -08:00
Michael Cerquoni
87abf06956 test again undoing previous changes 2014-02-04 00:32:40 -05:00
Michael Cerquoni
f81841a2c5 this is just a test 2014-02-04 00:30:35 -05:00
Robert Adams
1b41ec0a85 Fix raw32 terrain heightmap reader so it estimates terrain size from
the size of the input stream. This is required since the raw heightmap
format (.r32) does not contain any size information.
The estimation relies on terrain being square.
2014-02-03 21:23:32 -08:00
Melanie
31cba5aa66 Add one check for a blank URL because the module wasn't quite sure not to work when unconfigured :| 2014-02-04 04:20:37 +00:00
Melanie
1aed6567a8 Samle configurations for the baked texture server. 2014-02-04 02:49:13 +00:00
Melanie
f0f852b27f Final code drop for appearance. Adding Avination's baked texture storage server. 2014-02-04 02:29:02 +00:00
Melanie
1197658233 Adding the Avination XBakesModule, the client for the persistent bakes system 2014-02-04 02:09:39 +00:00
Melanie
e1d1c27965 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2014-02-04 01:55:41 +00:00
Melanie
49c2213a01 Dropping the rest of Avination's modified appearance code for core.
Module to follow.
2014-02-04 01:54:16 +00:00
Robert Adams
41b6602a77 Add "--no-objects" parameter to 'load oar'. 2014-02-02 22:16:01 -08:00
Robert Adams
8c6a0cb44a Really add the old parameter names to load oar to keep downward compatibiliy 2014-02-02 17:18:08 -08:00
Robert Adams
2a4dd34616 Change new 'load oar' parameters to be hyphenated to be consistant with
existing parameters. ('--forceterrain' becomes '--force-terrain').
The old forms have been kept for downward compatiblity.
2014-02-02 12:21:18 -08:00
Robert Adams
9c97fb8e12 Implement terrain merging in TerrainChannel.
Modify archiver to use terrain merging when loading oars.
This makes displacement AND rotation properly work on terrain when loading oars.
Especially useful when loading legacy region oars into large varregions.
2014-02-02 11:17:49 -08:00
dahlia
a8e64cd59a Overload INPCModule.CreateNPC() to allow agentID to be specified. Note: this is intended for use in region modules and is not exposed to scripts. 2014-02-01 04:09:20 -08:00
Oren Hurvitz
abb193ec94 In UuidGatherer, gather materials referenced in the prim's TextureEntry
Signed-off-by: dahlia <dahlia@nomail>
2014-02-01 02:56:15 -08:00
Justin Clark-Casey (justincc)
b2878eb773 Merge branch 'justincc-master' 2014-01-31 00:51:22 +00:00
Oren Hurvitz
b8e22f02e7 Make sure Web streams are disposed after use 2014-01-31 00:44:22 +00:00
David Rowe
1380b37d71 Made error messages more consistent 2014-01-31 00:24:52 +00:00
David Rowe
3d62f4369d Replaced throwing exceptions with calls to Error() 2014-01-31 00:24:47 +00:00
David Rowe
d405254971 Replaced llSay()ing LSL errors with calls Error() 2014-01-31 00:24:43 +00:00
David Rowe
9db4090c07 Replaced LSLError() calls with calls to Error() 2014-01-31 00:24:40 +00:00
David Rowe
c9550e473d Updated "deprecated" LSL errors to use Deprecrated() 2014-01-31 00:24:36 +00:00
David Rowe
257f9cec40 Updated "not implemented" LSL errors to use NotImplemented() 2014-01-31 00:24:31 +00:00
David Rowe
13bb9ea682 Updated ShoutError() calls to use new LSL error methods 2014-01-31 00:21:22 +00:00
David Rowe
67ec95bde8 Updated methods for handling LSL script errors, deprecated, and not implemented 2014-01-31 00:20:10 +00:00
Justin Clark-Casey (justincc)
c467dfcd81 Merge branch 'justincc-master' 2014-01-30 00:42:20 +00:00
Justin Clark-Casey (justincc)
b73baeb4a4 Record whether login to home fails because no home set (UUID.Zero) or region not found. 2014-01-30 00:40:56 +00:00
Justin Clark-Casey (justincc)
b50e5704b8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-01-30 00:06:09 +00:00
Justin Clark-Casey (justincc)
7807b19a89 Merge branch 'justincc-master' 2014-01-30 00:05:12 +00:00
Justin Clark-Casey (justincc)
bdab05df0e Add "show grid user" robust/standalone console command for debug purposes.
Shows all data on entries which match or start with a given ID.
This would usually be a UUID.
2014-01-30 00:03:22 +00:00
Robert Adams
0842e2e15b BulletSim: default physical terrain implementation to heightmap.
It originally looked like mesh terrain would perform better for vehicles
but, after much use, heightmap is the clear winner.
Force terrain implementation to heightmap if the physics region is
larger than legacy region size. This solves running out of memory for
very large regions.
2014-01-29 06:44:14 -08:00
Mic Bowman
fbf33ef1de Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-01-28 22:42:35 -08:00
Mic Bowman
3f5c6c897f One more run at fixing the sun module. Parameter setting fixed to
work through the OSSL interface. And setting the parameters now
adjusts all the dependent variables correctly so the sun moves
at the modified rate.
2014-01-28 22:40:39 -08:00
Robert Adams
1900254e77 Restore brush tests with correct values and adjustments for new terrain height
rounding characteristics.
2014-01-28 21:43:18 -08:00
Robert Adams
678c107915 Temporarily disable brush test. It will come back when tuning is complete. 2014-01-28 16:58:27 -08:00
Robert Adams
dde0e547a7 Change area of brush test to account for rounding errors in terrain implementation 2014-01-28 16:48:34 -08:00
Robert Adams
226b5e4d75 Increase the strength of brushes in brush test in an attempt to overcome rounding
introduced with new terrain height class.
2014-01-28 16:36:56 -08:00
Mic Bowman
cfe1bced7d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-01-28 16:34:49 -08:00
Mic Bowman
2877c7d94d Actually make the parameter updates change the behavior of
sun movement.
2014-01-28 16:34:22 -08:00
Robert Adams
0c3493f619 clear land tainting when tested. Then testing, pass scene to LandObject as now needed to get region size 2014-01-28 16:25:01 -08:00
Robert Adams
d25265ae82 Fix terrain tests by properly initializing low detail terrain to zero height.
Also remove PI heightmap test as new heightmaps only have two significant digits.
2014-01-28 15:58:45 -08:00
Mic Bowman
1d533b0f01 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-01-28 15:47:24 -08:00
Mic Bowman
bfb0011cd3 Some major surgery on the sun module. Updates to the client were gated
by a "mode" check. That mode check has been removed (it didn't result
in any change of behavior anyway). Also added a command line variable
update to set the sun position time offset (offset from the system
clock). Default is no offset to preserve existing behavior.
2014-01-28 15:43:47 -08:00
Robert Adams
e5d59dc696 Repair database routines so they properly return null when asked for
the heighmap of a region that does not exist.
2014-01-28 15:29:06 -08:00
Robert Adams
8eec717f5f Merge branch 'master' into varregion 2014-01-28 08:50:28 -08:00
Robert Adams
4faf11e001 varregion: fix for teleporting by double clicking on a map location.
Thanks Garmin.
2014-01-28 08:49:22 -08:00
Justin Clark-Casey (justincc)
cd35d298fa Merge branch 'justincc-master' 2014-01-28 00:23:10 +00:00
Oren Hurvitz
2cf224166f Added osGetRegionSize(), which returns the region size in meters and recognizes megaregions 2014-01-28 00:11:50 +00:00
Justin Clark-Casey (justincc)
f7172095e0 Convert tabs to spaces from previous commit 8c2b41b01 2014-01-28 00:04:55 +00:00
Dev Random
8c2b41b01d Make inidirectory files supercede distro files 2014-01-27 23:56:10 +00:00
Justin Clark-Casey (justincc)
a4017ee1eb Reinsert attachments list taking code in SP.MakeRootAgent()
Locking attachments then launching script instances on a separate thread will not work, attachments will simply be unlocked and vulnerable to race conditions.
2014-01-27 23:47:43 +00:00
Justin Clark-Casey (justincc)
1b86239f79 refactor: Remove identical part.ParentGroup.AddAvatar(UUID); calls which occur no matter which branch of the conditional is executed 2014-01-27 23:17:09 +00:00
Justin Clark-Casey (justincc)
e2fbc88d98 Re-enabled NPCModuleTests.TestCreate() 2014-01-27 22:56:51 +00:00
Robert Adams
49af6b53e7 varregion: enable teleporting to a varregion by clicking on the map and
pressing the 'teleport' button.
This commit adds returning region map info for all the subregions of a
varregion. This also handles the selection of the extra region and then
the displacement of the postion so the teleport is to the correct location.
2014-01-26 19:32:28 -08:00
Robert Adams
13a9d5409c Merge branch 'master' into varregion
Conflicts:
	OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs
	OpenSim/Region/CoreModules/World/LegacyMap/ShadedMapTileRenderer.cs
	OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs
2014-01-26 07:56:47 -08:00
Robert Adams
6831e58616 varregion: modify MapImageModule structure so it will better merge
with changes made in master.
2014-01-26 07:38:28 -08:00
Justin Clark-Casey (justincc)
0eda7dd1c7 Merge branch 'justincc-master' 2014-01-24 19:41:41 +00:00
Justin Clark-Casey (justincc)
fea8345f56 minor: remove long unused state queue from "show queues" console reports 2014-01-24 19:40:14 +00:00
Justin Clark-Casey (justincc)
c9b5ba78d9 minor: correct the usage statement on the "show image queues" console command - should not have been "image queues show" 2014-01-24 19:36:12 +00:00
Justin Clark-Casey (justincc)
4a9796a506 Skip IClientAPIs that don't implement IStatsCollector (such as NPCAvatar) from the "show queues" console report to stop screwing up formatting.
"show pquques" already did this
2014-01-24 19:31:31 +00:00
Robert Adams
afb2e07111 varregion: pass region size in more HG services. 2014-01-24 06:30:38 -08:00
Mic Bowman
674a3a5639 Enable the simulator to handle region size information returned from
a hypergrid gatekeeper. Fields are "size_x" and "size_y". Server side
will be updated separately.
2014-01-23 16:20:18 -08:00
Justin Clark-Casey (justincc)
966ab21839 Merge branch 'justincc-master' 2014-01-24 00:17:39 +00:00
Justin Clark-Casey (justincc)
a2d5d810e0 Properly dispose of drawing objects to reduce/stop memory leakage on generating map tiles with the MapImageModule and TexturedMapTileRenderer (the current defaults) 2014-01-24 00:14:58 +00:00
Justin Clark-Casey (justincc)
a859464e91 Add "generate map" console command to allow manual regeneration and storage of maptiles
Primarily for test purposes though could be useful if one prefers to manually update the map tile
2014-01-23 23:44:21 +00:00
Robert Adams
4c362a83f9 Merge branch 'master' into varregion 2014-01-21 11:31:51 -08:00
Mic Bowman
83626e60e6 Adds a configuration option to cannibalize bandwidth from the
udp texture throttle and move it to the task throttle. Since most
viewers are using http textures, the udp texture throttle is holding
onto bw that could be used for more responsive prims updates. See
the documentation for CannibalizeTextureRate in OpenSimDefaults.ini.
Option is disabled by default.
2014-01-20 18:59:43 -08:00
dahlia
7bd42fc42f Add back code to UuidGatherer to retrieve UUIDs for materials stored in DynAttrs. This is unfortunately still necessary until a better solution for handling existing legacy materials can be implemented 2014-01-20 15:01:18 -08:00
dahlia
af58631f00 rather than converting existing materials to assets, just retrieve them and make them available for viewing. Any new materials added to the scene will become assets. 2014-01-20 13:57:14 -08:00
dahlia
719810e9d8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-01-20 11:54:36 -08:00
dahlia
1cae3664a5 add null texture entry face check before converting legacy materials 2014-01-20 11:53:33 -08:00
Justin Clark-Casey (justincc)
5fc871027e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2014-01-20 19:38:47 +00:00
Justin Clark-Casey (justincc)
2cf7478b9a Merge branch 'justincc-master' 2014-01-20 19:34:55 +00:00
Mic Bowman
2e78e89c36 Clean up orphaned json stores. This can happen when an object is
removed, when a script is removed, or when a script is reset. Also
added a stats command to track the number of json stores used by
a region. Will probably add some more commands later.
2014-01-20 11:33:49 -08:00
Justin Clark-Casey (justincc)
8e72b53edc Stop exceptions being generated on agent connection if a telehub object has been deleted or has no spawn points. 2014-01-20 19:16:19 +00:00
dahlia
4800303abd update OpenMetaverse.StructuredData to git master (bf4e9f654ff99c85e20b53e56faac38e307dd8c2) which fixes JSON OSD serialization to a standards compliant means of encoding floating point NaN and Infinity 2014-01-20 03:18:36 -08:00
dahlia
36d8a24a86 force SOG update when converting legacy materials to ensure changes are persisted 2014-01-20 03:11:01 -08:00
dahlia
95c926b2cd delay texture entry parsing until absolutely necessary while converting legacy materials 2014-01-20 03:02:30 -08:00
dahlia
28723beb0c Add code to convert legacy materials stored in DynAttrs to new asset format and store them as assets 2014-01-20 02:57:08 -08:00
Oren Hurvitz
d1f16c4b4b Check agent permissions before modifying an object's materials. Also, when creating a Material asset, set the current agent as the Creator. 2014-01-20 00:38:44 -08:00
Oren Hurvitz
68d83425c6 When asked to change the Material for one face, change only that face; not the default material 2014-01-20 00:38:43 -08:00
Oren Hurvitz
3018b2c5d7 Materials module: a) Store materials as assets; b) Finalized it (removed the "Demo" label; removed most of the logging); c) Enabled by default
Changed UuidGatherer to use 'sbyte' to identify assets instead of 'AssetType'. This lets UuidGatherer handle Materials, which are defined in a different enum from 'AssetType'.
2014-01-20 00:38:42 -08:00
Oren Hurvitz
ca0336d834 Renamed MaterialsDemoModule to MaterialsModule 2014-01-20 00:38:41 -08:00
Oren Hurvitz
e8273fa8ad - Materials: support the viewer removing the material (in which case matsMap["Material"] is missing) - Reduced logging 2014-01-20 00:37:26 -08:00
Robert Adams
90fa3202c6 varregion: remove debugging splat file saving that fills up the
maptile dir and causes errors.
2014-01-19 13:37:51 -08:00
Robert Adams
5e6a47f13f varregion: remove --noterrain and --noparcel parameters in 'load oar'.
Add --forceterrain and --forceparcel to 'load oar'. In order to not change
the operation of --merge (which does an object merge and suppresses terrain
and parcel information loading), added the --force* parameters to be used
when loading multiple oars to build up a varregion.

Added --rotation and --rotationcenter parameters to 'load oar' which apply a rotation to
the loaded oar objects before displacing. The rotation is in degrees (pos or neg)
and the center defaults to "<128, 128, 0>".
2014-01-19 12:45:16 -08:00
Robert Adams
6fbfb47b92 varregion: add --noterrain and --noparcel to 'load oar'.
--noterrain suppresses the loading of the terrain from the oar.
--noparcels suppresses the loading of parcel information from the oar.
2014-01-19 11:03:08 -08:00
Robert Adams
dd6db72939 varregion: add --displacement parameter to 'load oar'.
Adds displacment to all objects and terrain loaded from the oar.
As an example, if you have a 512x512 region and an old 256x256 oar, doing
  load oar --displacement "<128,128,0>" oarFile.oar
will load the object (and terrain) into the middle of the 512x512 region.
If displacement is not specified, 'load oar' works like it always has.
If you have a 5
2014-01-19 10:09:43 -08:00
Robert Adams
f127e4b4ee Merge branch 'master' into varregion 2014-01-19 07:38:53 -08:00
Robert Adams
4fb3d314b8 Fix casting error for float type INI file parameter parsing. 2014-01-19 07:37:14 -08:00
Robert Adams
54a4b9eab4 varregion: Update Warp3D to properly handle varregions.
This includes additions to Warp3D:
   Optional rendering of mesh and scupltie prims (INI parameter. Off by default)
   Texturing of large prims (INI parameter. On by default)
   Better garbage collection
2014-01-19 07:33:56 -08:00
Robert Adams
813f0da00b Add J2K decoder routine that converts directly to an image. 2014-01-19 07:32:41 -08:00
Robert Adams
08fa0a6a8a Fix casting error for float type INI file parameter parsing. 2014-01-19 07:26:55 -08:00
Robert Adams
60de0bc3c2 varregion: split up generated maptile images for storage in map. This
makes maps for varregions show up properly.
2014-01-19 05:09:03 -08:00
Justin Clark-Casey (justincc)
d466446df3 Merge branch 'justincc-master' 2014-01-18 01:39:45 +00:00
Justin Clark-Casey (justincc)
e9454d4672 Following on from 50ea2e0, only fetch scene presence for check if lightscript function has failed initial IsEstateManagerOrOwner() check 2014-01-18 01:36:40 +00:00
Oren Hurvitz
50ea2e0d67 Fixed: Windlight functions caused an error if called when the script's owner isn't in the scene 2014-01-18 01:26:30 +00:00
Justin Clark-Casey (justincc)
0cbe5f8424 Remove redundant methods in FlotsamAssetCache 2014-01-18 00:55:49 +00:00
Justin Clark-Casey (justincc)
b9453a8f6f implement CoreAssetCache.Check() 2014-01-18 00:52:36 +00:00
Justin Clark-Casey (justincc)
427ffd3387 implement GlynnTuckerAssetCache.Check() 2014-01-18 00:48:20 +00:00
Justin Clark-Casey (justincc)
fc7ccfdafa Properly implement CenomeAssetCache.Check() 2014-01-18 00:30:23 +00:00
Justin Clark-Casey (justincc)
ee8ba1ab9a Simplify FlotsamAssetCache.CheckFromMemoryCache() 2014-01-18 00:21:53 +00:00
Justin Clark-Casey (justincc)
d381da81d6 minor: Add method doc to IImproveAssetCache 2014-01-18 00:15:38 +00:00
Justin Clark-Casey (justincc)
97fbb8ed45 Elminate some copy/paste in FlotsamAssetCache.CheckFromFileCache() and use using() construct to ensure filestream is always closed 2014-01-18 00:12:12 +00:00
Justin Clark-Casey (justincc)
12bfce7b9f elminate unnecessary asset != null check in FlotsamAssetCache.UpdateFileCache()
Passed in asset is always not null
2014-01-18 00:06:12 +00:00
Justin Clark-Casey (justincc)
b52b50ee56 minor: reinsert some method doc back into IEntityTransferModule 2014-01-17 23:36:23 +00:00
Justin Clark-Casey (justincc)
9fefbcf7fc minor: since structs are values, assigning them to another variable copies it. Instantiation is unnecessary. 2014-01-17 23:32:37 +00:00
Justin Clark-Casey (justincc)
14c72d4a5b Revert "Fixed: Windlight functions caused an error if called when the script's owner isn't in the scene"
This reverts commit 39e5785c0f.

Did not mean to apply this yet.
2014-01-17 01:58:10 +00:00
Justin Clark-Casey (justincc)
18e0d2f343 minor: Add Ai Austin to additional OpenSim contributors by request as he has added config corrections and does extensive liaison with other projects 2014-01-17 01:55:40 +00:00
Oren Hurvitz
39e5785c0f Fixed: Windlight functions caused an error if called when the script's owner isn't in the scene 2014-01-17 01:47:37 +00:00
Justin Clark-Casey (justincc)
4fa843ff19 Reorder checks in SP.CompleteMovement() to fix test failures 2014-01-16 23:44:17 +00:00
Justin Clark-Casey (justincc)
f467121c51 Merge branch 'justincc-master' 2014-01-16 23:33:30 +00:00
Justin Clark-Casey (justincc)
3bc669ffc7 Actually put IsChildAgent = true inside the lock, otherwise there is still a small window for race conditions on duplicate CompleteMovement calls 2014-01-16 23:31:50 +00:00
Justin Clark-Casey (justincc)
3ffd90496a Prevent duplicate invocations or race dontision in SP.CompleteMovement()
This can happen under poor network conditions if a viewer repeats the message send
If this happens, physics actors can get orphaned, which unecessarily raises physics frame times
2014-01-16 20:23:31 +00:00
Justin Clark-Casey (justincc)
1a8b56fa87 Merge branch 'justincc-master' 2014-01-16 00:33:04 +00:00
Oren Hurvitz
2d9d6fe922 Can delete the Offline Messages sent to/from a user.
This is useful if the user is deleted.
2014-01-16 00:24:51 +00:00
Oren Hurvitz
46c2791fe2 In the offline message table, store the sender.
This data is useful for preventing abuse (e.g., someone who sends too many messages), or for deleting message if their sender has been deleted.
2014-01-16 00:16:33 +00:00
Oren Hurvitz
21bc799a17 Fixed offline IM 2014-01-16 00:10:10 +00:00
Justin Clark-Casey (justincc)
e99a7d879e Remove old IInterRegionComms and references. This hasn't been used since 2009 and was superseded by ISimulationService 2014-01-16 00:05:04 +00:00
Justin Clark-Casey (justincc)
4675a2fb29 Merge branch 'justincc-master' 2014-01-14 01:19:54 +00:00
Justin Clark-Casey (justincc)
797684115c minor: Add David Rowe to ctrlaltdavid handle by request 2014-01-14 01:16:04 +00:00
Robert Adams
cc5cffc212 varregion: properly pack the region size parameters so he viewer will parse them.
This gets rid of the viewer crash when teleporting into varregions and allows
multiple, adjacent varregions (of the same size) with border crossings.
2014-01-11 22:00:52 -08:00
Robert Adams
1eea6fd452 varregion: Debug messages for region crossing debugging. 2014-01-11 22:00:24 -08:00
Robert Adams
3760d10cd0 varregion: remove unnecessary border checking code in ScenePresence. 2014-01-11 21:59:22 -08:00
Robert Adams
1cf17a3cf7 Merge branch 'master' into varregion
Conflicts:
	OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
	OpenSim/Region/Framework/Scenes/SceneBase.cs
	OpenSim/Services/Interfaces/IGridService.cs
	OpenSim/Services/LLLoginService/LLLoginResponse.cs
(conflicts were debug statements that are commented out in master branch)
2014-01-11 08:52:23 -08:00
Robert Adams
239b85d7ce Fix crash in BulletSim which sometimes happens making a linkset physical
(like sitting on and activating a vehicle) and crossing borders.
This keeps better bookkeeping on compound shapes so BulletSim can
identify them when being freed.
2014-01-10 22:52:31 -08:00
Justin Clark-Casey (justincc)
b5ef585069 Merge branch 'justincc-master' 2014-01-11 01:22:42 +00:00
Oren Hurvitz
bc0ff5e7d4 Allow Boolean nodes in XML to be specified as "0/1". AuroraSim does that. 2014-01-11 00:54:41 +00:00
Justin Clark-Casey (justincc)
66e2e1c9c3 Merge branch 'justincc-master' 2014-01-10 20:52:50 +00:00
Justin Clark-Casey (justincc)
70dd4cf152 In library inventory, correct asset id for llSay example script
From http://opensimulator.org/mantis/view.php?id=6917
Thanks to FreakyTech for this spot.
2014-01-10 20:51:28 +00:00
Justin Clark-Casey (justincc)
09e800f4b1 Merge branch 'justincc-master' 2014-01-10 20:46:00 +00:00
Justin Clark-Casey (justincc)
8c6b9ef865 minor: Add ctrlaltdavid to contributors list 2014-01-10 20:45:05 +00:00
David Rowe
08f2fc63cd Fixed llTextBox error message text 2014-01-10 20:43:24 +00:00
Justin Clark-Casey (justincc)
68cbccb288 Merge branch 'justincc-master' 2014-01-10 20:37:14 +00:00
Melanie
9050c152b4 Dynamically adjust to the number of visual params sent. 2014-01-10 20:31:52 +00:00
Oren Hurvitz
da47bcae3e When moving the root prim of an attachment: a) Change the attach position; b) Move the other prims in the reverse direction to compensate 2014-01-10 20:24:11 +00:00
Justin Clark-Casey (justincc)
5e72de1908 Merge branch 'justincc-master' 2014-01-10 20:19:38 +00:00
Oren Hurvitz
88f01a4130 When creating a coalesced object, set its permissions to the lowest-common-denominator of all the sub-objects 2014-01-10 20:01:08 +00:00
Oren Hurvitz
a94e1e0e08 When creating a coalesced object, set its Creator ID if all the objects have the same creator 2014-01-10 19:54:17 +00:00
Oren Hurvitz
91fd9c4670 Refactored: use a single function to apply an object's folded permissions to its main permissions 2014-01-10 19:50:03 +00:00
Oren Hurvitz
13f31fdf85 Refactored setting permissions when rezzing items: use the same function when rezzing from user inventory and prim inventory.
Also, fixed a bug: when rezzing a coalesced object from a prim's inventory, apply the coalesced object's name and description only to the first sub-object; not to all the objects in the coalescence. (This was already done correctly when rezzing from a user's inventory.)
2014-01-10 19:37:59 +00:00
Justin Clark-Casey (justincc)
32e9c16957 Merge branch 'justincc-master' 2014-01-08 01:04:26 +00:00
Justin Clark-Casey (justincc)
0155d42b80 If an agent is sitting, then do send the rotation in the agent update instead of zeroing it to resolve mouselook camera problems
Addresses http://opensimulator.org/mantis/view.php?id=6892
Thanks to tglion for this spot.
This resolves a recent regression from 17b32b764a
2014-01-08 00:54:39 +00:00
Robert Adams
38148bd4b6 Some missing definitions needed for successful compilation. 2014-01-04 19:01:05 -08:00
Robert Adams
8ff2ff1a36 Remove some chatty DebugFormat statements. No functional changes. 2014-01-04 19:01:04 -08:00
Robert Adams
7e32313a49 varregion: Add region size to teleport event messages (EnableSimulator,
CorssRegion, TeleportFinishEvent).
Have Simian grid service return the region size.
Many teleport related debug log messages. Can be removed when teleport
works (like that's ever going to happen).

Conflicts:

	OpenSim/Framework/RegionInfo.cs
2014-01-04 19:01:04 -08:00
Robert Adams
004ecee314 varregion: send region size in LLLoginResponse. 2014-01-04 19:01:03 -08:00
Robert Adams
d9848943a9 Add routines in Util.cs for conversion of region handles to region
locations and for the conversion of region world location to region
'region' location. These routines will replace all the arithmatic
scattered throughout OpenSimulator.
2014-01-04 19:01:03 -08:00
Melanie
dd96fef940 Dynamically adjust to the number of visual params sent. 2014-01-04 21:18:37 +00:00
Robert Adams
fd045d520e Merge branch 'master' into varregion
Conflicts:
	OpenSim/Framework/Constants.cs
	OpenSim/Framework/RegionInfo.cs
	OpenSim/Services/GridService/GridService.cs
	OpenSim/Services/Interfaces/IGridService.cs
Most conflicts had to do with Util routines not in master branch yet.
2014-01-04 08:57:51 -08:00
Robert Adams
9984ecf862 varregion: Add region size to teleport event messages (EnableSimulator,
CorssRegion, TeleportFinishEvent).
Have Simian grid service return the region size.
Many teleport related debug log messages. Can be removed when teleport
works (like that's ever going to happen).
2014-01-03 07:41:06 -08:00
Robert Adams
eab9390e05 Initialize default region size in GridRegion in the no parameter constructor
as is used by the grid connector tests.
2013-12-28 07:20:14 -08:00
Robert Adams
6869633d76 Add serialization/deserialization of region size to RegionInfo, GridRegion, and RegionData.
This does not modify interfaces or handling of variable sized regions. This only
enables the loading and storing of the region size and the reporting of the
region size in grid service responses.
The database tables already have the code to load and store the region size.
2013-12-28 06:58:15 -08:00
Robert Adams
01c0bbf181 varregion: extract banned region logic into a class for cleanlyness.
Add 'not found' caching in EntityTransferModule.GetRegionContainingWorldLocation
so hitting borders and bad teleports do not continuiously hammer on the GridService.
2013-12-27 08:23:37 -08:00
Robert Adams
2d2bea4aa7 varregion: many more updates removing the constant RegionSize and replacing
with a passed region size. This time in the map code and grid services code.
2013-12-26 22:45:59 -08:00
Robert Adams
e5f7c8b6e8 varregion: add lots of DEBUG level log messages. Especially for teleport. 2013-12-24 12:31:26 -08:00
Robert Adams
b40b57776b varregion: remove unused Scene.HaveNeighbor routine. Its computation
was wrong for large regions anyway.
2013-12-24 12:28:54 -08:00
Robert Adams
5c9fa15f30 varregion: fix bug where destination region is not found and object is
not restored to its original location.
2013-12-24 11:51:50 -08:00
Justin Clark-Casey (justincc)
540fa84842 Merge branch 'justincc-master' 2013-12-21 01:12:45 +00:00
Justin Clark-Casey (justincc)
2f94165dcc Add lsl arg syntax checking for control event 2013-12-21 01:00:50 +00:00
Justin Clark-Casey (justincc)
f1cd813a29 refactor: rename internal lsl parser VectorDeclaration -> VecDeclaration for consistency 2013-12-21 00:49:01 +00:00
Justin Clark-Casey (justincc)
871ac5b16c Add arg checking for at_target lsl event 2013-12-21 00:46:34 +00:00
Justin Clark-Casey (justincc)
a5e4780547 Add lsl event arg checking for at_rot_target 2013-12-21 00:37:56 +00:00
Justin Clark-Casey (justincc)
b757ab2586 Add lsl event argument checking for attach and on_rez 2013-12-21 00:08:36 +00:00
Robert Adams
a01862509e Merge branch 'master' into varregion 2013-12-20 06:52:28 -08:00
Justin Clark-Casey (justincc)
68773ee7c4 Merge branch 'justincc-master' 2013-12-19 01:41:04 +00:00
Justin Clark-Casey (justincc)
e298bf41ff Add missing viewer param elements for butt and breast physics.
Patch from http://opensimulator.org/mantis/view.php?id=6864 except with tabs replaced by spaces
Thanks cinderblocks!
2013-12-19 01:24:36 +00:00
Justin Clark-Casey (justincc)
a5ca15c428 Create regression test TestSendAgentGroupDataUpdate() for groups agent data sending 2013-12-18 23:35:38 +00:00
Robert Adams
6937eec258 Merge branch 'master' into varregion
Add new region crossing code to varregion

Conflicts:
	OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
	OpenSim/Region/Framework/Scenes/ScenePresence.cs
2013-12-17 06:18:13 -08:00
BlueWall
141d771a93 Fix issue with editing notes for other avatars 2013-12-16 17:36:21 -05:00
BlueWall
b03ec6137f Populate user preferences with UserAccount email if it is present, else return an error indicating no email is on record for the user. 2013-12-16 17:36:04 -05:00
Melanie
fe01e7d1cc Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-12-16 22:11:03 +00:00
Melanie
f69e91dc2d This is the acutal sitting avatar crossing code. This commit implements the
actual crossing mechanics for seated avatars, using the supporting code from
the previous commits. Physics is not supported yet, although some few bits
for them are already in place due to the earlier code drops. With this commit,
crossing sitting avatar by "editing" the prim across the border, by using
llSetPos or keyframe motion may already be possible. Vehicles will come next.
2013-12-16 22:08:02 +00:00
Robert Adams
13a9a4b653 varregion: rename 'LegacyRegionLocX' back to 'RegionLocX' and same for Y and Z.
Rename 'RegionWorldLocX' to 'WorldLocX' and same for Y and Z.
This keeps the downward compatibility and follows the scheme of 'region'
and 'world' location naming that is happening in the Util module.
2013-12-14 07:53:01 -08:00
Justin Clark-Casey (justincc)
00e632ec3a Merge branch 'justincc-master' 2013-12-14 02:49:23 +00:00
Justin Clark-Casey (justincc)
51da52f904 Extend TestLlGetNotecardLine() regression test to contain chars that are two bytes in utf8 2013-12-14 02:48:29 +00:00
Justin Clark-Casey (justincc)
38d7d46c17 Merge branch 'justincc-master' 2013-12-14 02:33:08 +00:00
Kevin Cozens
957449e62c ParseNotecardToList() returned data past end of notecard text (mantis #6881). 2013-12-14 02:25:28 +00:00
Justin Clark-Casey (justincc)
ee163b5751 Merge branch 'justincc-master' 2013-12-14 02:23:12 +00:00
Justin Clark-Casey (justincc)
e7a294e739 Wrap analysis of the particle system in the UUID Gatherer in a separate try/catch as sometimes it appears that this can be corrupt.
As per Oren's suggestion.
2013-12-14 01:48:03 +00:00
Justin Clark-Casey (justincc)
996a6c2eea After previous discussion, put eye-catcher 'SCRIPT READY' messages to console rather than log as warning
The problem with logging at warn is that these aren't actually warnings, and so are false positives to scripts that monitor for problems.
Ideally, log4net would have a separate "status" logging level, but currently we will compromise by putting them to console, as they are user-oriented
2013-12-14 01:34:28 +00:00
Eva Comaroski
63ccc3dbf5 Convert if-blocks to return statements in small functions such as GetStartParameter(). 2013-12-14 01:20:24 +00:00
Justin Clark-Casey (justincc)
bf826699a5 Merge branch 'justincc-master' 2013-12-14 01:13:17 +00:00
Justin Clark-Casey (justincc)
d656ec2a07 Make WindParamSet success a console message rather than a log message.
This effectively disables the log message as requested by http://opensimulator.org/mantis/view.php?id=6890
2013-12-14 01:07:37 +00:00
Justin Clark-Casey (justincc)
5ddd818238 minor: Make wind console commands print out to console rather than log 2013-12-14 00:50:06 +00:00
Justin Clark-Casey (justincc)
bcb8c4068e Comment out sit position checks in TestSitAndStandWithSitTarget() in SP and NPC tests until positions are known to be stable.
Also resolve issues with NoSitTarget() tests where I was trying to use a destroyed PhysActor
2013-12-14 00:36:25 +00:00
Justin Clark-Casey (justincc)
d2d4ae541b Fix build break in test from previous commit 54cc229 - hadn't realized ScenePresence inst var name was slightly different 2013-12-14 00:19:04 +00:00
Justin Clark-Casey (justincc)
54cc229768 Fix TestSitAndStandWithNoSitTarget NPC and SP tests.
These stopped working because current code calculates sit heights based on avatar physics rather than appearance data.
Also changed BasicPhysics to not divide Z param of all set sizes by 2 - there's no obvious good reason for this and basicphysics is only used in tests
2013-12-14 00:10:32 +00:00
Justin Clark-Casey (justincc)
11f177d6a8 Eliminate unnecessary line from my previous commit 1d605642 2013-12-13 23:30:08 +00:00
Justin Clark-Casey (justincc)
1d605642f7 Refix sitting on child prims by reinserting relevant code back into SP.HandleAgentSit() 2013-12-11 23:59:52 +00:00
Melanie
82ebb86d58 Replace proprietary file header with BSD one 2013-12-11 01:51:57 +00:00
Melanie
92aad6f1bb Add missing files *blush* 2013-12-11 01:44:03 +00:00
Melanie
5b73b9c4a8 Committing the Avination Scene Presence and related texture code
- Parts of region crossing code
- New bakes handling code
- Bakes now sent from sim to sim without central storage
- Appearance handling changes
- Some changes to sitting
- A number of unrelated fixes and improvements
2013-12-11 01:39:56 +00:00
Melanie
3df8990e6f Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-12-11 00:14:16 +00:00
Melanie
97934e00e6 This is the Avination Entity Transfer Module. Surprisingly, it still compiles
but I don't know if it runs. Will probably crash and burn as the supporting
code isn't there yet.
2013-12-11 00:12:36 +00:00
dahlia
0875050161 Add console utility commands "scale scene" and "translate scene". Note that repeated use of these commands will induce floating point accumulation errors. Please back up your region before using. 2013-12-10 13:57:18 -08:00
dahlia
8f221a3077 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-12-06 16:25:26 -08:00
dahlia
c0380d1bfe apparently mono DeflateStream has no CopyTo method =( 2013-12-06 16:24:44 -08:00
Diva Canto
5047bd7b44 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-12-06 16:02:03 -08:00
Diva Canto
4058e5f709 Fixed misleading comment 2013-12-06 16:01:29 -08:00
dahlia
aba2a44453 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-12-06 15:58:51 -08:00
dahlia
1496de7ce9 use System.IO.Compression.DeflateStream for mesh decompression in an attempt to reduce mesh asset decoding failures 2013-12-06 15:58:19 -08:00
BlueWall
1842388bb4 Add support for user preferences (im via email) 2013-12-06 02:52:13 -05:00
Robert Adams
4eb52eb19e Merge branch 'master' into varregion 2013-12-05 21:07:44 -08:00
BlueWall
04f8fc1ce9 Adding profile partners fix to SQLite and PgSQL drivers 2013-12-05 20:25:28 -05:00
BlueWall
823a175f07 Stop writing partner id to record when updating profile data. This should be changed only by admin in backend. 2013-12-05 20:06:04 -05:00
Fernando Oliveira
9b76a46df0 Reversing back to the row["ColumnName"] case field name. http://opensimulator.org/mantis/view.php?id=6868 2013-12-06 00:41:02 +00:00
Justin Clark-Casey (justincc)
bb4f4d9480 minor: Use enums for setting inv/asset types on data upload rather than magic numbers 2013-12-06 00:38:18 +00:00
Justin Clark-Casey (justincc)
16aaba77d4 Properly set InventoryType.Snapshot when a snapshot is uploaded
Resolves http://opensimulator.org/mantis/view.php?id=6857
This prevents the inventory service complaining later about an attempt to change an invariant
2013-12-06 00:30:44 +00:00
Justin Clark-Casey (justincc)
17b32b764a Fix regression where mouse look flight direction no longer worked by zeroing x/y rot before sending agent updates, instead of before any agent update processing
It turns out that the x/y rot data in mouselook is needed to implement this and to push the avatar against the ground if walking in mouselook.
Doing this in the terse send so that we preserve mouselook rotation information
2013-12-05 02:10:46 +00:00
Justin Clark-Casey (justincc)
62a2d7836f Ignore X and Y body rotations when sent by mouse look.
Fixes http://opensimulator.org/mantis/view.php?id=3274
When not in mouselook, avatar only sends rotations around the Z plane (since that's the only way an avatar can rotate).
However, in mouselook it also sends X and Y information.  But sending X and Y in terse updates causes issues with wrong camera movement in mouselook.
So strip out X and Y components for now.  If this is an issue, then could strip out before sending avatar terse update, though this generates more cpu work.
Thanks to mirceakitsune for suggesting an initial fix
2013-12-03 02:27:40 +00:00
Robert Adams
31bacfbb63 Merge branch 'master' into varregion 2013-12-01 15:51:42 -08:00
Robert Adams
6cd0d7a62b varregion: Add MaxRegionSize constant and enforce in RegionInfo.
Intermediate checkin of changing border cross computation from checking
boundry limits to requests to GridService. Not totally functional.
2013-11-30 15:28:39 -08:00
Justin Clark-Casey (justincc)
8ebad90800 Actually use the SP.AgentControlStopSlowWhilstMoving parameter intoroduced for slow walk/run in 4cfe02a rather than the magic number 2013-11-30 01:56:46 +00:00
Justin Clark-Casey (justincc)
96018afab4 Remove unused SP.Updated flag, which appears unused for many years and was only set true once and never reset 2013-11-30 01:52:45 +00:00
Justin Clark-Casey (justincc)
4cde02a2a3 Implement most effects of AGENT_CONTROL_STOP
AGENT_CONTROL_STOP is specified to SP.HandleAgentUpdate if the user holds down the space bar on a viewer.
For a stopped avatar, this prevents fly or walk/run (though not rotate) until released.
For a walking/running avatar, this reduces movement to half speed.
For a flying avatar, this stops the avatar.
These are observed behaviours on the LL grid - there was no previous OpenSimulator implementation
This commit introduces an optional parameter to SP.AddNewMovement(), which means that it will no longer compile on .NET 3.5 or earlier versions of Mono than 2.8
Currently, this does not work for jumping, and if used whilst flying the avatar continues the fly animation even though it does not move
2013-11-30 01:44:30 +00:00
Justin Clark-Casey (justincc)
4bd4f1cd83 Remove nudgehack from SP.HandleAgentUpdate by making MovementFlag a uint rather than a byte 2013-11-30 01:14:12 +00:00
Justin Clark-Casey (justincc)
8b3a4367ea Still send CameraEyeOffset in UDP SendSitReponse even if at offset is Vector3.Zero 2013-11-29 02:51:35 +00:00
Justin Clark-Casey (justincc)
5f0e763062 Remove unused sp.ParentPosition, which has not been used for some time 2013-11-29 02:48:59 +00:00
Justin Clark-Casey (justincc)
84bfde3bdf Comment out debug sit message accidently left active 2013-11-29 02:45:14 +00:00
Justin Clark-Casey (justincc)
ca079c378a Merge branch 'link-sitting' 2013-11-29 02:41:32 +00:00
Justin Clark-Casey (justincc)
868c0c2746 Fix regression where sitting on ground stopped working.
This was due to the PhysicsActor no longer being recreated on stand from ground.
2013-11-29 01:56:49 +00:00
Justin Clark-Casey (justincc)
f9193e3c51 Restore SP.AbsolutePosition to properly return actual absolute position when sitting 2013-11-29 01:50:12 +00:00
Justin Clark-Casey (justincc)
a64377149d Add parameter checking for land_collision, land_collision_start and land_collision_end lsl events
Wrong number of parmeters now generates syntax error on compile, as seen on LL grid
2013-11-29 00:44:53 +00:00
Robert Adams
109136c074 varregion: add ITerrainChannel.GetHeightAtXYZ() for eventual mesh terrain.
Implementation of same in TerrainChannel.cs.
Check for bounds in TerrainChannel[x,y] to prevent array access exceptions.
2013-11-28 08:22:41 -08:00
Robert Adams
7aa00632b9 varregion: many replacements of in-place arithmetic with calls to
the Util functions for converting world addresses to region addresses
and converting region handles to locations.
2013-11-28 08:20:16 -08:00
Justin Clark-Casey (justincc)
b8dd203378 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-11-28 00:23:58 +00:00
Justin Clark-Casey (justincc)
13017034b1 minor: Change ProfileServiceURL reference in OpenSim.ini.example to be consistent 2013-11-28 00:23:27 +00:00
Mic Bowman
73dadef8df Change the log level for the LOGIN DISABLED and LOGIN ENABLED messages is
the RegionReady module to be warn so that the message will show up in the
log for simulators running in a more production mode (knowing when logins
are functional is useful).
2013-11-27 12:01:09 -08:00
dahlia
e52a8d388f "rotate scene" command now uses Constants.RegionSize / 2 to pick the center of rotation and center can be optionally overridden in the command line 2013-11-26 21:07:37 -08:00
Justin Clark-Casey (justincc)
0785210e29 Fix stand positions rather than having the stand jump to the root prim. 2013-11-27 02:08:22 +00:00
dahlia
5a9ec0748b add a "rotate scene" console command. Seems to work for prims/sculpts/mesh but not for foliage, don't know why. Also doesn't work on terrain. Successive use of this command will likely introduce floating point error accumulation. Back up your region before using it :) 2013-11-26 17:18:44 -08:00
Justin Clark-Casey (justincc)
a3c72dafe6 Only translate linked prim specified offset pos by the link prim rotation, not any specified avatar rotation as well.
Don't translate root prim position by avatar rotation.
2013-11-26 01:40:55 +00:00
Justin Clark-Casey (justincc)
36d146bf27 fix position changes when sitting on a prim with position and/or orientation explicitly specified 2013-11-26 00:43:35 +00:00
Fernando Oliveira
0ad45531a1 Corrected case to get columns from Regions table from PostgreSQL http://opensimulator.org/mantis/view.php?id=6865
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2013-11-25 18:33:49 -05:00
Robert Adams
3193bcaae1 Merge branch 'master' into varregion 2013-11-24 07:23:12 -08:00
Justin Clark-Casey (justincc)
60e049ea39 Revert "Fix issue where sitting on non-root linked prims would send camera to wrong position in third-person and mouselook"
Reverting to place on separate branch

This reverts commit ff4e7de776.
2013-11-23 02:31:39 +00:00
Justin Clark-Casey (justincc)
1999b218fd Revert "Add line accidentally left out of recent non-root prim sit fix"
Reverting to place on new branch

This reverts commit ed1029712a.
2013-11-23 02:31:17 +00:00
Justin Clark-Casey (justincc)
a68d1fad73 Revert "Still send CameraEyeOffset in UDP SendSitReponse even if at offset is Vector3.Zero"
This reverts commit 9bdd3dc7de.
2013-11-23 02:29:14 +00:00
Justin Clark-Casey (justincc)
eb172be541 Revert "Fix non-root prim sit positions for prims where a sit target has been specified as well."
Revert to place on separate branch for now

This reverts commit 70e651a8d1.
2013-11-23 02:28:30 +00:00
Justin Clark-Casey (justincc)
910f07dffa Revert "Refix fix for sitting on non-root linked prims with explicit sit targets."
This reverts commit 78649eb099.
2013-11-23 02:27:26 +00:00
Justin Clark-Casey (justincc)
5aa3236ebe Revert "fix avatar rotation when sitting on a linked part"
Reverting for now to place on separate branch

This reverts commit 65304260af.
2013-11-23 02:27:03 +00:00
Justin Clark-Casey (justincc)
b9e42aeb6e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-11-23 02:09:54 +00:00
Justin Clark-Casey (justincc)
65304260af fix avatar rotation when sitting on a linked part
Need to take into account rotation of linked prim now that we are always specifying sits wrt the root prim
2013-11-23 02:09:03 +00:00
Fernando Oliveira
f3f3d390f7 Fixed the update StoreRegionWindlightSettings() wasn't updating regionwindlight table, raising PrimaryKey violation;
Signed-off-by: Fernando Oliveira <fernando@oliveira.eti.br>
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2013-11-22 20:48:12 -05:00
Justin Clark-Casey (justincc)
8217b52d3a Remove old *.exe.config files that related to programs that have long been deleted or renamed 2013-11-23 01:40:48 +00:00
Justin Clark-Casey (justincc)
78649eb099 Refix fix for sitting on non-root linked prims with explicit sit targets.
I forgot that m_post is being set inconsistently between non-explicit and explicit ragets
2013-11-23 01:35:08 +00:00
Justin Clark-Casey (justincc)
70e651a8d1 Fix non-root prim sit positions for prims where a sit target has been specified as well. 2013-11-23 01:32:29 +00:00
Justin Clark-Casey (justincc)
bd5c414618 Stop .NET 4 complaining on Windows when it tries to load in DLLs that haven't been marked as trusted in the operating system.
This is done by adding <loadFromRemoteSources enabled="true" /> to the execute *.config files.
This tells .NET 4 to trust the DLLs, which is safe in our case since we are not loading DLLs from locations that untrusted users may specify
Addresses http://opensimulator.org/mantis/view.php?id=6853 and http://opensimulator.org/mantis/view.php?id=6846
As far as I know, CAS policy checks have never been performed in Mono
2013-11-23 01:29:55 +00:00
Justin Clark-Casey (justincc)
ed1029712a Add line accidentally left out of recent non-root prim sit fix
Original commit is ff4e7de7
2013-11-23 01:18:07 +00:00
Justin Clark-Casey (justincc)
9bdd3dc7de Still send CameraEyeOffset in UDP SendSitReponse even if at offset is Vector3.Zero
As far as I can see it's valid to change the eye offset even if you aren't changing the at target.
2013-11-23 01:12:20 +00:00
Justin Clark-Casey (justincc)
9f4a548a49 Fix false positive test failure in TestRepeatSameDrawContainingImageReusingTexture() and TestRepeatSameDrawContainingImage() if localhost has a webserver set up.
Use 0.0.0.0 instead of localhost
2013-11-23 01:04:31 +00:00
Justin Clark-Casey (justincc)
ff4e7de776 Fix issue where sitting on non-root linked prims would send camera to wrong position in third-person and mouselook
We now specify sits as offsets from the root prim, as the viewer expects.
2013-11-23 00:53:09 +00:00
Eva Comaroski
c896b4179e Added admin_authenticate_user command 2013-11-20 00:09:32 +00:00
Justin Clark-Casey (justincc)
b44c69807d Fix bug where "show modules" would accidentally list all the shared modules again as "non-shared"
Addresses http://opensimulator.org/mantis/view.php?id=6860
2013-11-19 23:53:15 +00:00
Justin Clark-Casey (justincc)
f9984a9685 rename private field ACD.ViewerInternal to m_viewerInternal in line with conventions used elsewhere in code 2013-11-19 23:39:52 +00:00
Justin Clark-Casey (justincc)
b71952df49 Stop AgentCircuitData.Viewer.get() from throwing an error if no Viewer has been set.
Continue to return null instead.
2013-11-19 23:36:44 +00:00
Latif Khalifa
9ba5a7e190 Normalize viewer version string to accomodate new style version reporting in the viewers 2013-11-19 23:29:10 +00:00
Justin Clark-Casey (justincc)
f94d07f2e2 Add regression test to check that specifying a non-existent event raise a syntax error
This was the case before any of the recent changes
2013-11-16 03:02:57 +00:00
Justin Clark-Casey (justincc)
79c1ed8cb9 Add syntax checking for no_sensor() no-arg event 2013-11-16 03:00:03 +00:00
Justin Clark-Casey (justincc)
ec4d96acc9 refactor common code out of no argument LSL event regression tests 2013-11-16 02:58:06 +00:00
Justin Clark-Casey (justincc)
edd7e19463 If anything other than a single integer is specified for events that only take a single integer, generate a syntax error on LSL script compile rather than an exception later on.
This applies to events changed, collision, collision_start, collision_end, on_rez, run_time_permissions, sensor, touch, touch_start, touch_end
2013-11-16 02:50:14 +00:00
Justin Clark-Casey (justincc)
62006baaef Make state_exit, moving_end, moving_start, not_at_rot_target, not_at_target and timer LSL events generate a syntax error if inappropriately given arguments.
This matches behaviour seen on the LL grid and a previous change for state_entry.
These are all the events which should take no arguments
2013-11-16 01:30:23 +00:00
Justin Clark-Casey (justincc)
d728c1beb2 refactor LSL_EventTests.TestStateEntryEvent into single method to test compile 2013-11-16 01:25:25 +00:00
Justin Clark-Casey (justincc)
b58a474105 Ignore *.suo and *.user as these are user specific preference files from Visual Studio
http://stackoverflow.com/questions/72298/should-i-add-the-visual-studio-suo-and-user-files-to-source-control
2013-11-16 00:21:12 +00:00
Justin Clark-Casey (justincc)
92fbe675b5 minor: Add OpenSim.v11.suo to .gitignore file.
This is generated if a vs2010 OpenSim.sln is loaded into vs2012
As per http://opensimulator.org/mantis/view.php?id=6839
2013-11-16 00:05:49 +00:00
Justin Clark-Casey (justincc)
ecfb78dd16 minor: Use default(UUID) in rez attachment failure error logging rather than (UUID)null
Patch from http://opensimulator.org/mantis/view.php?id=6843
Thanks Kira.
2013-11-15 23:16:12 +00:00
Justin Clark-Casey (justincc)
346644016c If HGSuitcaseInventoryService.GetRootFolder() fails to create a suitcase folder when required, then don't try to store the null and perform other operations on it.
Patch from http://opensimulator.org/mantis/view.php?id=6844
Thanks Kira.
2013-11-15 23:10:59 +00:00
Robert Adams
604b39cea9 Merge branch 'master' into varregion 2013-11-15 14:56:13 -08:00
Justin Clark-Casey (justincc)
0595974a89 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-11-15 22:48:58 +00:00
dahlia
f63fd81a68 update libomv to 1538d3088e79ff0a9abea6905b487755b6890a85 in hope that it fixes some bulletsim issues on linux 2013-11-15 14:40:38 -08:00
Justin Clark-Casey (justincc)
7cab41f422 refactor: replace verbose checks with String.IsNullOrEmpty where applicable.
Thanks to Kira for this patch from http://opensimulator.org/mantis/view.php?id=6845
2013-11-15 21:45:08 +00:00
Justin Clark-Casey (justincc)
b4932bda2a If a local land ID is given to the "land show" command, then output to console the full details of that parcel.
Using "land show" without a land ID still outputs a summary of parcels in the region
2013-11-15 00:16:33 +00:00
Robert Adams
d67236c09d Merge branch 'master' into varregion 2013-11-13 16:10:25 -08:00
Justin Clark-Casey (justincc)
8114ae0f8b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-11-13 23:27:25 +00:00
Justin Clark-Casey (justincc)
7da10850b0 Fix bug where removing a physical linkset would only decrement the Active Objects statistic by 1 instead of by the number of prims removed.
Unlike LL, OpenSimulator currently uses this stat to record the number of prims in the physics simulation, even when they are at rest.
Added regression test for this case.
2013-11-13 23:25:54 +00:00
justincc
869a23e223 Update OpenSim.32BitLaunch.exe and Robust.32BitLaunch.exe to .NET 4 versions.
Also fixes some issues in associated solution files
2013-11-13 01:07:14 +00:00
Justin Clark-Casey (justincc)
d71ebb7ec8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-11-13 00:27:05 +00:00
Justin Clark-Casey (justincc)
4563e7e04a Get runprebuild.sh to generate a vs2010 for xbuild to work with .NET 4 rather than vs2008
At least since 2009, Monodevelop has been able to load vs2010 files as well
2013-11-13 00:25:41 +00:00
justincc
0f16612400 Fix runprebuild.bat on Windows 7 systems and later
MS changed Windows 7 "reg query" command to spit out fewer lines in its preamble
Annoyingly there is no option to print raw values and not this preamble.
So now using the Windows find command.
But this has the side effect of stopping this working with Cygwin as it uses its own GNU find command.
Might fix in the future but not simple since Windows find itself is in different locations
2013-11-13 00:00:55 +00:00
Robert Adams
e2a1fa806d varregion: extend TerrainModule to use the region size from RegionInfo
rather than using Constants.RegionSize. This allows loading and saving
of terrain heightmaps that match the size of non-legacy sized regions.
2013-11-10 21:12:17 -08:00
Robert Adams
c12e68e34d varregion: fix GetLandObject error return and initialization of square
land object bitmaps. This fixes creation of child presences and the
editing of parcels.
Also lots of commented out debugging messages.
2013-11-10 19:52:31 -08:00
Robert Adams
7061784cc6 Merge branch 'master' into varregion 2013-11-08 20:55:28 -08:00
Robert Adams
beeec1c467 varregion: elimination of Constants.RegionSize from all over OpenSimulator.
Routines in Util to compute region world coordinates from region coordinates
as well as the conversion to and from region handles. These routines have
replaced a lot of math scattered throughout the simulator.
Should be no functional changes.
2013-11-08 20:53:37 -08:00
Robert Adams
a7a837550e varregion: Massive work to LandManagementModule and LandObject to
handle variable sized regions. Many changes for both the region and parcels.
Most of the constant "4" (for the 4x4 parcel units) have been replaced
with symbols and math.
2013-11-08 20:51:09 -08:00
Justin Clark-Casey (justincc)
fd24147afa Add initial test for checking that specifying a parameter in LSL state_entry() generates a syntax error.
Same for other events to follow at a later date.
2013-11-09 00:36:05 +00:00
Justin Clark-Casey (justincc)
9a9abd37eb minor: remove the bit left in the readme which said .net 3.5 framework was required 2013-11-08 23:16:09 +00:00
Justin Clark-Casey (justincc)
ea9e96dd50 Update OpenSimulator to use .NET 4.0
This allows region modules to register script functions that have more than a couple of arguments.
It also allows OpenSimulator code to use the feature and syntax additions that came with .NET 4.0
Windows users will need to install Microsoft .NET 4 framework if they have not done so already.
Windows C# Express 2010 also becomes the minimum IDE for build, so runprebuild.bat now generates a 2010 solution and runprebuild2010.bat goes away
Official minimum mono version becomes 2.10.8.1.  OpenSimulator will probably work with 2.8 later but this is not guaranteed.
2013-11-08 21:13:05 +00:00
Justin Clark-Casey (justincc)
626a050159 minor: Make PID file example in Robust.HG.ini more meaningful as is now the case in OpenSim and vanilla ROBUST config files 2013-11-08 00:34:35 +00:00
Justin Clark-Casey (justincc)
5cef8bf64e Make admin_save_oar request submit a request ID and log this for tracking.
Previous behaviour of always logging 'name' is unhelpful since this actually an error message parameter which is only filled out if an error has occurred
2013-11-08 00:31:26 +00:00
dahlia
3b2721c957 update OpenMetaverse.dll to 7ae74674a09877119cbb4c80cbffea474e20da29
- addresses particle flags issue
2013-11-06 19:13:41 -08:00
Justin Clark-Casey (justincc)
52ff860f30 minor: Make PID file examples in OpenSim and Robust config somewhat more meaningful than just /tmp/my.pid 2013-11-06 23:27:19 +00:00
Robert Adams
f7bd0da026 Merge branch 'master' into varregion 2013-11-06 06:32:11 -08:00
dahlia
0b4577d5b0 add support for particle glow LSL functions 2013-11-05 23:48:44 -08:00
dahlia
709814c194 add support for particle blending LSL functions 2013-11-05 23:38:43 -08:00
dahlia
e1ce3907f2 Update libomv to 7e260ad419ebb1c24a5f1b123e11dd930e05f414. Thanks lkalif :) 2013-11-05 23:01:14 -08:00
dahlia
cd33972ed1 trigger a build to see if tests will work 2013-11-05 22:04:39 -08:00
Robert Adams
a75ce7423c Merge branch 'master' into varregion 2013-11-05 21:42:27 -08:00
Robert Adams
d0854e4ace varregion: properly sense size of terrain heightmap and store as
compressed 2D database blob if a varregion.
2013-11-05 21:33:02 -08:00
Latif Khalifa
26fd29622d Added sending (for now hard-coded) sim isze in SendMapBlockSplit() 2013-11-06 03:52:04 +01:00
Latif Khalifa
417836ac5e Updated libomv to 25ee208a 2013-11-05 2013-11-06 02:43:44 +01:00
Justin Clark-Casey (justincc)
8e1bf55e7b Add IncomingPacketsResentCount clientstack statistics
This records how many packets were indicated to be resends by clients
Not 100% reliable since clients can lie about resends, but usually would indicate if clients are not receiving UDP acks at all or in a manner they consider timely.
2013-11-06 01:02:20 +00:00
Justin Clark-Casey (justincc)
caf2abe311 Record individual region bot disconnects in pCampbot log 2013-11-05 23:32:26 +00:00
Justin Clark-Casey (justincc)
fb23f78928 minor: comment out "SetLastPosition" GridUserService debug message for now. 2013-11-05 23:18:09 +00:00
Justin Clark-Casey (justincc)
2d315ec207 Fix a race condition where pCampbot actions could continue even if a bot had disconnected. 2013-11-05 20:58:52 +00:00
Robert Adams
c931b16c1f Merge branch 'master' into varregion 2013-11-04 22:12:57 -08:00
Robert Adams
f2810bf03a varregion: add plumbing to pass region size from Scene down to the
physics engine.
Older physics engines will default to the legacy region size.
Update BulletSim to use the new region size information.
2013-11-04 22:10:54 -08:00
Robert Adams
cd1a23fc14 varregion: remove uses of region size constant. In particular, update scene
to check for border crossings based on the size of the region.
2013-11-04 22:09:52 -08:00
Robert Adams
ac94dc8a14 varregion: remove unused terrain serialization code in SQLite and PGSQL modules 2013-11-04 22:06:20 -08:00
Robert Adams
9bf363e9be varregion: send the proper terrain patch layer code for large terrain.
Code cleanups.
2013-11-03 08:14:51 -08:00
Robert Adams
79b031bd0c varregion: send region size in LLLoginResponse. 2013-11-02 15:42:26 -07:00
Robert Adams
6df7d4219d varregion: add linkage for region size in creations and conversions
of GridRegion. New variables for size and code to initialize same.
2013-11-02 15:40:48 -07:00
Robert Adams
f66737fe56 varregion: Enforce the configuration of square regions in RegionInfo.cs. 2013-11-02 15:36:16 -07:00
Justin Clark-Casey (justincc)
2b069a3b1e If the LSL state_entry() event definition contains any parameters, then generate syntax error as seen on the LL grid
This is done through the parser and so generates the same syntax error message if any parameters are wrongly specified for this event.
We were already enforcing event names in the parser.
This is only for state_entry so far as an initial test of the approach - appears to work correctly.
2013-11-02 00:39:12 +00:00
Robert Adams
92c06a5d0b varregion: fix lawn-mower terrain fill so it works for non-square regions.
Add some debugging logs on region creation to report region size.
2013-11-01 16:37:27 -07:00
Robert Adams
976530569a varregion: enforce multiple of 256 for region size when parameters fetched from user.
Output info and warning messages for non-legacy region sizes.
2013-11-01 16:06:19 -07:00
dahlia
7faf286d00 add null check for jpeg2000 sculpt image decode failure. Note: the j2kDecodeCache folder should be cleared after updating to this revision so that sculpts containing alpha can be re-decoded and successfully meshed. 2013-11-01 13:45:09 -07:00
Robert Adams
ff5885ab23 varregion: push TerrainData implementation up and down the database storage stack.
Implement both LoadTerrain and StoreTerrain for all DBs.
Move all database blob serialization/deserialization into TerrainData.
2013-11-01 11:35:31 -07:00
dahlia
ce94f990bb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-11-01 01:42:43 -07:00
dahlia
f4ded3af63 discard alpha in 4-plane sculpt textures before generating physics proxy mesh 2013-11-01 01:40:56 -07:00
Justin Clark-Casey (justincc)
db32e5d304 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-11-01 02:05:12 +00:00
Justin Clark-Casey (justincc)
c6395240f0 For individual bots, seed random number generator with a random number from BotManager rather than Environment.Tickcount
Otherwise, since bots are now created all at once, a bunch will get exactly the same tickcount and hence number sequences
2013-11-01 02:04:04 +00:00
dahlia
cc73ef4eb9 add new particle system blending rule enumerations 2013-10-31 17:49:01 -07:00
Justin Clark-Casey (justincc)
cc7065f9ee minor: change "bot" pCampBot help cateogry to "Bots" 2013-11-01 00:04:18 +00:00
Justin Clark-Casey (justincc)
4c4a1cf715 Start counting resent packets in the places that I missed when the stat was first added a few commits ago 2013-10-31 23:59:22 +00:00
Justin Clark-Casey (justincc)
50794c9008 minor: remove mono compiler warnings in AvatarPickerSearchModule and UploadBakedTextureModule 2013-10-31 23:51:01 +00:00
Justin Clark-Casey (justincc)
3d5a7e9b19 Add OutgoingPacketsResentCount clientstack stat.
This allows one to monitor the total number of messages resent to clients over time.
A constantly increasing stat may indicate a general server network or overloading issue if a fairly high proportion of packets sent
A smaller constantly increasing stat may indicate a problem with a particular client-server connection, would need to check "show queues" in this case.
2013-10-31 23:45:52 +00:00
Justin Clark-Casey (justincc)
b7c57294cc Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-10-31 23:45:19 +00:00
dahlia
eb52d346c0 add new LSL constants associated with new "ribbon", "glow", and "blend" particle system functionality. Note that this does *not* complete required server side changes for implementing the new particle system 2013-10-31 16:13:03 -07:00
Justin Clark-Casey (justincc)
0e07fad2e1 minor: update pCampbot usage/help statement 2013-10-31 20:19:57 +00:00
Robert Adams
39777db8ef varregion: fix problem of X/Y dimensions swapped and incorrect terrain
compression base computation.
Complete replacement of float[] for terrain heightmap with TerrainData instance.
2013-10-31 09:24:06 -07:00
dahlia
46a4c32e27 update libomv to 5b4c1e8694479629f7cacd72dd6bc39a6b327f9c (git master as of time of this commit) 2013-10-30 22:01:34 -07:00
Justin Clark-Casey (justincc)
fdd1c63c3c Make "fcache status" command also display information on disk/mem cache hit rate that is currently only displayed if LogLevel >=1 in [AssetCache] config 2013-10-30 18:57:51 +00:00
Justin Clark-Casey (justincc)
28f36d8db5 Put fcache commands output to console, not log 2013-10-30 18:32:53 +00:00
Justin Clark-Casey (justincc)
edaf0a98d6 Give the caller AddMapTile a valid reason response if this failed due to blank response from server or connection failure.
Raise log lines which indicate problems to warning from debug
2013-10-29 23:37:22 +00:00
Justin Clark-Casey (justincc)
26c2d9e627 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-10-28 23:48:43 +00:00
Justin Clark-Casey (justincc)
39de7614ec Remove legacy sqlite lines added internally by OpenSimulator to the [Startup] section.
These are long unused but confusingly will be seen in the [Startup] section on a "config save".
2013-10-28 18:03:34 +00:00
Robert Adams
2be0347f50 Merge branch 'master' into varregion 2013-10-28 09:30:26 -07:00
Robert Adams
d23ef79f98 BulletSim: restore collision flags when clear collision cache.
THis fixes the extranious addition of objects to the collision cache
which created extra CPU overhead.
2013-10-26 21:30:51 -07:00
Robert Adams
93d5d66fbd BulletSim: update collision flags to make sure they fit in the shorts provided. 2013-10-26 21:20:19 -07:00
Justin Clark-Casey (justincc)
5be8f6632b minor: Fix commented out GridInfo service URL to be 8002 in Robust.ini.example rather than 9000 (already done in Robust.HG.ini.example) 2013-10-25 00:54:33 +01:00
Justin Clark-Casey (justincc)
df76e52310 minor: Add commented out code for apparent passing of texture IDs in ObjectProperties UDP replies to viewer
Not yet shown that this is used or resolves a bug where not all textures appear on objects with an "XML with textures" upload from singularity 1.8.3
Proper texture entries are actually present and appear properly on relog, but not on select from viewer until at least one face texture is changed.
2013-10-24 23:00:02 +01:00
Justin Clark-Casey (justincc)
31989bd51e Show texture ids for full object/part info console commmds 2013-10-24 21:29:57 +01:00
Justin Clark-Casey (justincc)
cccdfcb59e Comment out LLUDPServer.BroadcastPacket() to reduce code complexity. Appears to be a never used method. 2013-10-24 00:37:49 +01:00
Justin Clark-Casey (justincc)
5d61c4039d Only set the data present event if we actually queued an outoing packet (not if we sent immediately) 2013-10-24 00:33:14 +01:00
Robert Adams
511122834b BulletSim: change collision flags for groundplane to not interact with static objects.
Reorder collision flag setting code for terrain to fit pattern used elsewhere.
2013-10-23 16:07:03 -07:00
Justin Clark-Casey (justincc)
4830431eb0 Add current .NET windows framework requirement to README. 2013-10-22 01:02:40 +01:00
Robert Adams
a7e7bed660 BulletSim: update SOs and DLLs with version that enables compressed
AABB maps for Bvh meshes. This greatly reduces the memory usage for
large meshes and for mesh terrain in particular.
2013-10-19 11:44:27 -07:00
Kevin Cozens
84a149ecbf Call ScriptSleep() instead of llSleep() in routine for llEmail.
Signed-off-by: teravus <teravus@gmail.com>
2013-10-18 14:30:05 -05:00
Robert Adams
571a75f934 BulletSim: update lib32/libBulletSim.dylib to current BulletSim C++ API. 2013-10-18 09:15:08 -07:00
Oren Hurvitz
0094971186 After finishing to edit an attachment, let other avatars see the changes. (The changes weren't visible before because updates to attachments aren't sent while the attachment is selected.) 2013-10-17 23:10:16 +01:00
Justin Clark-Casey (justincc)
1bd89ac287 Readding Mono.Security.dll. This comes from http://pgfoundry.org/frs/download.php/3354/Npgsql2.0.12.0-bin-ms.net3.5sp1.zip
This is identical to what was previously there but need to record origin information
2013-10-17 22:31:15 +01:00
Justin Clark-Casey (justincc)
6221356712 Removing Mono.Security.dll temporarily so that it can be re-added with origin information 2013-10-17 22:28:58 +01:00
Fernando Oliveira
67ffb64764 Corrected estateID to EstateID on getEstates function at PGSQLEstateData.cs 2013-10-16 21:58:22 -05:00
Fernando Oliveira
f83343d302 * One More thing, add an appdomain data element to ensure that we don't duplicate the assembly resolving. 2013-10-16 21:20:11 -05:00
Fernando Oliveira
8fdf70b87e * Fixes mantis mantis 0006803 [PGSQL] - Simulator crashes - Mono.Security.dll missing. The root of the issue is that the Postgres driver relies on Mono.Security.dll from the mono project. Unfortunately, when using Mono, including the dll in the distribution causes conflicts. This solution puts Mono.Security.dll in bin/lib/NET/ and, if windows .NET is the runtime, informs the assembly loader to load bin/lib/NET/Mono.Security.dll when .NET is scanning for the Mono.Security namespace. On Mono, the included Mono.Security assembly is ignored. 2013-10-16 20:16:29 -05:00
Robert Adams
c581506058 varregion: update PGSQL driver for storing variable terrain size blobs. 2013-10-16 08:13:06 -07:00
Robert Adams
8937a2244d Merge branch 'master' into varregion 2013-10-16 07:53:44 -07:00
Robert Adams
97bc5263de varregion: move the compressed heighmap compression factor from
Constants into TerrainData.
Save compression factor with the terrain blob in the database.
2013-10-16 07:52:30 -07:00
Robert Adams
766a31431e BulletSim: implement the SL bug where VEHICLE_HOVER_UP_ONLY disables
the vehicle buoyancy if the vehicle is above its hover height.

This is a known misfeature of this vehicle flag which has been accepted
since it would break too many implementations. The problem is noticed
when creating a jetski-like vehicle that jumps over sand bars. A boat
normally is configured with neutral buoyancy and hovering at water
height. When it jumps the sandbar, it needs to have gravity applied
to get back to water level.
2013-10-15 17:02:22 -07:00
Oren Hurvitz
d0c1780839 Fixed rezzing coalesced objects from a prim's inventory
Previously only the first object in the Coalesced Object was rezzed. Now all the objects are rezzed.
2013-10-15 23:59:16 +01:00
Justin Clark-Casey (justincc)
acfe603a5f As discussed on many previous occasions, switch the default physics engine in OpenSimulator from OpenDynamicsEngine to BulletSim.
The BulletSim plugin is higher performance and has a better implementation of vehicles amongst other things.
Many thanks to Robert Adams for making this possible with the enormous amount of work that he has done on this plugin.
If you want to continue using ODE, set physics = OpenDynamicsEngine in the [Startup] section of OpenSim.ini
2013-10-15 23:24:49 +01:00
Justin Clark-Casey (justincc)
d82d6bb1ec Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-10-15 23:18:50 +01:00
Kevin Cozens
5ca7395e17 Added support for attachments to group notices when using Flotsam groups. 2013-10-15 23:07:49 +01:00
fernando
3e1ca2bd21 * Fixes mantis #6802 Simulator crashes whist loading (lighshare enabled)
* Please test
2013-10-15 11:55:08 -05:00
Oren Hurvitz
f106ba87ca Made terrain uploads thread-safe 2013-10-15 00:12:56 +01:00
Justin Clark-Casey (justincc)
a27c2432bb This is Npgsql2.0.12.0-bin-ms-net3.5sp1
From http://pgfoundry.org/frs/download.php/3354/Npgsql2.0.12.0-bin-ms.net3.5sp1.zip
This is identical to the version added in ff8a7682, removed and readded to check and record version
2013-10-14 23:59:49 +01:00
Justin Clark-Casey (justincc)
dbdcf2d995 Remove to re-add with version information for future reference 2013-10-14 23:58:12 +01:00
Michael Cerquoni
daf44cc65e fix missing " for variable SRV_IMServerURI in example file 2013-10-12 20:47:10 -04:00
Fernando Oliveira
ff8a768258 Fernando Oliveira's Postgress SQL Server Data Connector as a single commit.
* Added PostGreSQL support
* Added MySQL/MySQLXGroupData.cs
* PostgreSQL data access implementation
* PostgreSQL dll binarie and RegionStore.migrations
* Migrations Scripts from MSSQL to POSTGRES
* Postgres SQL Type fixes
* Postgres SQL Connection string
* Data type issues
* more fixes
* tests and +tests
* UUID x string - FIGHT!
* Fixed PG types to internal csharp types
* More data type fix (PostgreSQL fields are case sensitive) :(
* more field case sensitive fixes
* changed the migration files to be case sensitive for fields.
* fixed fields case
* finished converting, now search for hidden bugs.
* some more fixes
* bool type fixed
* more case fixes;
* creatorID case fixed
* case fields fixed
* fixed default now() for TMStamp fields with don't allow nulls.
* fix case sensitve for Region name and Estate name
* fixed case for names for search
* fix class name Error
* Bug fixed on select and migrations
* Un-Reverting my change due to Postgres issue with the ILIKE function
* Fixed some issued for Diva Distro
* Fixes for integration with Diva Distro
* Added System.Core to prebuild.xml for PG project
* Configured to make DIff for Push to OpenSim Project
* Diffs only to PostgreSQL mods.
2013-10-12 16:33:45 -05:00
teravus
2eade55471 * pushing test 2013-10-12 15:06:05 -05:00
Robert Adams
8b5e2f2cd2 BulletSim: Fix snap back from edge of region problem. Mantis 6794. 2013-10-11 13:29:43 -07:00
teravus
75f63ecfcd * Add a session concurrency option per key. Allows developer/config to specify number of concurrent requests on a service. 2013-10-09 22:21:25 -05:00
teravus
e7ea053c4a * Remove a test *cleanup* 2013-10-07 23:52:44 -05:00
teravus
1df58d04b1 * Move the BasicDOSProtector.cs to OpenSim.Framework (all useful classes belong there.....)
* Add an IsBlocked(string Key) method so it can be used more generically.   (think..   if we want to rate limit login failures, we could have a call in the Login Service to IsBlocked(uuid.ToString()) and ignore the connection if it returns true, if IsBlocked returns false, we could run the login information and if the login fails we could run the Process method to count the login failures.
2013-10-07 23:48:24 -05:00
teravus
75fdd6054d * Refactor
* Break out common BasicDOSProtector code into separate class.
2013-10-07 23:19:50 -05:00
teravus
f76cc6036e * Added a Basic DOS protection container/base object for the most common HTTP Server handlers. XMLRPC Handler, GenericHttpHandler and <Various>StreamHandler
* Applied the XmlRpcBasicDOSProtector.cs to the login service as both an example, and good practice.
* Applied the BaseStreamHandlerBasicDOSProtector.cs to the friends service as an example of the DOS Protector on StreamHandlers
* Added CircularBuffer, used for CPU and Memory friendly rate monitoring.
* DosProtector has 2 states, 1. Just Check for blocked users and check general velocity, 2. Track velocity per user,     It only jumps to 2 if it's getting a lot of requests, and state 1 is about as resource friendly as if it wasn't even there.
2013-10-07 21:35:55 -05:00
Robert Adams
86bf79aa2b Merge branch 'master' into varregion 2013-10-07 13:58:17 -07:00
Robert Adams
7416809077 varregion: plug in TerrainData class and modify TerrainModule and LLClientView to use same. This passes a terrain info class around rather than passing a one dimensional array thus allowing variable regions. Update the database storage for variable region sizes. This should be downward compatible (same format for 256x256 regions). 2013-10-07 13:57:40 -07:00
Robert Adams
25ae59b9eb varregion: remove scattered use of Constants.RegionSize by having routines reference RegionInfo.RegionWorldLoc?. 2013-10-07 13:57:30 -07:00
Robert Adams
9b150194f6 varregion: add new TerrainData and TerrainCompressor routines. TerrainCompressor needed to replace the one in libopenmetaverse that doesn't know about the larger terrain packets. 2013-10-07 13:57:16 -07:00
teravus
31246ecd04 * Added a unique and interesting WebSocket grid login processor by hijacking the LLSD login code. This sends the data through the normal login channels and spits out a JSON object back that mimics the login response. Feel free to comment on the best way to set this up as a config option. 2013-10-04 20:53:01 -05:00
teravus
85593d8d25 * Add an initial complete frame timeout to the WebSocket processor to make it easier to write WebSocket service code that is resistant to Denial of Service attacks. 2013-10-04 20:37:59 -05:00
Diva Canto
083eb7679b Added SimulatorFeatures/OpenSimExtras: say-range, whisper-range, shout-range, at the request of Singularity dev Liru-Dargon 2013-10-04 17:32:17 -07:00
Justin Clark-Casey (justincc)
44580e2233 Update an AssmblyVersion property that I missed to 0.8.0 2013-10-04 23:36:28 +01:00
Justin Clark-Casey (justincc)
42bdf44658 Bump OPenSimulator version and assembly versions up to 0.8.0 Dev 2013-10-04 23:33:47 +01:00
Justin Clark-Casey (justincc)
970249a3c7 Add OnChatToNPC and OnInstantMessageToNPC messages to NPCAvatar to allow region modules to directly subscribe to chat and messages received by NPCs
Currently still requires INPC from NPCModule.GetNPC() to be cast to an NPCAvatar.
2013-10-04 19:40:43 +01:00
Robert Adams
8c432c7c9b Merge branch 'varregion' of git://opensimulator.org/git/opensim into varregion 2013-09-28 07:35:30 -07:00
Robert Adams
8c1d80fdfd varregion: serious rework of TerrainChannel:
-- addition of varaible region size in X and Y
    -- internal storage of heightmap changed from double[] to short[]
    -- helper routines for handling internal structure while keeping existing API
    -- to and from XML that adds region size information (for downward compatibility,
        output in the legacy XML format if X and Y are 256)
Updated and commented Constants.RegionSize but didn't change the name for compatibility.
2013-09-28 07:33:56 -07:00
Robert Adams
aea5d3a842 Remove time based terrain storage in SQLite so revision number can be used
to denote terrain format revision.
Add terrain DB format revision codes to ISimulationDataStore.cs.
Setup so legacy compatible terrain storage and fetch is possible while
allowing future format extensions.
2013-09-28 07:33:55 -07:00
Robert Adams
fa1c688342 varregion: go back to using Constants.RegionSize so as not to break
external modules. People shouldn't use it but don't want to cause
too much breakage of legacy modules.
2013-09-28 07:33:54 -07:00
Robert Adams
139639d25e VarRegion: add RegionSize[XYZ] to RegionInfo.cs.
Update RegionInfo parameter and serialization routines to serialize
the region size if it is not the LegacyRegionSize.
2013-09-28 07:33:53 -07:00
Robert Adams
317c04fe17 VarRegion: change RegionInfo storage of region coordinates from region
count number to integer world coordinates.
Added new methods RegionWorldLoc[XY].
Refactored name of 'RegionLoc*' to 'LegacyRegionLoc*' throughout OpenSim.
Kept old 'RegionLoc*' entrypoint to RegionInfo for downward compatability
of external region management packages.
2013-09-28 07:33:52 -07:00
Justin Clark-Casey (justincc)
8996ac1a9c minor: Disable logging left active on regression test TestSameSimulatorIsolatedRegionsV2() 2013-09-27 22:33:42 +01:00
Justin Clark-Casey (justincc)
2cd95fac73 refactor: Rename Scene.AddNewClient() to AddNewAgent() to make it obvious in the code that this is symmetric with CloseAgent() 2013-09-27 22:27:39 +01:00
Justin Clark-Casey (justincc)
b16bc7b01c refactor: rename Scene.IncomingCloseAgent() to CloseAgent() in order to make it clear that all non-clientstack callers should be using this rather than RemoveClient() in order to step through the ScenePresence state machine properly.
Adds IScene.CloseAgent() to replace RemoveClient()
2013-09-27 19:14:21 +01:00
dahlia
b704de9bf8 minor code formatting for the sake of consistency and readability 2013-09-26 16:27:11 -07:00
Justin Clark-Casey (justincc)
585d0800dd minor: Make OpenSimDefaults.ini consistent (spacing and tabs to spaces) 2013-09-27 00:14:40 +01:00
Justin Clark-Casey (justincc)
70b51f12cd minor: Clean up tabbing and spacing issues in OpenSim.ini.example 2013-09-27 00:01:18 +01:00
Justin Clark-Casey (justincc)
d6d82dbd3c minor: correct attachment spelling mistake in log message in HGEntityTransferModule.OnIncomingSceneObject() 2013-09-26 20:13:29 +01:00
Robert Adams
fbc9072a5c varregion: serious rework of TerrainChannel:
-- addition of varaible region size in X and Y
    -- internal storage of heightmap changed from double[] to short[]
    -- helper routines for handling internal structure while keeping existing API
    -- to and from XML that adds region size information (for downward compatibility,
        output in the legacy XML format if X and Y are 256)
Updated and commented Constants.RegionSize but didn't change the name for compatibility.
2013-09-25 17:30:53 -07:00
Robert Adams
7fa64cce7d Remove time based terrain storage in SQLite so revision number can be used
to denote terrain format revision.
Add terrain DB format revision codes to ISimulationDataStore.cs.
Setup so legacy compatible terrain storage and fetch is possible while
allowing future format extensions.
2013-09-25 17:30:51 -07:00
Robert Adams
ab1474b5de varregion: go back to using Constants.RegionSize so as not to break
external modules. People shouldn't use it but don't want to cause
too much breakage of legacy modules.
2013-09-25 17:30:49 -07:00
Robert Adams
0765a83a8c VarRegion: add RegionSize[XYZ] to RegionInfo.cs.
Update RegionInfo parameter and serialization routines to serialize
the region size if it is not the LegacyRegionSize.
2013-09-25 17:30:47 -07:00
Robert Adams
96abbbb6fb VarRegion: change RegionInfo storage of region coordinates from region
count number to integer world coordinates.
Added new methods RegionWorldLoc[XY].
Refactored name of 'RegionLoc*' to 'LegacyRegionLoc*' throughout OpenSim.
Kept old 'RegionLoc*' entrypoint to RegionInfo for downward compatability
of external region management packages.
2013-09-25 17:30:45 -07:00
Justin Clark-Casey (justincc)
e24edada24 minor: Comment out windlight log message about sending scene data for now. 2013-09-26 00:39:32 +01:00
Justin Clark-Casey (justincc)
253f8de8cd minor: Add scene name to baked textures in cache log message 2013-09-26 00:33:50 +01:00
Justin Clark-Casey (justincc)
babfbe8d6d minor: log MaxOutgoingTransferVersion at EntityTransferModule startup 2013-09-26 00:31:33 +01:00
Justin Clark-Casey (justincc)
4664090b34 minor: correct spelling of Initialized in LSC connector version message 2013-09-25 22:59:57 +01:00
Justin Clark-Casey (justincc)
b22c92368f Move adding UUID.Zero -> Unknown User binding to UMM.Init() so that it's also called by HGUserManagementModule 2013-09-25 21:53:38 +01:00
Justin Clark-Casey (justincc)
32ddfc2740 Reinsert client.SceneAgent checks into LLUDPServer.HandleCompleteMovementIntoRegion() to fix race condition regression in commit 7dbc93c (Wed Sep 18 21:41:51 2013 +0100)
This check is necessary to close a race condition where the CompleteAgentMovement processing could proceed when the UseCircuitCode thread had added the client to the client manager but before the ScenePresence had registered to process the CompleteAgentMovement message.
This is most probably why the message appeared to get lost on a proportion of entity transfers.
A better long term solution may be to set the IClientAPI.SceneAgent property before the client is added to the manager.
2013-09-25 18:45:56 +01:00
Justin Clark-Casey (justincc)
732554be04 Reinsert 200ms sleep accidentally removed in commit 7dbc93c (Wed Sep 18 21:41:51 2013 +0100) 2013-09-25 18:29:14 +01:00
Justin Clark-Casey (justincc)
f384a6291e Instead of swallowing any socket begin/end receive exceptions, log them for debugging purposes.
This may reveal why on some teleports with current code, the UseCircuitCode message gets through but CompleteMovement disappears into the ether.
2013-09-25 00:02:17 +01:00
teravus
8de5c29e2c * The last two are the the patch that Aleric wanted pulled from his repo. * Added GregC to CONTRIBUTORS.txt, Aleric was already in there. * There's some controversy, Some people have suggested that this could be stored in dynamic attributes instead of the database.. Melanie was wanting to pull from the avination repo but was asked to wait on committing anything new until the release. The cherry-pick doesn't answer those questions. 2013-09-22 21:34:55 -05:00
Aleric Inglewood
7889e7757a Don't use 'Indented' formatting for RpcXml responses.
(cherry picked from commit 93abcde69043b175071e0bb752538d9730433f1d)
2013-09-22 21:10:01 -05:00
Aleric Inglewood
2dc92e7de1 Preserve attachment point & position when attachment is rezzed in world
Patch taken from
http://opensimulator.org/mantis/view.php?id=4905
originally by Greg C.

Fixed to apply to r/23314 commit
ba9daf849e
(cherry picked from commit 4ff9fbca441110cc2b93edc7286e0e9339e61cbe)
2013-09-22 21:10:01 -05:00
Justin Clark-Casey (justincc)
a37c59b43e minor: Recomment out log message uncommented in previous cbdfe969 2013-09-21 00:40:23 +01:00
Oren Hurvitz
cbdfe96905 When giving items between avatars in different simulators, only add the item to the receiving avatar's inventory once.
When a user gives an item, the user's client sends an InventoryOffered IM message to its simulator. This adds the item to the receiver's inventory. If the receiver isn't in the same simulator then XMLRPC is used to forward the IM to the correct simulator. The bug was that the receiving simulator handled the message by calling OnInstantMessage() again, which added a second copy of the item to the inventory. Instead, the receiving simulator should only notify the avatar that the item was offered.
2013-09-21 00:32:56 +01:00
Justin Clark-Casey (justincc)
4c0ec86176 minor: Add prefix to log message in LureModule 2013-09-21 00:14:57 +01:00
Justin Clark-Casey (justincc)
e2b3b7a2ae minor: Correct minor spelling mistake Reseting -> Resetting in HG Map module log message 2013-09-20 23:42:55 +01:00
Justin Clark-Casey (justincc)
8502517d80 Make UUID.Zero resolve to "Unknown User" in user cache.
This is to avoid massive numbers of 'no user found' logs when user IDs are missing for some reason.
UUID.Zero should not be used for any user ID.
2013-09-20 23:07:24 +01:00
Justin Clark-Casey (justincc)
c01db5fbdd Lock around read/write of ScenePresence.m_originRegionID to make sure that all threads are seeing the latest value and not a cached one.
There is a possibilty that some V2 teleport failures are due to the viewer triggered CompleteMovement thread not seeing the change of m_originRegionID by the UpdateAgent thread.
2013-09-20 22:41:53 +01:00
Justin Clark-Casey (justincc)
c6dea6ee78 Change some message log levels in Scene.IncomingUpdateChildAgent() for debugging purposes 2013-09-20 20:19:44 +01:00
Robert Adams
35a6361b24 BulletSim: reduce avatar walking stopped threshold.
Add parameter for setting the walking stopped threshold.

This fixes the slight jump when an avatar stops walking.
2013-09-20 09:58:45 -07:00
Robert Adams
07d7a5fd76 BulletSim: zero velocity when avatar not moving.
This fixes a movement jitter that happens when an avatar is standing on a
tilted surface.
2013-09-20 09:58:25 -07:00
Justin Clark-Casey (justincc)
c06a9ffe5c Make new regions PG by default instead of Mature.
This makes scripted object sounds and a few other things play by default instead of having to switch the viewer to adult
This reduces the support burden
2013-09-20 00:04:33 +01:00
Oren Hurvitz
f1267730ef UUID Gatherer: find assets used in Light Projection, Particle Systems, and Collision Sounds. 2013-09-19 23:01:06 +01:00
Justin Clark-Casey (justincc)
979b17165b For debug purposes, allow simulators to force use of earlier SIMULATION/0.1 teleport protocol even if SIMULATION/0.2 is available.
This is specified in the MaxOutgoingTransferVersion attribute of [EntityTransfer] in OpenSim.ini, see OpenSimDefaults.ini for more details.
Default remains "SIMULATION/0.2"
Primarily for http://opensimulator.org/mantis/view.php?id=6755
2013-09-19 22:45:50 +01:00
Justin Clark-Casey (justincc)
b6f10780c2 minor: Make SP.MakeRootAgent() private - no external code has any business calling this method 2013-09-19 21:44:30 +01:00
Justin Clark-Casey (justincc)
03b2b5b77b minor: Make log message at top of ScenePresence.CompleteMovement info level and comment out later log message in ScenePresence.MakeRootAgent()
Need an info message since this is currently important in detecting teleport issue when not at debug log level.
CompleteMovement message occurs before MakeRootAgent() one did
2013-09-19 20:59:27 +01:00
Justin Clark-Casey (justincc)
6bdef1f70b minor: Stop debug logging whenever an npc is moved, other npc log related formatting cleanups 2013-09-19 20:49:55 +01:00
Justin Clark-Casey (justincc)
3a9a8d2113 Revert "Also check user authorization if looking to upgrade from a child to a root agent."
This reverts commit c7ded0618c.
This proves not to be necessary - the necessary checks are already being done via QueryAccess() before cross or teleport
2013-09-19 20:26:26 +01:00
Justin Clark-Casey (justincc)
83c113896e Create regression TestCrossOnSameSimulatorNoRootDestPerm() to check that avatars are not allowed to cross into a neighbour where they are not authorized, even if a child agent was allowed. 2013-09-19 20:26:08 +01:00
Justin Clark-Casey (justincc)
997700c4aa minor: Make config-include .ini files more consistent
Chiefly tabs to spaces.
No actual setting changes
2013-09-18 23:49:27 +01:00
Justin Clark-Casey (justincc)
ac0a527976 Add [SimulationService] section to GridHypergrid.ini and StandaloneHypergrid.ini
This was already in Grid.ini and Standalone.ini
Default settings are same as previously, just introduce a debug ConnectorProtocolVersion parameter
2013-09-18 23:27:37 +01:00
Justin Clark-Casey (justincc)
8999f06025 minor: correct method name in comment 2013-09-18 23:13:31 +01:00
Justin Clark-Casey (justincc)
ddcbd4bb7d refactor: rename *ChildAgentDataUpdate() methods to *UpdateChildAgent()
verb-noun is consistent with other similar methods
2013-09-18 23:09:38 +01:00
Justin Clark-Casey (justincc)
3ce46adb2a minor: Make log message when Scene.IncomingChildAgentDateUpdate() more explicit that there is a problem if it still finds the agent to be a child if the sender wanted to wait till it became root
Add some comments about the mssage sequence, though much more data is at
http://opensimulator.org/wiki/Teleports
2013-09-18 22:56:00 +01:00
Justin Clark-Casey (justincc)
f4d82a56f4 Double the time spent waiting for a UseCircuitCode packet in LLUDPServer.HandleCompleteMovementIntoRegion()
This is to deal with one aspect of http://opensimulator.org/mantis/view.php?id=6755
With the V2 teleport arrangements, viewers appear to send the single UseCircuitCode and CompleteAgentMovement packets immediately after each other
Possibly, on occasion a poor network might drop the initial UseCircuitCode packet and by the time it retries, the CompleteAgementMovement has timed out and the teleport fails.
There's no apparant harm in doubling the wait time (most times only one wait will be performed) so trying this.
2013-09-18 22:09:46 +01:00
Justin Clark-Casey (justincc)
7dbc93c62a Change logging to provide more information on LLUDPServer.HandleCompleteMovementIntoRegion()
Add more information on which endpoint sent the packet when we have to wait and if we end up dropping the packet
Only check if the client is active - other checks are redundant since they can only failed if IsActve = false
2013-09-18 21:41:51 +01:00
Justin Clark-Casey (justincc)
1d2466889a Reinstate insertion of "Unknown UserUMMAU4" now, as naive removing may be generating too many repeating user requests from other sources.
Leaves in the dropping of the client GUN8 (now 9) uuid binding message, since this was the much more common case from the viewer-side and this can only affect viewers.
2013-09-17 01:20:55 +01:00
Justin Clark-Casey (justincc)
845d2b193a Comment out warning about no grid user found in UMM.TryGetUserNamesFromServices() for now 2013-09-17 00:54:53 +01:00
Justin Clark-Casey (justincc)
69ec85f491 Fix issue in recent 3f0fa9f7 where the code start adding unknown user cache entries with no name 2013-09-17 00:02:36 +01:00
Justin Clark-Casey (justincc)
2603a2891b Reinsert comments about possible race conditions when sending bulk inventory updates on non-flag clothing editing 2013-09-16 23:26:13 +01:00
Justin Clark-Casey (justincc)
f99dae03cb Fix bug where using PRIM_LINK_TARGET with only two remaining list items (e.g. link number then PRIM_ROTATION) would not return the parameter
Extended regression test for this case
2013-09-16 23:00:40 +01:00
Justin Clark-Casey (justincc)
60cf42cb8d Make llGetLinkPrimitiveParams() abort and return existing list of params when it encounters an invalid link number, rather than throwing an exception
Addresses http://opensimulator.org/mantis/view.php?id=6768
Thanks to talun for the patch on that commit - in the end I took a different approach that also deals with invalid PRIM_LINK_TARGET
However, not yet generating the same warning on invalid PRIM_LINK_TARGET as seen on LL grid
This commit also adds regression tests for some cases of llGetLinkPrimitiveParams()
2013-09-16 22:56:08 +01:00
Justin Clark-Casey (justincc)
3f0fa9f707 To avoid viewers (particularly on the Hypergrid) from permanently caching a UUID -> "Unknown User" binding, drop the binding request rather than replying with "Unknown User"
By not binding UUID -> "Unknown User", we leave open the possibility that the binding may be correctly resolved at a later time, which can still happen in some Hypergrid situations.
Observed behaviour of LL viewer 3.3.4 is that a dropped bind request is not retried until the next session.
2013-09-16 19:45:42 +01:00
Justin Clark-Casey (justincc)
53de6d94ea minor: replace spaces with tabs for see_into_region setting 2013-09-12 23:38:50 +01:00
Talun
07d6a0385f 6762: llList2Key fails to convert a string in a list to a key
llGetPrimitiveParams changed to return the sculpty key as an LSL_String so
that type checking in llList2Key will work
2013-09-12 23:23:52 +01:00
Robert Adams
2d7adcb22f BulletSim: update DLLs and SOs to disable Bullet's internal profiling.
This was accidentily left on. This version should make performance better
and fix the memory leak.
2013-09-12 13:07:18 -07:00
BlueWall
3c85afbb43 Allow setting the EntityTransfer-max_distance to 0 to override distance checks. This is to facilitate current viewer work fixing the distance limitations for teleporting. 2013-09-12 11:46:12 -04:00
Robert Adams
dacc20ee48 BulletSim: remove collision cache clearing logic for physical objects.
This fixes constraints from getting messed up when properties change.
2013-09-11 16:50:27 -07:00
Mic Bowman
b29e9d37e7 Change handling of the FetchInventoryDescendents2 capability configuration to allow
for external handlers.
2013-09-11 12:15:16 -07:00
Robert Adams
8bcf753127 BulletSim: update DLLs and SOs with ClearCollisionCache inteface calls
and constraint debugging messages.
2013-09-11 09:12:26 -07:00
Robert Adams
6e39cc316f BulletSim: add ClearCollisionProxyCache function to API.
Add proxy cache clearing when some properties are changed. This fixes
a problem where objects would stop colliding of they were moved
with setPosition mulitple times.
2013-09-11 09:12:24 -07:00
Robert Adams
e34385634b BulletSim: update DLLs and SOs for spring parameters and constraint
debugging dump code.
2013-09-11 09:12:22 -07:00
Robert Adams
c5eabb28b4 BulletSim: add LSL function and plumbing for setting a spring
equilibrium point in the physics engine constraint.
2013-09-11 09:12:19 -07:00
Robert Adams
5827b6e1aa BulletSim: add extended physics LSL constants for axis specification.
Add specific error warnings for mis-matched parameter types in extended
   physics functions.
2013-09-11 09:12:18 -07:00
Robert Adams
cf2cdc191d BulletSim: ability to specify groups of axis to modify in constraint parameters that control multiple axis. Add useLinearReferenceFrameA constraint parameter. 2013-09-11 09:12:16 -07:00
Robert Adams
7c54630a2d BulletSim: add axis parameter for specifying enable, damping, and stiffness for spring constraints. Renumber parameter ops since I can as no one is using them yet. 2013-09-11 09:12:14 -07:00
Robert Adams
30b3657a66 BulletSim: implementation of setting spring specific physical parameters. Add setting of linkset type to physChangeLinkParams. Lots of detail logging for setting of linkset constraint parameters. 2013-09-11 09:12:12 -07:00
Robert Adams
67195618d5 BulletSim: add requestor's ID to post taint detail log message. 2013-09-11 09:12:10 -07:00
Robert Adams
3dbf4a1002 BulletSim: remove chatty debug message from previous commit. 2013-09-11 09:12:09 -07:00
Robert Adams
e0b457d3c3 BulletSim: add position and rotation update for child prim physics update events. Normally, physics engines do not return updates for child prims so, under normal operation, this code should never execute. Will only be used when using flexible linkset linkages. 2013-09-11 09:12:07 -07:00
Robert Adams
d09c35f506 BulletSim: pass both root and child BSPhysObjects to Extension function. Update routines to use the new parameters list from above change. 2013-09-11 09:12:05 -07:00
Robert Adams
995314f91f BulletSim: add ID parameter to TaintedObject calls so logging will include LocalID of object which created the taint. 2013-09-11 09:12:03 -07:00
Robert Adams
4781297b4e BulletSim: Extension parameters passed through the classes made to pass just and array of objects rather than a mixture of parameters and array. Makes understanding and parsing what is being passed much easier. 2013-09-11 09:12:02 -07:00
Robert Adams
6d83f3f021 BulletSim: adjust avatar capsule height calculation to be closer to defined SL heights. Correct BSParam avatar height defaults to be what's in OpenSimDefaults.ini. 2013-09-11 09:12:00 -07:00
Robert Adams
e1120cb74d BulletSim: add extended physics function physGetLinkType(linkNum). Add implementation of physChangeLinkParams() in BSLinksetConstraint. 2013-09-11 09:11:58 -07:00
Robert Adams
8755aeb348 BulletSim: update DLLs and SOs with Bullet svn version 2644 (no major fixes) and with BulletSim implementing more of the constraint types and parameter settings. 2013-09-11 09:11:56 -07:00
Robert Adams
f6fdfd16f5 BulletSim: change ExtendedPhysics constants to 'const' so they can be used as case variables in switch statements. 2013-09-11 09:11:54 -07:00
Robert Adams
455d36c4c7 BulletSim: add physChangeLinkParams to set individual parameters on link constraints. Not fully functional. Remove double definition of ExtendedPhysics parameters by having BulletSim reference the optional module (addition to prebuild.xml and usings). 2013-09-11 09:11:52 -07:00
Robert Adams
b2a1348adc BulletSim: update C++ HACD parameters to values that handle enclosed hollow spaces better. This shouldn't affect many since this HACD routine is off by default. 2013-09-11 09:11:50 -07:00
Robert Adams
6aee08ac3c BulletSim: add physChangeLinkSpring to change linkset link to be a spring constraint. Add implementation to create spring constraint. Send up property updates for linkset children at the end of flexible linkset links. The simulator probably doesn't do the right thing yet. 2013-09-11 09:11:48 -07:00
Robert Adams
dff0fb5690 BulletSim: Linkset.Refresh() calls internal ScheduleRebuild() to recreate the linkset physics at next PostTaint time. Replace the existing calls to ScheduleRebuild to be calls to Refresh(). This allows external routines to make changes to parameters and then cause the linkset to rebuild. 2013-09-11 09:11:46 -07:00
Robert Adams
f3cc20050e BulletSim: initial implementation of physChangeLinkFixed that resets a linkset's link back to a fixed, non-moving connection. 2013-09-11 09:11:45 -07:00
Robert Adams
c6a6631efc BulletSim: move linkset extension operations into BSPrimLinkable where they should be. 2013-09-11 09:11:43 -07:00
Robert Adams
993bcec088 BulletSim: add unmanaged and XNA functions for hinge, slider and spring constraints. 2013-09-11 09:11:41 -07:00
Robert Adams
0971c7ae77 BulletSim: complete linkage of spring constraint into linkset constraint. 2013-09-11 09:11:39 -07:00
Robert Adams
9a7d0e489c BulletSim: add spring constraint to linkset constraint types. 2013-09-11 09:11:37 -07:00
Robert Adams
48ee73bfa7 BulletSim: add API and calls for spring constraint parameters. 2013-09-11 09:11:36 -07:00
Robert Adams
725751fd6c BulletSim: fixes for change linkset implementation of physical linksets. 2013-09-11 09:11:34 -07:00
Michael Cerquoni
663059ac5c chaning the default max_distance to 16383 as we actually start counting at zero, thank you dahlia for pointing this out. 2013-09-10 19:56:39 -04:00
Michael Cerquoni
ec5f17b2ce This extends the default max_distance for teleports to 16384, a big thank you to all of the viewer devs who made this possibe! 2013-09-10 18:35:02 -04:00
Robert Adams
b05cb3b2bf Change collision logic in SceneObjectPart so land_collision will happen.
The previous logic would generate land_collision_start and land_collision_end
but would not generate the land_collision itself.
2013-09-09 14:50:33 -07:00
BlueWall
a97f6f8668 Fix configuration/ini expansion issue. Thanks to smxy for testing. 2013-09-07 13:11:31 -04:00
Diva Canto
08874d6b9e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-09-05 07:44:49 -07:00
Diva Canto
04619a9b13 Restore group membership check for HG users in QueryAccess. 2013-09-05 07:44:27 -07:00
Justin Clark-Casey (justincc)
b858be345a minor: add doc about DefaultHGRegion and some of the other GridService region settings (though not all as of yet) 2013-09-05 00:41:03 +01:00
Justin Clark-Casey (justincc)
dc74a50225 Stop "show client stats" from throwing an exception if somehow Scene.m_clientManager still retains a reference to a dead client.
Instead, "show client stats" now prints "Off!" so that exception is not thrown and we know which entries in ClientManager are in this state.
There's a race condition which could trigger this, but the window is extremely short and exceptions would not be thrown consistently (which is the behaviour observed).
It should otherwise be impossible for this condition to occur, so there may be a weakness in client manager IClientAPI removal.
2013-09-04 23:48:24 +01:00
Justin Clark-Casey (justincc)
c7ded0618c Also check user authorization if looking to upgrade from a child to a root agent.
Relevant if a child agent has been allowed into the region which should not be upgraded to a root agent.
2013-09-04 00:44:17 +01:00
Justin Clark-Casey (justincc)
5f0d54c209 For a Hypergrid user, delay estate access checks until NewUserConnection() so that they work.
This is necessary because the hypergrid groups checks (as referenced by estates) require an agent circuit to be present to construct the hypergrid ID.
However, this is not around until Scene.NewUserConnection(), as called by CreateAgent() in EntityTransferModule.
Therefore, if we're dealing with a hypergrid user, delay the check until NewUserConnection()/CreateAgent()
The entity transfer impact should be minimal since CreateAgent() is the next significant call after NewUserConnection()
However, to preserve the accuracy of query access we will only relax the check for HG users.
2013-09-04 00:42:23 +01:00
Justin Clark-Casey (justincc)
b781a23c44 In pCampbot PhysicsBehaviour.Close(), only cancel jumping if bot is connected 2013-09-03 19:58:27 +01:00
Justin Clark-Casey (justincc)
9c3c9b7f5f Make pCampbot "add behaviour" and "remove behaviour" console commands work for all bots if no bot number is given 2013-09-03 19:57:34 +01:00
Justin Clark-Casey (justincc)
76bd2e2d72 Consistently give responsibility for thread sleeping to behaviours rather than controlling from the main action loop
This is to avoid excessive and inconsistent delays between behaviours that currently need to embed sleeps in other actions (e.g. physics) and other behaviours.
Might need a more sophisticated approach in the long term.
2013-09-03 19:41:12 +01:00
Justin Clark-Casey (justincc)
3dbe7313d1 Add Close() method to IBehaviour to allow behaviours to cleanup when removed or bot it disconnected.
In this case, it is used to turn off jump when physics testing behaviour is removed.
2013-09-03 19:33:17 +01:00
Justin Clark-Casey (justincc)
1a2627031d Add pCampbot "remove behaviour" console command for removing bot behaviours during operation.
Doesn't currently work very well as stopping physics, for instance, can leave bot travelling in old direction
2013-09-03 19:05:54 +01:00
Justin Clark-Casey (justincc)
9bd6271570 Add ability to adjust pCampbot bot behaviours whilst running with "add behaviour <behaviour-name> <bot-number>" console commad 2013-09-03 18:51:55 +01:00
Justin Clark-Casey (justincc)
01cb8033a4 And fix break in "show bot" from commit 9c65207 2013-09-03 17:55:20 +01:00
Justin Clark-Casey (justincc)
a89c56dcf1 Fix build break from last commit 9c65207. Mono 2.4 lacks string.join(string, List<string>), or some auto casting is missing 2013-09-03 17:53:29 +01:00
Justin Clark-Casey (justincc)
9c65207936 Show behaviours of pCampbot bots in "show bots" and "show bot" console commands 2013-09-03 17:07:57 +01:00
Justin Clark-Casey (justincc)
431156f6c4 minor simplification of some unix date functions in Util. No functional change. 2013-09-03 00:17:50 +01:00
Justin Clark-Casey (justincc)
5f15ee95dc Fix logic errors in "show grid users online" console command which didn't actually filter out users shown continuously online for more than 5 days
Remove confusion in command output.
2013-09-03 00:16:43 +01:00
Justin Clark-Casey (justincc)
fc9f50d940 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-09-03 00:06:50 +01:00
Justin Clark-Casey (justincc)
4035badd20 Add experimental "show grid users online" console command to show grid users online from a standalone/robust instance.
This is not guaranteed to be accurate since users may be left "online" in certain situations.
For example, if a simulator crashes and they never login/logout again.
To counter this somewhat, only users continuously online for less than 5 days are shown.
2013-09-03 00:04:12 +01:00
BlueWall
9643915093 Remove test that gives issue on Windows, just let the try/catch do the work. 2013-09-02 16:28:40 -04:00
Justin Clark-Casey (justincc)
857f24a5e2 Fix bug where users teleporting to non-neighbour regions could continue to hear chat from their source region for some time after teleport completion.
This occurs on v2 teleport since the source region now waits 15 secs before closing the old child agent, which could still receive chat.
This commit introduces a ScenePresenceState.PreClose which is set before the wait, so that ChatModule can check for ScenePresenceState.Running.
This was theoretically also an issue on v1 teleport but since the pause before close was only 2 secs there, it was not noticed.
2013-09-02 19:15:10 +01:00
Justin Clark-Casey (justincc)
5ce5ce6edb Comment out warning about agent updating without valid session ID for now.
This causes extreme console spam if a simulator running latest master and one running 0.7.5 have adjacent regions occupied by avatars.
2013-09-02 17:45:38 +01:00
Justin Clark-Casey (justincc)
4cbadc3c49 Allow one to specify a DefaultHGRegion flag in [GridService] in order to allow different default regions for HG and direct grid logins.
This requires a new GridService.GetDefaultHypergridRegions() so ROBUST services require updating but not simulators.
This method still returns regions flagged with just DefaultRegion after any DefaultHGRegions, so if no DefaultHGRegions are specified
then existing configured defaults will still work.
Immediate use is for conference where we need to be able to specify different defaults
However, this is also generally useful to send experienced HG users to one default location and local users whose specified region fails (e.g. no "home" or "last") to another.
2013-09-02 17:27:45 +01:00
BlueWall
56f565b601 Profiles: Clean up some log entries caused when visiting HG avatar is using legacy profiles 2013-08-29 16:54:13 -04:00
BlueWall
a8c0e16e47 Initialization: move key expansion out to operate on all sources and not just environment variables 2013-08-29 14:35:56 -04:00
Robert Adams
aa521fb385 Do not add a port zero to end of the hypergrid gateway host name.
If the port is specified it is added but a ":0" is not added if the port is zero.
This enables the hypergrid address short form "hypergridGateway:regionName"
which is handled by the parser but failed because of this zero port addition.
2013-08-28 16:38:07 -07:00
Robert Adams
0882cf0fc3 BulletSim: add some protections for processing when shutting down.
Attempt to fix Mantis 6740 (http://opensimulator.org/mantis/view.php?id=6740).
2013-08-27 09:55:50 -07:00
Justin Clark-Casey (justincc)
0dd9a68eb7 Revert "Make HG logins fall back to fallback regions if the desired region fails."
This is very similar to my earlier revert in bcb8605f84 and fails for the same reasons.
Reverting this change because it causes a problem if access is denied to the user.
This reverts commit c7a8afbb8d.
2013-08-26 21:07:49 +01:00
Justin Clark-Casey (justincc)
1b2830b929 Revert "Added some more debug messages."
Fallback doesn't work at this level as the change of destination isn't communicated to the source region/viewer
Reverting because this introduces a bug when access does fail.
More detail in revert of main commit.

This reverts commit ec32c1d4b6.
2013-08-26 21:05:55 +01:00
Justin Clark-Casey (justincc)
60e4ce20b8 Fix exception thrown after a region has been restarted through scheduling.
This exception was very likely harmless since it occurred after the restart had taken place, but still misleading.
Thanks to SCGreyWolf for the code change suggestion in http://opensimulator.org/mantis/view.php?id=6747, though I did this in a slightly different way.
2013-08-25 20:17:04 +01:00
Justin Clark-Casey (justincc)
85824d2cd9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-25 20:12:59 +01:00
Diva Canto
ec32c1d4b6 Added some more debug messages. 2013-08-24 09:59:05 -07:00
Diva Canto
f0c0376660 Potential fix for access control bug on login introduced with SeeIntoRegion commit. 2013-08-24 08:42:41 -07:00
Diva Canto
5cd7bc2848 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-24 03:42:39 -07:00
Diva Canto
c7a8afbb8d Make HG logins fall back to fallback regions if the desired region fails. 2013-08-24 03:41:56 -07:00
Diva Canto
6a24515269 Whitespace fubar. 2013-08-24 03:40:44 -07:00
Robert Adams
c34e6f25b1 Fix a printing of exception error in InventoryArchiveModule that only
printed the error message and not the call stack.
2013-08-23 13:53:47 -07:00
Justin Clark-Casey (justincc)
1a623bb266 Rename pCampbot.ini -> pCampBot.ini (and example file) to be consistent with other capitalizations of pCampBot 2013-08-23 20:58:46 +01:00
Justin Clark-Casey (justincc)
0fbfef9649 minor: shortern warning messages in EntityTransferModule when UpdateAgent() fails 2013-08-23 01:21:03 +01:00
Justin Clark-Casey (justincc)
050617ae0e Make pCampbot "show bot" command take the bot number instead of the full bot name
Shorter and can do this because bot names are uniform
2013-08-23 01:13:19 +01:00
Justin Clark-Casey (justincc)
04f4dd3dc7 remove redundant return at end of HandleDeregisterRegion() 2013-08-23 01:04:03 +01:00
Justin Clark-Casey (justincc)
2be786709b Make it possible for the "deregister region id" command to accept more than one id 2013-08-23 01:03:27 +01:00
Justin Clark-Casey (justincc)
61c20bd06a Remove old and unused ScenePresence.RestoreInCurrentScene() 2013-08-23 00:53:42 +01:00
Justin Clark-Casey (justincc)
065c5839b5 Refactor: merge SceneGraph.AddScenePresence() into CreateAndAddChildScenePresence() since the former was only ever called from the latter
This allows us to remove dead code relating to adding root agents directly to the scenegraph, which never happens.
2013-08-23 00:49:13 +01:00
Justin Clark-Casey (justincc)
a9f9b0da9d minor: Correct typo on "debug stats record start" message 2013-08-23 00:13:31 +01:00
Justin Clark-Casey (justincc)
a0c99a7dcc minor: remove mono compiler warning from LLClientView 2013-08-23 00:03:47 +01:00
Justin Clark-Casey (justincc)
13556cf129 Fix a further bug in pCampbot connect where ignoring already connected bots was wrongly counted as a connect
Also, only sleep when we actually perform a connection
2013-08-22 23:49:19 +01:00
Justin Clark-Casey (justincc)
70f89ae65b Make it possible to adjust the pCampbot login delay via the [BotManager] LoginDelay parameter of pCampbot.ini 2013-08-22 23:43:33 +01:00
Justin Clark-Casey (justincc)
51c7fb1969 Add "set bots" command to make it possible to set SEND_AGENT_UPDATES on all bots whilst pCampbot is running 2013-08-22 23:11:05 +01:00
Justin Clark-Casey (justincc)
beb9d966f9 Stop "handle sit user name" command from trying to sit avatars on objects which have sit positions but are attachments 2013-08-22 22:49:23 +01:00
Justin Clark-Casey (justincc)
416bbe9583 Stop error messages being misleadingly generated when on client connection activity timeout, a root connection triggers a CloseAgent to a neighbour region which has already closed the agent due to inactivity.
Also separates out log messages to distinguish between close not finding an agent and wrong auth token, and downgrades former to debug and latter to warn
2013-08-22 22:46:40 +01:00
Justin Clark-Casey (justincc)
66a7dc3a0d In pCampbot, don't try and reconnect bots that are already connected on console "connect" command 2013-08-22 20:12:14 +01:00
Justin Clark-Casey (justincc)
832c35d4d5 Stop "sit user name" and "stand user name" console commands from trying to sit/stand avatars already sitting/standing 2013-08-22 20:05:57 +01:00
Justin Clark-Casey (justincc)
689cf2d367 minor: Make logging in GatekeeperService.LoginAgent() a bit more detailed so that we can distinguish between simultaneous logins 2013-08-22 01:24:55 +01:00
Justin Clark-Casey (justincc)
bcb8605f84 Revert "Implement ability for hg logins to try fallback regions just like local logins."
This approach does not work - it is taking place too far down the login process where really the region checking
could only be done when the hg map tiles are linked on the main map (messy and probably impossible) or possibly
when the final destination is fetched at the very first stage of teleport (which couldn't be done without a protocol
change to pass the agentID as well as the requested regionID)

This reverts commit 3d9b73c47a.
2013-08-22 01:20:01 +01:00
Justin Clark-Casey (justincc)
3d9b73c47a Implement ability for hg logins to try fallback regions just like local logins.
These would be specified in the [GridService] section of Robust.HG.ini, which already lists these in the example text.
Untested patch so that Neb can easily pull in for testing, though shouldn't disrupt existing hg logins since fallback processing is a bit of code stuck on the end of the login sequence.
2013-08-21 23:19:31 +01:00
Justin Clark-Casey (justincc)
1f39a763a5 Don't allow users to attempt to sit on objects in a child region without going to that region first.
If this is attempted, they get a "Try moving closer.  Can't sit on object because it is not in the same region as you." message instead, which is the same as current ll grid.
Sitting on ground is okay, since viewer navigates avatar to required region first before sitting.
2013-08-21 21:35:03 +01:00
teravus
a6af561660 * Fix some threading issues in BulletXNA (the managed bullet library), this should better allow you to run it in multiple region scenarios (but why would you really want to do that?) Source in OpenSimLibs.
* Fixed a null ref during shutdown.
2013-08-20 21:09:17 -05:00
Justin Clark-Casey (justincc)
4a81465b91 Fix build break from last commit a3e1b27 on mono 2.4.3
Looks like this level of mono doesn't have a string.Join() which will take a list rather than an array (or some implicit conversion isn't happening)
2013-08-20 18:47:52 +01:00
Justin Clark-Casey (justincc)
a3e1b278a1 Add pCampbot "show bot" console command to show more detailed information on a particular bot (e.g. what sims they are connected to) 2013-08-20 18:41:09 +01:00
Justin Clark-Casey (justincc)
43940f6562 Add --regex options to "sit user name" and "stand user name" console commands to sit/stand many avatars at once.
Currently, first name and last name are input separate but are concatenated with a space in the middle to form a regex.
So to sit all bots with the first name "ima", for instance, the command is "sit user name --regex ima .*"
2013-08-20 18:13:40 +01:00
Justin Clark-Casey (justincc)
e384ff604e Add experimental "sit user name" and "stand user name" console commands in SitStandCommandsModule.
"sit user name" will currently only sit the given avatar on prims which have a sit target set and are not already sat upon.
Chiefly for debug purposes.
2013-08-20 17:43:02 +01:00
Justin Clark-Casey (justincc)
56d1d67a34 Add pCampbot console commands to sit all bots on ground and stand all bots 2013-08-20 17:01:12 +01:00
Justin Clark-Casey (justincc)
a3dd7db4a3 Add -connect (-c) switch to pCampbot command line options.
Now, bots will only connect at startup if this switch is specified.
If it is not specified, then a separate "connect" command is required on the pCampbot command line
2013-08-20 00:08:47 +01:00
Justin Clark-Casey (justincc)
589b1a2eaf Make it possible to reconnect pCampbots with the console command "connect [<n>]".
If no n is given then all available bots are connected
2013-08-19 23:50:18 +01:00
Justin Clark-Casey (justincc)
ea3f024b8a refactor: start bot connection thread within BotManager rather than externally 2013-08-19 21:25:17 +01:00
Justin Clark-Casey (justincc)
079cd4e94f refactor: restructure pCampbot multi-bot connection code. 2013-08-19 21:17:59 +01:00
Justin Clark-Casey (justincc)
2fa42f24fd Make it possible to disconnected a specified number of bots via the pCampbot console command "disconnect [<n>]"
Bots disconnected are ascending from last in numeric order.
Temporarily no way to reconnect bots.
2013-08-19 21:00:31 +01:00
Justin Clark-Casey (justincc)
49b7cbda72 Create a separate pCampbot "disconnect" console command which disconnects connected bots.
"quit" console command now requires bots to be separate disconnected first before quitting.
This is to prepare the way for disconnecting/reconnecting different numbers of bots in a pCampbot session.
And hopefully resolves bug where console appears not to be reset if Environment.Exit(0) is called on a different thread
2013-08-19 20:29:17 +01:00
Justin Clark-Casey (justincc)
ef63abe9b1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-19 20:00:42 +01:00
Justin Clark-Casey (justincc)
a90a5f52dd Show number of connections each bot has established in "show bots" command. 2013-08-19 19:38:20 +01:00
Melanie
3585b0a139 Allow updating the wearable type of wearables that have a type of 0.
This will allow viewers to fix broken wearables as they detect them.
2013-08-18 02:59:10 +01:00
Justin Clark-Casey (justincc)
85a9cb260a Remove mono compiler warnings from UserProfilesModule 2013-08-17 01:10:58 +01:00
Justin Clark-Casey (justincc)
d75f00cc2d minor: remove mono compiler warning from AttachmentsModule 2013-08-17 01:09:31 +01:00
Justin Clark-Casey (justincc)
b3052c425e Remove some mono compiler warnings from OpenSim/Server/Handlers 2013-08-17 01:08:19 +01:00
Justin Clark-Casey (justincc)
f5dbfe99b1 minor: remove mono compiler warnings from OpenSim/Services/Connectors/SimianGrid 2013-08-17 01:06:48 +01:00
Justin Clark-Casey (justincc)
d38d5ecbac minor: remove mono compiler warnings from ScenePresence 2013-08-17 01:00:20 +01:00
Justin Clark-Casey (justincc)
77d418a36d remove mono compiler warnings from PollServiceRequestManager 2013-08-17 00:56:19 +01:00
Justin Clark-Casey (justincc)
217c8deae5 minor: remove mono compiler warning in StatsManager 2013-08-17 00:51:21 +01:00
Justin Clark-Casey (justincc)
1f1736a79f minor: Make log messages consistent in NeighbourServicesConnector 2013-08-17 00:46:18 +01:00
Justin Clark-Casey (justincc)
14ae89dbe7 Fix issues with RemoteAdmin admin_save_heightmap and admin_load_heightmap not working.
This is because they were wrongly looking for both regionid and region_id parameters in the same request.
Now only region_id is required (and recognized), regionid having been already deprecated for some time.
This is essentially Michelle Argus' patch from http://opensimulator.org/mantis/view.php?id=6737 but with tabs replaced with spaces.
Thanks!
2013-08-17 00:39:41 +01:00
Justin Clark-Casey (justincc)
f5d3145bea Add ScenePresenceTeleportTests.TestSameSimulatorIsolatedRegionsV2() regression test for v2 transfers.
Also adjusts names of teleport setup helpers in EntityTransferHelpers
2013-08-17 00:24:56 +01:00
Justin Clark-Casey (justincc)
fbab898f74 Add TestSameSimulatorNeighbouringRegionsV2() regression test for v2 entity transfer protocl 2013-08-16 23:52:55 +01:00
Justin Clark-Casey (justincc)
1624522761 refactor: Make AttachmentModulesTests.TestSameSimulatorNeighbouringRegionsTeleportV2 use already available TestClient handle rather than retrieving it via the ScenePresence 2013-08-16 23:45:04 +01:00
Justin Clark-Casey (justincc)
7d268912f1 Packet headers are not zero-encoded so don't try to zero-decode these in PacketPool.GetType()
Instead adjusts code with that from Packet.BuildHeader(byte[], ref int, ref int):Header in libomv
This stops packet decoding failures with agent UUIDs that contain 00 in their earlier parts (e.g. b0b0b0b0-0000-0000-0000-000000000211)
Thanks to lkalif for pointing this out.
2013-08-16 00:58:25 +01:00
Justin Clark-Casey (justincc)
7c916ab91c Try to make "slow down" message that one could receive on rapid teleporting more informative to the user.
This message is seen on V2 if one attempts to quickly re-teleport from a source region where one had previously teleported to a non-neighbour and back within 15 secs.
The solution here is for the user to wait a short while.
This message can also be seen on any teleport protocol if one recieves multiple teleport attempts simultaneously.  Probably still useful here to help identify misbehaving scripts.
2013-08-15 14:51:54 +01:00
Justin Clark-Casey (justincc)
3ddb7438d7 Move DoNotCloseAfterTeleport flag reset before UpdateAgent in V2 to avoid a low probability where the destination re-establishing the child connection before the flag was reset 2013-08-15 14:41:00 +01:00
Justin Clark-Casey (justincc)
3f8d79024b Rely on the Scene.IncomingCloseAgent() check as to whether the connection should be kept open after teleport-end rather than doing this in the ET Module
This is safer since the close check in IncomingCloseAgent() is done under lock conditions, which prevents a race between ETM and Scene.AddClient()
2013-08-15 14:07:57 +01:00
Justin Clark-Casey (justincc)
2231fcf5b4 Do not use the SP.DoNotCloseAfterTeleport flag for child agent connections.
This approach has problems if a client quits without sending a proper logout but then reconnects before the connection is closed due to inactivity.
In this case, the DoNotCloseAfterTeleport was wrongly set.
The simplest approach is to close child agents on teleport as quickly as possible so that races are very unlikely to occur
Hence, this code now closes child agents as the first action after a sucessful teleport.
2013-08-15 13:46:46 +01:00
Justin Clark-Casey (justincc)
5011c657b5 Actually implement the bot request object textures switch started in 225cf0d.
Forgot to propogate it down to bot level.
2013-08-14 23:37:07 +01:00
Justin Clark-Casey (justincc)
104626d732 minor: Comment out AvatarPicketSearch caps log message for now, which is occuring on every login and entity transfer 2013-08-14 23:22:52 +01:00
Justin Clark-Casey (justincc)
73e3ca670d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-14 23:21:51 +01:00
Justin Clark-Casey (justincc)
60cc9e9a3c minor: remove unused entity transfer config in teleport v2 attachments test 2013-08-14 23:21:18 +01:00
Robert Adams
e8b1e91a1d BulletSim: include check for volume detect in check for zeroing avatar motion.
Normally, avatar motion is zeroed if colliding with a stationary object so
they don't slide down hills and such. Without volume detect check this also
allowed avatars to stand on volume detect objects and to have some jiggling
when they were in the volume detect object. This commit fixes both.
2013-08-14 14:49:24 -07:00
Robert Adams
7c3b71d294 BulletSim: add physical object initialized flag so updates and collisions
don't happen until the object is completely initialized.

This fixes the problem of doing a teleport while the simulator is running.
The destruction of the physical object while the engine is running means
that the physics parameter update would overwrite the new position of the
newly created avatar.
2013-08-14 14:49:22 -07:00
Justin Clark-Casey (justincc)
93dffe1777 Add stat clientstack.<scene>.IncomingPacketsOrphanedCount to record well-formed packets that were not initial connection packets and could not be associated with a connected viewer. 2013-08-14 22:33:12 +01:00
Justin Clark-Casey (justincc)
0d5680e971 Count any incoming packet that could not be recognized as an LLUDP packet as a malformed packet. Record this as stat clientstack.<scene>.IncomingPacketsMalformedCount
Used to detect if a simulator is receiving significant junk UDP
Decimates the number of packets between which a warning is logged and prints the IP source of the last malformed packet when logging
2013-08-14 22:08:28 +01:00
Justin Clark-Casey (justincc)
2c67aa0f41 If pCampbot has been asked to shutdown, don't carry on logging in queued bots 2013-08-14 21:08:00 +01:00
Justin Clark-Casey (justincc)
225cf0d010 Add pCampbot RequestObjectTextures ini setting to control whether textures are requested for received objects. 2013-08-14 19:53:10 +01:00
Justin Clark-Casey (justincc)
fd519748e9 Add method doc to Scene.RemoveClient() to ask any callers to use Scene.IncomingCloseAgent() instead.
IncomingCloseAgent() now sets the scene presence state machine properly, which is necessary to avoid races between multiple sources of close.
Hence, it's also necessary for everyone to consistently call IncomingCloseAgent()
Calling RemoveClient() directly is currently generating an attention-grabbing exception though this right now this is harmless.
2013-08-14 19:36:52 +01:00
Justin Clark-Casey (justincc)
97c514daa5 Shutdown a bot's actions by making it check for disconnecting state rather than aborting the thread.
Aborting the thread appears to be causing shutdown issues.
2013-08-14 19:21:07 +01:00
Justin Clark-Casey (justincc)
3a62f39044 Add a -form switch to pCampbot to allow one to login a sequence of bots starting from numbers other than 0 2013-08-14 18:26:11 +01:00
Justin Clark-Casey (justincc)
2146b20169 Add the ability to explicitly specify a login start location to pCampbot via the -start parameter 2013-08-14 16:51:51 +01:00
Robert Adams
0feb5da31e BulletSim: move the creation of the avatar movement actor creating to
taint time. Attempt to fix a problem of teleporting within the same
region where the remove and addition of the physical avatar occasionally
ends up with a non-moving avatar.
2013-08-13 21:06:24 -07:00
Justin Clark-Casey (justincc)
5933f9448d Add a SendAgentUpdates setting to a new pCampbot.ini.example file which can control whether bots send agent updates
pCampbot.ini.example is used by copying to pCampbot.ini, like other ini files
2013-08-13 23:54:50 +01:00
Justin Clark-Casey (justincc)
e311f902ff minor: Eliminate one of the duplicate 'have's in the HG message telling the user if no GroupsServerURI has been given in user data by the home grid 2013-08-13 20:13:12 +01:00
Robert Adams
a90351cd2c Remove exception when printing error for failure removing script state. 2013-08-13 11:49:09 -07:00
Justin Clark-Casey (justincc)
4f8c691f8c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-12 22:57:32 +01:00
Justin Clark-Casey (justincc)
c49ea491a3 Make show bots pCampbot console command print connected, connecting, etc. bot totals at end. 2013-08-12 22:49:17 +01:00
Robert Adams
2c31fe4614 BulletSim: add check in avatar stair step code to verify the collision
is not with a volume detect object.

This fixes a problem of avatars trying to step over a volume detect object
that they collide with. This appeared as the avatar popping up as it started
to step up but then continuing on since the object wasn't physically interacting.
2013-08-12 13:44:53 -07:00
Justin Clark-Casey (justincc)
377fe63c60 Don't try and send group updates to NPCs via event queue, since NPCs have no event queue.
I think there is an argument for sending this information to NPCs anyway since in some cases it appears a lot easier to write server-side bots by hooking into such internal events.
However, would need to stop event messages building up on NPC queues if they are never retrieved.
2013-08-12 21:02:50 +01:00
Justin Clark-Casey (justincc)
f3edc0d8b7 minor: Extend warning message when adding trying to add an event for a client without a queue to include the event message name. 2013-08-12 19:38:23 +01:00
Justin Clark-Casey (justincc)
de6ad380f6 Get rid of issue where removing NPCs would through an exception by routing close through Scene.IncomingCloseAgent() and NPCAvatar.Close() rather than directly to Scene.RemoveClient().
This exception was actually harmless since it occurred at the very last stage of the remove client process.
2013-08-12 19:31:45 +01:00
Justin Clark-Casey (justincc)
e5b1688913 Add none behaviour to pCampbot when one wants bots to just stand around 2013-08-12 18:48:18 +01:00
Justin Clark-Casey (justincc)
b64d3ecaed Create TestSameSimulatorNeighbouringRegionsTeleportV2() regression test for V2 transfer protocol. 2013-08-12 18:15:12 +01:00
Robert Adams
216f5afe54 Stats treaking. Update ToOSDMap for Stat and PercentageStat to return
all the various numbers that have been added to the console output.
Break out EventHistogram from CounterStat.
2013-08-10 09:09:52 -07:00
Justin Clark-Casey (justincc)
23ca1f859e minor: Consistently log IOCP for IO completion thread startup log information instead of mixing this with "IO Completion Threads" 2013-08-09 18:27:26 +01:00
Justin Clark-Casey (justincc)
bfdcdbb2f3 Increase wait for source region to sent UpdateAgent to 10 seconds instead of 4.
This is giving much better results on teleports between simulators over my lan where for some reason there is a pause before the receiving simulator processes UpdateAgent()
At this point, v2 teleports between neighbour and non-neighbour regions on a single simulator and between v2 simulators and between a v1 and v2 simulator
are working okay for me in different scenarios (e.g. simple teleport, teleport back to original quickly and re-teleport, teleport back to neighbour and re-teleport. etc.)
2013-08-09 17:59:58 +01:00
Justin Clark-Casey (justincc)
aec7019728 Add missing file from b1c26a56 2013-08-09 17:57:24 +01:00
Justin Clark-Casey (justincc)
97bcb59bee Merge branch 'TeleportWork' 2013-08-09 17:52:29 +01:00
Justin Clark-Casey (justincc)
6fcbf219da Comment back out seed dump code enabled in b1c26a56. Also adds a few teleport comments. 2013-08-09 17:48:35 +01:00
Diva Canto
2cdcf62b48 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-09 08:31:30 -07:00
Diva Canto
7e01213bf2 Go easy on enforcing session ids in position updates 2013-08-09 08:31:15 -07:00
Justin Clark-Casey (justincc)
99bce9d877 Fix an issue with an A->C->B->A teleport where these regions are in a row (A,B,C) where the A root agent is still closed, terminating the connection.
This was occuring because teleport to B did not set DoNotCloseAfterTeleport on A as it was a neighbour (where it isn't set to avoid the issue where the source region doesn't send Close() to regions that are still neighbours (hence not resetting DoNotCloseAfterTeleport).
Fix here is to still set DoNotCloseAfterTeleport if scene presence is still registered as in transit from A
2013-08-09 00:24:22 +01:00
Justin Clark-Casey (justincc)
b1c26a56b3 Fix an issue where under teleport v2 protocol, teleporting from regions in an line from A->B->C would not close region A when reaching C
The root cause was that v2 was only closing neighbour agents if the root connection also needed a close.
However, fixing this requires the neighbour regions also detect when they should not close due to re-teleports re-establishing the child connection.
This involves restructuring the code to introduce a scene presence state machine that can serialize the different add and remove client calls that are now possible with the late close of the
This commit appears to fix these issues and improve teleport, but still has holes on at least quick reteleporting (and possibly occasionally on ordinary teleports).
Also, has not been completely tested yet in scenarios where regions are running on different simulators
2013-08-08 23:29:30 +01:00
Robert Adams
6410a25cef BulletSim: adjust avatar position when the avatar's size is changed.
This fixes the problem of avatars bouncing when logged in.
Added a little height to the avatar height fudges to eliminate a problem
of feet being in the ground a bit.
2013-08-08 13:55:17 -07:00
Dan Lake
9fc97cbbf7 Make m_originRegionID in ScenePresence public to allow DSG module to work for now. Once the code churn on teleport ends, I can find a better solution 2013-08-08 12:44:03 -07:00
Robert Adams
d9bd6e6b5b Add parameter and explanation of ManagedStats return to OpenSimDefaults.ini.
Add 'callback' query parameter to managed stats return to return function
form of JSON data.
2013-08-08 09:45:30 -07:00
Robert Adams
c67c55e0fc Better error reporting when registering LSL function extensions (comms module).
For unknown reasons, a dynamic function signature cannot have more than 5
parameters. Error message now tells you this fact so you can curse MS and
then go change your function definitions.
2013-08-08 09:45:16 -07:00
Robert Adams
50c163ae6c Add a JSON web fetch of the statististics managed by StatsManager.
Disabled by default. Enable by setting
[Startup]ManagedStatsRemoteFetchURI="Something"
and thereafter "http://ServerHTTPPort/Something/" will return all the managed
stats (equivilent to "show stats all" console command).
Accepts queries "cat=", "cont=" and "stat=" to specify statistic category,
container and statistic names. The special name "all" is the default and returns
all values in that group.
2013-08-08 09:45:01 -07:00
teravus
4e86674a3a * Added set water height <height> [<x>] [<y>] console command following the set terrain heights console command as an example. 2013-08-07 23:33:23 -05:00
teravus
99a4a91488 * This makes in-world terrain editing smoother, even in MegaRegions. This change only affects the editing user's experience. Non-editing users will see nothing different from the current 'slow' result. See comments for the thought process and how the issues surrounding terrain editing, cache, bandwidth, threading, terrain patch reliability and throttling were balanced. 2013-08-07 21:22:04 -05:00
Justin Clark-Casey (justincc)
ce1361f2fe minor: Remove console lines at bottom of FakeParcelIDTests() regression test that were accidentally left in 2013-08-08 01:07:30 +01:00
Kevin Cozens
64216b34a4 Fixed error in BuildFakeParcelID() which was detected by regression tests. 2013-08-08 01:02:04 +01:00
Kevin Cozens
43da879ea2 Added regression tests for the routines related to fake parcel IDs. 2013-08-08 00:59:55 +01:00
Kevin Cozens
e4da8d74d8 Additional regression tests for the location routines in Location.cs 2013-08-08 00:56:13 +01:00
Justin Clark-Casey (justincc)
638c3d25b0 Remove never implemented stub modules commands (list, load, unload) from back in 2009.
"show modules" is the functional console command that will show currently loaded modules.
Addresses http://opensimulator.org/mantis/view.php?id=6730
2013-08-08 00:48:22 +01:00
Justin Clark-Casey (justincc)
b10710d4a5 minor: add some method doc to ScenePresence fields used for entity transfer, add minor details to some log messages, rename a misleading local variable name.
No functional changes.
2013-08-07 23:17:31 +01:00
Justin Clark-Casey (justincc)
a33a1ac958 Add post-CreateAgent teleport cancellation/abortion functionality from v1 transfer protocol into v2.
This stops OpenSimulator still trying to teleport the user if they hit cancel on the teleport screen or closed the viewer whilst the protocol was trying to create an agent on the remote region.
Ideally, the code may also attempt to tell the destination simulator that the agent should be removed (accounting for issues where the destination was not responding in the first place, etc.)
2013-08-07 18:52:30 +01:00
Diva Canto
dbd773e89e Amend to last commit -- remove the obsolete var from OpenSim.ini.example 2013-08-07 10:04:53 -07:00
Diva Canto
6b9a65972c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-07 08:02:36 -07:00
Diva Canto
3194ffdab8 Fixed incomplete commit r/23317 -- see_into_region. Put the guard around estate bans also, and delete the obsolete config var. 2013-08-07 08:01:59 -07:00
Justin Clark-Casey (justincc)
d6d5d4ebd0 Add file missing from last commit 4c2f6de 2013-08-06 18:32:16 +01:00
Justin Clark-Casey (justincc)
4c2f6de8e4 Add the experimental ability to dump stats (result of command "show stats all") to file OpenSimStats.log every 5 seconds.
This can currently only be activated with the console command "debug stats record start".
Off by default.
Records to file OpenSimStats.log for simulator and RobustStats.log for ROBUST
2013-08-06 18:29:33 +01:00
Justin Clark-Casey (justincc)
ac198068ab Add "debug threadpool status" console command to show min/max/current worker/iocp threadpool numbers 2013-08-06 00:00:12 +01:00
Justin Clark-Casey (justincc)
4581bdd929 Add "debug comms status" command to show current debug comms settings 2013-08-05 23:49:33 +01:00
Justin Clark-Casey (justincc)
9bcf072795 Make it possible to switch whether we serialize osd requests per endpoint or not, either via config (SerializeOSDRequests in [Network]) or via the "debug comms set" console command.
For debug purposes to assess what impact this has on network response in a heavy test environment.
2013-08-05 23:44:48 +01:00
Justin Clark-Casey (justincc)
f9dc5815c4 For LLImageManagerTests, make tests execute under synchronous fire and forget conditions.
I generally prefer this approach for regression tests because of the complexity of accounting for different threading conditions.
2013-08-05 23:15:30 +01:00
Justin Clark-Casey (justincc)
139dcf1246 minor: move "threads abort" and "force gc" console commands into debug category - these are not things one needs to do in normal operation 2013-08-05 23:06:17 +01:00
Justin Clark-Casey (justincc)
76e778fe2c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-05 23:05:12 +01:00
Justin Clark-Casey (justincc)
160659f683 Make it possible to set worker/iocp min/max threadpool limits on the fly with the console command "debug threadpool set" 2013-08-05 23:04:36 +01:00
Diva Canto
2d3ac2b1ec Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-05 14:21:39 -07:00
Diva Canto
946b370966 Child agent updates: remove the dependency on the root agent's camera position. That was a complete overkill that is unnecessary at this point. 2013-08-05 14:21:17 -07:00
Justin Clark-Casey (justincc)
24dcf3cf6a Comment out debug log lines about script modules comms for now.
If this is an issue, could change log4net config instead to allow re-enablement
2013-08-05 20:51:40 +01:00
Justin Clark-Casey (justincc)
b8612e005a At OpenSimulator startup, print out default min built-in threadpool threads as well as max.
Make it clear that we only try to adjust max, and log at warn level if this fails.
Other minor logging cleanup.
2013-08-05 20:47:47 +01:00
Justin Clark-Casey (justincc)
151a8ca0cc Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-05 20:37:27 +01:00
Justin Clark-Casey (justincc)
7f0d9ad644 Make test AssetsClient print out more information about any failure to set thread numbers and immediate post config thread numbers 2013-08-05 20:36:46 +01:00
Mic Bowman
03698121ed Remove some debugging from simian connectors. 2013-08-05 12:34:53 -07:00
Justin Clark-Casey (justincc)
976514d39a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-05 19:25:51 +01:00
Justin Clark-Casey (justincc)
76bd3de2fd Add checks monitoring framework to provide alerts if certain conditions do not hold.
Not yet in use.
2013-08-05 19:22:47 +01:00
Diva Canto
05012bb0df Group notices bug fix: use a new IM for each member of the group, otherwise the fields get messed up because the transfer is async 2013-08-05 08:09:30 -07:00
Diva Canto
5b4b349776 Fix the failing TestSendImage. J2K decoding is async. 2013-08-03 21:27:32 -07:00
Diva Canto
09cb2a37dd More on HG inventory and OutboundPermission: disallowing giving inventory to foreigners if OutboundPermission is false 2013-08-03 20:36:30 -07:00
Diva Canto
dcfeb95e98 HG: If OutboundPermission is set to false, let's enforce stricter permissions by not allowing objects to be taken to inventory. 2013-08-03 20:13:44 -07:00
Diva Canto
b857353fc9 Making the J2KDecoderModule decoder function async. Could this be the cause of sim freeze? -- HandleRequestImage in LLClientView is now sync, which means that it cannot take too long to complete. However, its execution path may end up in J2KDecoderModule.Decode, which is heavy and could stop the packet processing thread while it's at it. 2013-08-03 15:42:25 -07:00
Diva Canto
847c01f406 Amend Justin's last commit regarding the new config var ServiceVersion. The section may not exist at all. 2013-08-02 17:38:08 -07:00
Diva Canto
fdfc951744 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-02 17:00:34 -07:00
Diva Canto
5198df3aa0 Issue: 10 simultaneous TPs, many not making it. Now bypassing the per-url lock -- we should be "ok" (or, more "ok") now that we have increased the connection limit on the http library. But this is a sensitive part of the code, so it may need reverting. 2013-08-02 17:00:18 -07:00
Justin Clark-Casey (justincc)
4ff3757f86 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-02 23:17:20 +01:00
Justin Clark-Casey (justincc)
54b1071556 Allow older teleport ConnectorProtocolVersion of "SIMULATION/0.1" to be manually forced in a new [SimulationService] config setting.
This is for testing and debugging purposes to help determine whether a particular issue may be teleport related or not
"SIMULATION/0.2" (the newer teleport protocol) remains the default.  If the source simulator only implements "SIMULATION/0.1" this will correctly allow fallback to the older protocol.
Specifying "SIMULATION/0.1" will force the older, less efficient protocol to always be used.
2013-08-02 23:12:54 +01:00
Robert Adams
5bdfd55ace BulletSim: When converting linkset types, don't try to change the list
of linkset children while iterating through the list.
2013-08-02 10:32:43 -07:00
Robert Adams
24df15dab7 BulletSim: add implementation of 'physSetLinksetType' and 'physGetLinksetType'
and processing routines in BulletSim.
Add linkset rebuild/conversion routine in BSLinkset.
2013-08-02 09:47:12 -07:00
Robert Adams
5bcccfc305 BulletSim: add BSLinkInfo structure to remember link specific information
for each link in a linkset.
Extend BSLinksetConstraint to create and use BSLinkInfo with the default
static constraint.
2013-08-02 09:47:11 -07:00
Robert Adams
87ee0c395e Fix problem with modInvoke defined integer constants being build into
scripts as boxed integers rather than proper reference to a new LSLInteger.
This fixes an exception when using a registered integer constant in
a script.
2013-08-02 09:44:01 -07:00
Diva Canto
07e4958b19 Turn off edit beams when object is derezed while being edited. (mantis #6722) 2013-08-01 20:40:13 -07:00
Justin Clark-Casey (justincc)
d4c506e453 minor: replace veclist.Add(new Vector3(0,0,0)) with Vector3.Zero in InventoryAccessModules.RezObject() - structs are passed by value 2013-08-02 00:08:14 +01:00
Justin Clark-Casey (justincc)
c9695a0a59 Move experimental attachments throttling further down the chain so that multiple attachments changes (e.g. change outfit) are also throttled 2013-08-02 00:00:00 +01:00
Justin Clark-Casey (justincc)
7a5d11f8a7 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-08-01 23:17:21 +01:00
Justin Clark-Casey (justincc)
68b98a8003 minor: Add name to debug lludp packet level feedback on console 2013-08-01 23:16:41 +01:00
teravus
7b9a50721d * Thanks Plugh for pointing out that the constructor that takes a ulong regionhandle and saves it to to X,Y vars in the OpenSim.Framework.Location object was inverting the X and Y resulting in X and Y confusion. The test also used 256x256 in the uint,uint constructor so it was unable to determine if the X and Y components swapped. I don't expect much upheaval from this commit, not a lot of features were using the ulong Location object constructor. The database never stores the ulong regionhandle... the prims are loaded by region Guid. LLUDPServer used it to determine regions that it handled in a service definition where there was simply a X == X test which has the same logical result un-switched as it did switched. Again, thanks LibOMV for the regionhandle code. 2013-08-01 16:32:36 -05:00
Justin Clark-Casey (justincc)
216e785ca9 Add experimental "debug attachments throttle <ms>" setting (command line) and ThrottlePer100PrimsRezzed in [Attachments] in config
This is an experimental setting to control cpu spikes when an attachment heavy avatar logs in or avatars with medium attachments lgoin simultaneously.
It inserts a ms sleep specified in terms of attachments prims after each rez when an avatar logs in.
Default is 0 (no throttling).
"debug attachments <level>" changes to "debug attachments log <level>" which controls logging.  A logging level of 1 will show the throttling performed if applicable.
Also adds "debug attachments status" command to show current throttle and debug logging levels.
2013-08-01 21:16:53 +01:00
Justin Clark-Casey (justincc)
0c4c084bed Try a different approach to slow terrain update by always cycling the loop immediately if any data was sent, rather than waiting.
What I believe is happening is that on initial terrain send, this is done one packet at a time.
With WaitOne, the outbound loop has enough time to loop and wait again after the first packet before the second, leading to a slower send.
This approach instead does not wait if a packet was just sent but instead loops again, which appears to lead to a quicker send without losing the cpu benefit of not continually looping when there is no outbound data.
2013-08-01 18:12:28 +01:00
Justin Clark-Casey (justincc)
932c382737 Revert "Issue: painfully slow terrain loading. The cause is commit d9d995914c (r/23185) -- the WaitOne on the UDPServer. Putting it back to how it was done solves the issue. But this may impact CPU usage, so I'm pushing it to test if it does."
This reverts commit 59b461ac0e.
2013-08-01 18:11:50 +01:00
Diva Canto
59b461ac0e Issue: painfully slow terrain loading. The cause is commit d9d995914c (r/23185) -- the WaitOne on the UDPServer. Putting it back to how it was done solves the issue. But this may impact CPU usage, so I'm pushing it to test if it does. 2013-08-01 09:27:44 -07:00
Justin Clark-Casey (justincc)
9f05a7ac7b Include missing reference that probably stops windows build from commit 1299592405 2013-08-01 00:25:59 +01:00
Mic Bowman
1299592405 Experimental comment to eneralize the handling of Linden caps when the
cap is something other than "localhost". A new interface for handling
external caps is supported with an example implemented for Simian. The
only linden cap supporting this interface right now is the GetTexture
cap.
2013-07-31 15:37:15 -07:00
Mic Bowman
d82126b651 Add the Simian service config to the GridCommon example 2013-07-31 11:42:22 -07:00
Mic Bowman
48ee440983 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-31 11:31:03 -07:00
Mic Bowman
64f2dc778a A pretty major restructuring of the simian method invocations in order to
service access capabilities. In conjunction with the corresponding Simian
updates, this enables explicit per-simulator capability-based access to
grid services. That enables grid owners to add or revoke access to the grid
on a simulator by simulator basis.
2013-07-31 11:27:35 -07:00
Diva Canto
ac2ad9690d HGWorldMapModule: unregister event on RemoveRegion 2013-07-31 11:20:27 -07:00
Diva Canto
87fcff9fc3 HGWorldMapModule: check whether it's enabled or not. 2013-07-31 11:13:55 -07:00
Diva Canto
3c540f0d33 Avoid another null ref opportunity. 2013-07-30 22:07:33 -07:00
Diva Canto
e4ecbc2b10 Fix null ref. 2013-07-30 21:38:41 -07:00
Diva Canto
fd050fca7c Doing the HG Map / SimulatorFeatures "the right way": moved it to HGMapModule, hooking on to SimulatorFeatures.OnSimulatorFeaturesRequest event (similar to what the DynamicMenuModule does).
Only HG Visitors get this var, to avoid spamming local users.
The config var  is now called MapTileURL, to be consistent with the login one, and its being picked up from either [LoginService], [HGWorldMap] or [SimulatorFeatures], just because I have a bad memory.
2013-07-30 21:10:00 -07:00
Diva Canto
590a8b0315 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-30 17:27:32 -07:00
Diva Canto
2b54199271 After talking to lkalif on the IRC: SimulatorFeatures response: renamed the OSDMap GridServices to OpenSimExtras, normalized the url keys under it, and moved ExportEnabled to under it too. Melanie: change your viewer code accordingly.
Documentation at http://opensimulator.org/wiki/SimulatorFeatures_Extras
2013-07-30 17:26:56 -07:00
Robert Adams
0d189165a8 BulletSim: distribute vehicle physical settings to all members of
a linkset. Enables constraint based linksets.
Rename some internal variables to clarify whether values world or
vehicle relative.
2013-07-30 15:23:33 -07:00
Robert Adams
6ad577d32b BulletSim: test method for debugging of extended physics script operations. 2013-07-30 15:22:32 -07:00
Robert Adams
5a7784a0e6 BulletSim: make density display and return value consistant with how
the simulator expects it (scaled to 100kg/m^3).
2013-07-30 07:22:43 -07:00
Justin Clark-Casey (justincc)
1416c90932 minor: Add timeout secs to connection timeout message. Change message to reflect it is a timeout due to no data received rather than an ack issue. 2013-07-29 23:53:59 +01:00
Justin Clark-Casey (justincc)
8004e6f31c Fix issue just introduced in 8efe4bfc2e where I accidentally left in a test line to force very quick client unack 2013-07-29 23:38:54 +01:00
Justin Clark-Casey (justincc)
8efe4bfc2e Make "abnormal thread terminations" into "ClientLogoutsDueToNoReceives" and add this to the StatsManager
This reflects the actual use of this stat - it hasn't recorded general exceptions for some time.
Make the sim extra stats collector draw the data from the stats manager rather than maintaing this data itself.
2013-07-29 23:18:29 +01:00
Diva Canto
7eee9eb312 Groups: Better warning messages to the user. 2013-07-28 20:47:15 -07:00
Diva Canto
1b94de8e58 Group chat: prevent a situation where dupe IMs could occur. 2013-07-28 19:31:17 -07:00
Diva Canto
1d4bf06fe7 Group chat: guard against duplicate sends 2013-07-28 18:49:10 -07:00
Diva Canto
33b54807a1 Changing the visibility test in groups service to be UUID.Zero.ToString() instead of "all" because some paths in the code assume there's a UUI in the RequestingAgent string. 2013-07-28 18:08:50 -07:00
Diva Canto
468ddd2373 Same issue. 2013-07-28 17:12:14 -07:00
Diva Canto
c442ef346e Same issue as previous commit. 2013-07-28 16:44:31 -07:00
Diva Canto
698b2135ee Fix an issue where HG members of groups weren't seeing the entire membership for group chat. 2013-07-28 15:59:24 -07:00
Diva Canto
63f6c8f27c Removed commented lines and useless debug message 2013-07-28 13:53:47 -07:00
Diva Canto
7b0b5c9d97 Added BasicSearchModule.cs which handles OnDirFindQuery events. Removed that handler from both Groups modules in core, and replaced them with an operation on IGroupsModule. 2013-07-28 13:49:58 -07:00
Diva Canto
6be614ba84 This makes people search work. 2013-07-28 09:54:34 -07:00
Diva Canto
170a6f0563 This makes group search work (Groups V2). 2013-07-28 09:00:28 -07:00
Diva Canto
8dff05a897 More on group chat: only root agents should subscribe to OnInstantMessage, or else they'll see an echo of their own messages after teleporting. 2013-07-27 20:30:00 -07:00
Diva Canto
9cbbb7eddf Clarification on docs of .ini.examples for Groups (again) 2013-07-27 19:16:48 -07:00
Diva Canto
18eca40af3 More bug fixes on group chat 2013-07-27 19:12:47 -07:00
Diva Canto
69975763d2 Several major improvements to group (V2) chat. Specifically: handle join/drop appropriately, invitechatboxes.
The major departure from flotsam is to send only one message per destination region, as opposed to one message per group member. This reduces messaging considerably in large groups that have clusters of members in certain regions.
2013-07-27 15:38:56 -07:00
Diva Canto
1572e91b5f Clarifications on documentation of Group configs 2013-07-27 08:04:48 -07:00
Diva Canto
3dac92f345 Increased the rate of the PollServiceRequestManager to 0.5 secs (it was 1sec). Group chat is going over the EQ... Hopefully this won't increase CPU when there's nothing going on, but we need to watch for that. 2013-07-26 21:40:04 -07:00
Diva Canto
85428c49bb Trying to decrease the lag on group chat. (Groups V2 only) 2013-07-26 21:27:00 -07:00
Diva Canto
428916a64d Commented out ChatSessionRequest capability in Vivox and Freeswitch. We aren't processing it in any meaningful way, and it seems to get invoked everytime someone types a message in group chat. 2013-07-26 21:14:21 -07:00
Justin Clark-Casey (justincc)
ba9daf849e Fix regression from 056a6ee7 because the RemoteSimulationConnector uses a copy of the LocalSimulationConnector but never initializes it (hence ServiceVersion was never set) 2013-07-26 22:52:08 +01:00
Justin Clark-Casey (justincc)
840be97e40 Fix failure in TestCreateDuplicateRootScenePresence().
This is a test setup failure since code paths when adding a duplicate root scene presence now require the EntityTransferModule to be present.
Test fixed by adding this module to test setup
2013-07-26 20:52:30 +01:00
Justin Clark-Casey (justincc)
c245365484 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-26 19:23:12 +01:00
Justin Clark-Casey (justincc)
056a6ee765 Fix regression tests relating to agent transfer by making simulator use last week's SIMULATOR/0.1 protocol for now. 2013-07-26 19:22:30 +01:00
nebadon
9038a503eb Add Aleric to Contributors list, thanks Aleric!! 2013-07-26 14:17:36 -04:00
nebadon
d27cc62458 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-26 14:13:02 -04:00
nebadon
ad2ebd2f3d Force map tiler to save Water.jpg as an actual jpeg format it seems even though we specified jpg extention it was actually a png and thus confusing the viewer silently. 2013-07-26 14:11:42 -04:00
Justin Clark-Casey (justincc)
a08f01fa83 Fix NPC regression test failures.
These were genuine failures caused by ScenePresence.CompleteMovement() waiting for an UpdateAgent from NPC introduction that would never come.
Instead, we do not wait if the agent is an NPC.
2013-07-26 18:43:15 +01:00
Diva Canto
dd2c211e62 Comment debug message 2013-07-26 07:40:55 -07:00
Diva Canto
d5367a219d Slight improvement: no need to delay the removal of the queues in EQ, because DisableSimulator is now being sent via UDP 2013-07-26 07:39:57 -07:00
Diva Canto
878ce1e6b2 This should fix all issues with teleports. One should be able to TP as fast as needed. (Although sometimes Justin's state machine kicks in and doesn't let you) The EventQueues are a hairy mess, and it's very easy to mess things up. But it looks like this commit makes them work right. Here's what's going on:
- Child and root agents are only closed after 15 sec, maybe
- If the user comes back, they aren't closed, and everything is reused
- On the receiving side, clients and scene presences are reused if they already exist
- Caps are always recreated (this is where I spent most of my time!). It turns out that, because the agents carry the seeds around, the seed gets the same URL, except for the root agent coming back to a far away region, which gets a new seed (because we don't know what was its seed in the departing region, and we can't send it back to the client when the agent returns there).
2013-07-25 23:44:58 -07:00
Justin Clark-Casey (justincc)
4cd03d8c31 Return Simulator/0.1 (V1) entity transfer behaviour to waiting only 2 seconds before closing root agent after 15.
This is because a returning viewer by teleport before 15 seconds are up will be disrupted by the close.
The 2 second delay is within the scope where a normal viewer would not allow a teleport back anyway.
Simulator/0.2 (V2) protocol will continue with the longer delay since this is actually the behaviour viewers get from the ll grid
and an early close causes other issues (avatar being sent to infinite locations temporarily, etc.)
2013-07-26 01:40:56 +01:00
Justin Clark-Casey (justincc)
72ed49af5f Reset DoNotClose scene presence teleport flag before pausing. Rename DoNotClose to DoNotCloseAfterTeleport 2013-07-26 01:38:04 +01:00
Justin Clark-Casey (justincc)
1fabdcc43c If a returning teleport starts to reuse a downgraded child connection that was a previous root agent, do not close that child agent at the end of the 15 sec teleport timer.
This prevents an issue if the user teleports back to the neighbour simulator of a source before 15 seconds have elapsed.
This more closely emulates observed linden behaviour, though the timeout there is 50 secs and applies to all the pre-teleport agents.
Currently sticks a DoNotClose flag on ScenePresence though this may be temporary as possibly it could be incorporated into the ETM state machine
2013-07-26 01:04:16 +01:00
Diva Canto
20b989e048 Increased the wait time to 15 secs. In a 0.7.5 standalone where the effect was always present, this seems to have fixed it. 2013-07-24 17:10:26 -07:00
Diva Canto
cac37e298c Deleted all [ZZZ] debug messages. 2013-07-24 14:31:30 -07:00
Diva Canto
f0320f5652 The previous commit did fix the infinity problem! I'm putting the same time on TP_V1 and adding a big red warning on top of those lines. 2013-07-24 14:31:18 -07:00
Diva Canto
46d017b197 Today's wild shot at the infinity problem. Wait on the child agent left behind. 2013-07-24 14:31:03 -07:00
Diva Canto
4e5c7bdeb3 Moved TriggerOnMakeRootAgent back to the end of MakeRootAgent, to see if that eliminates the temporary placement at infinity upon TPs 2013-07-24 14:30:13 -07:00
Diva Canto
e6a0f6e428 One more thing to test in order to let CompleteMovement go up the stack. 2013-07-24 14:29:51 -07:00
Diva Canto
14530b2607 Minor adjustment on timings of waits. 2013-07-24 14:29:37 -07:00
Diva Canto
c0433d5e4c Changed the RegionHandshake packet to the Unknown queue, so that it is sent with high priority and hopefully gets to the client before AgentMovementComplete 2013-07-24 14:29:15 -07:00
Diva Canto
879cbb4575 This commit message intentionally left blank (last commit was idiotic) 2013-07-24 14:28:55 -07:00
Diva Canto
261512606d Improve the opening test in CompleteMovement, to account for multiple flags besides ViaLogin. 2013-07-24 14:28:41 -07:00
Diva Canto
d7984ef775 More on putting TP V1 as it was 2013-07-24 14:28:27 -07:00
Diva Canto
aaee63af82 Minor improvements on TP V1 trying to make it exactly as it was before. 2013-07-24 14:28:14 -07:00
Diva Canto
3891a8946b New Teleport protocol (V2), still compatible with V1 and older. (version of the destination is being checked)
In this new protocol, and as committed before, the viewer is not sent EnableSimulator/EstablishChildCommunication for the destination. Instead, it is sent TeleportFinish directly. TeleportFinish, in turn, makes the viewer send a UserCircuitCode packet followed by CompleteMovementIntoRegion packet. These 2 packets tend to occur one after the other almost immediately to the point that when CMIR arrives the client is not even connected yet and that packet is ignored (there might have been some race conditions here before); then the viewer sends CMIR again within 5-8 secs. But the delay between them may be higher in busier regions, which may lead to race conditions.
This commit improves the process so there are are no race conditions at the destination. CompleteMovement (triggered by the viewer) waits until Update has been sent from the origin. Update, in turn, waits until there is a *root* scene presence -- so making sure CompleteMovement has run MakeRoot. In other words, there are two threadlets at the destination, one from the viewer and one from the origin region, waiting for each other to do the right thing. That makes it safe to close the agent at the origin upon return of the Update call without having to wait for callback, because we are absolutely sure that the viewer knows it is in th new region.
Note also that in the V1 protocol, the destination was getting UseCircuitCode from the viewer twice -- once on EstablishAgentCommunication and then again on TeleportFinish. The second UCC was being ignored, but it shows how we were not following the expected steps...
2013-07-24 14:27:58 -07:00
Diva Canto
aae29c0ee2 Further tweaks on TPs: not sending the callback URL and instead waiting 15sec before closing the agent. This seems to be working fairly well. The viewer seems to have an 8 sec delay between UseCircuitCode and CompleteMovement.
Also added back the position on UpdateAgent, because it's needed for TPing between neighboring regions.
2013-07-24 14:27:37 -07:00
Diva Canto
9ab78d412c EXPERIMENTAL: yet another variation of ES/EAC/TPFinish 2013-07-24 14:27:22 -07:00
Diva Canto
00d4a26eef Amend previous commit. 2013-07-24 12:49:30 -07:00
Diva Canto
665fb66686 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-24 11:26:30 -07:00
Diva Canto
e103e34f1d Added config var that we all thought was already there: see_into_region. (Note: different from the defunct see_into_neighboring_sim, which used to control the process from the other end). This enables child agents in neighbors for which the root agent doesn't have permission to be in. 2013-07-24 11:25:41 -07:00
Diva Canto
d8a6eb5641 Decreased the time of group cache to 1 min, because it was getting on my nerves that it takes so long to let go of old info. 2013-07-24 11:25:24 -07:00
Justin Clark-Casey (justincc)
feef9d64a4 For unknown user issue, bump GUN7 to GUN8 and UMMAU3 to UMMAU4 to assess what looks like a very significant reducing in GUN occurrances 2013-07-23 23:42:34 +01:00
Justin Clark-Casey (justincc)
fa2653c8e1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-23 23:32:24 +01:00
Justin Clark-Casey (justincc)
9a4a513b5e Correct issue where the last instance of a sampled stat was shown 3x larger than it should have been (though internal use was correct) 2013-07-23 23:31:35 +01:00
Diva Canto
516062ae1f Don't touch the Current Outfit folder also on coming back home 2013-07-23 15:05:32 -07:00
Diva Canto
901bdfed40 Restoring landing on prims, which had been affected by the edit beams commit. 2013-07-23 14:31:16 -07:00
Diva Canto
744276dd50 In renaming the folders for hypergriding, don't rename the Current Outfit folder. The viewer doesn't like that. 2013-07-23 14:31:03 -07:00
Diva Canto
42e52f544d Improvement of fetching name in groups 2013-07-23 14:30:50 -07:00
Diva Canto
7c1eb86c7d Don't post Link asset types back to the home grid 2013-07-23 14:28:53 -07:00
Justin Clark-Casey (justincc)
76e46d0158 Improve spacing between data and units on console stats display 2013-07-23 17:23:16 +01:00
Robert Adams
aec8d1e6be BulletSim: Turn on center-of-mass calculation by default.
Reduce object density by factor of 100 to bring physical mass computations
into a range better suited for Bullet.
2013-07-23 09:09:25 -07:00
Robert Adams
f499b328c4 Revert "Revert "BulletSim: Add logic to linksets to change physical properties for""
Found that the vehicle movement problem was not caused by these physics changes.

This reverts commit 84d0699761.
2013-07-23 08:14:20 -07:00
Robert Adams
75686e0e49 Revert "Revert "BulletSim: change BSDynamics to expect to be passed a BSPrimLinkable""
Found that the vehicle movement problem was not caused by these physics changes.

This reverts commit 7b187deb19.
2013-07-23 08:13:56 -07:00
Robert Adams
b14156aa63 Revert "Revert "BulletSim: only create vehicle prim actor when vehicles are enabled.""
Found that the vehicle movement problem was not caused by these physics changes.

This reverts commit 5f7b2ea81b.
2013-07-23 08:13:29 -07:00
Robert Adams
aec8852af7 Revert "Revert "BulletSim: move collision processing for linksets from BSPrimLinkable""
Found that the vehicle movement problem was not caused by these physics changes.

This reverts commit c45659863d.
2013-07-23 08:13:01 -07:00
Robert Adams
401c2e2f2e Revert "Revert "Add experimental stubs for an extension function interface on both""
Found that the vehicle movement problem was not caused by these physics changes.

This reverts commit 89857378ce.
2013-07-23 08:12:34 -07:00
Robert Adams
af9deed135 Revert "Revert "BulletSim: freshen up the code for constraint based linksets.""
Found that the vehicle movement problem was not caused by these physics changes.

This reverts commit 44543ebe63.
2013-07-23 08:11:21 -07:00
Justin Clark-Casey (justincc)
90528c23d9 For stats which can show average change over time, show the last sample as well as the average.
This is somewhat cryptic at the moment, need to improve documentation.
2013-07-23 01:13:13 +01:00
Justin Clark-Casey (justincc)
a57a472ab8 Add proper method doc and comments to m_dataPresentEvent (from d9d9959) 2013-07-23 00:51:59 +01:00
Justin Clark-Casey (justincc)
9fb9da1b6c Add clientstack.InboxPacketsCount stat. This records the number of packets waiting to be processed at the second stage (after initial UDP processing)
If this consistently increases then this is a problem since it means the simulator is receiving more requests than it can distribute to other parts of the code.
2013-07-23 00:35:41 +01:00
Justin Clark-Casey (justincc)
60732c96ef Add clientstack.OutgoingUDPSendsCount stat to show number of outbound UDP packets sent by a region per second 2013-07-23 00:35:34 +01:00
Justin Clark-Casey (justincc)
8396f1bd42 Record raw number of UDP receives as clientstack.IncomingUDPReceivesCount 2013-07-23 00:35:23 +01:00
Justin Clark-Casey (justincc)
bf517899a7 Add AverageUDPProcessTime stat to try and get a handle on how long we're taking on the initial processing of a UDP packet.
If we're not receiving packets with multiple threads (m_asyncPacketHandling) then this is critical since it will limit the number of incoming UDP requests that the region can handle and affects packet loss.
If m_asyncPacketHandling then this is less critical though a long process will increase the scope for threads to race.
This is an experimental stat which may be changed.
2013-07-23 00:35:09 +01:00
Robert Adams
e6b6af62dd Added check for user movement specification before discarding an incoming
AgentUpdate packet. This fixes the problem with vehicles not moving forward
after the first up-arrow.
Code to fix a potential exception when using different IClientAPIs.
2013-07-22 15:41:14 -07:00
Robert Adams
44543ebe63 Revert "BulletSim: freshen up the code for constraint based linksets."
The changes don't seem to be ready for prime time.

This reverts commit 803632f8f3.
2013-07-22 12:10:23 -07:00
Robert Adams
89857378ce Revert "Add experimental stubs for an extension function interface on both"
The changes don't seem to be ready for prime time.

This reverts commit 13a4a80b38.
2013-07-22 12:09:55 -07:00
Robert Adams
c45659863d Revert "BulletSim: move collision processing for linksets from BSPrimLinkable"
The changes don't seem to be ready for prime time.

This reverts commit b4c3a791aa.
2013-07-22 12:09:17 -07:00
Robert Adams
5f7b2ea81b Revert "BulletSim: only create vehicle prim actor when vehicles are enabled."
The changes don't seem to be ready for prime time.

This reverts commit acb7b4a09a.
2013-07-22 12:08:49 -07:00
Robert Adams
7b187deb19 Revert "BulletSim: change BSDynamics to expect to be passed a BSPrimLinkable"
The changes don't seem to be ready for prime time.

This reverts commit d0d654e218.
2013-07-22 12:08:25 -07:00
Robert Adams
84d0699761 Revert "BulletSim: Add logic to linksets to change physical properties for"
The changes don't seem to be ready for prime time.

This reverts commit b44f0e1a00.
2013-07-22 12:07:42 -07:00
Robert Adams
b44f0e1a00 BulletSim: Add logic to linksets to change physical properties for
whole linkset.
Override physical property setting for BSLinksetCompound as there are
not children to the compound spape.
2013-07-22 10:27:24 -07:00
Robert Adams
d0d654e218 BulletSim: change BSDynamics to expect to be passed a BSPrimLinkable
and start changing the logic to handle the base prim as a complex
object (ie, a linkset).
2013-07-22 10:27:21 -07:00
Robert Adams
acb7b4a09a BulletSim: only create vehicle prim actor when vehicles are enabled. 2013-07-22 10:27:18 -07:00
Robert Adams
b4c3a791aa BulletSim: move collision processing for linksets from BSPrimLinkable
into the linkset implementation classes.
Add HasSomeCollision attribute that remembers of any component of
   a linkset has a collision.
Update vehicle code (BSDynamic) to use the HasSomeCollision in place of
   IsColliding to make constraint based linksets properly notice the ground.
Add linkset functions to change physical attributes of all the members
   of a linkset.
2013-07-22 10:27:15 -07:00
Robert Adams
13a4a80b38 Add experimental stubs for an extension function interface on both
PhysicsScene and PhysicsActor.
2013-07-22 10:27:09 -07:00
Robert Adams
803632f8f3 BulletSim: freshen up the code for constraint based linksets. 2013-07-22 10:27:06 -07:00
Diva Canto
df63bfafef Better version of previous commit 2013-07-21 15:42:22 -07:00
Diva Canto
f81e289a1b Add the Current Outfit folder as an available folder in the SuitcaseInventory. 2013-07-21 15:42:05 -07:00
Diva Canto
99a727600b Minor cosmetic changes. 2013-07-21 10:07:35 -07:00
Diva Canto
8d18ad2f6f Minor aesthetic change to make things more clear. 2013-07-21 09:02:56 -07:00
Diva Canto
116a449d89 The quaternion delta was a bit to high, now that the head rotation is out of the equation. (head rotation was the problematic one) 2013-07-21 09:01:57 -07:00
Diva Canto
b5ab0698d6 EDIT BEAMS!!! They had been missing from OpenSim since ever. Thanks to lkalif for telling me how to route the information. The viewer effect is under the distance filter, so only avatars with cameras < 10m away see the beams. 2013-07-21 09:01:44 -07:00
Diva Canto
032c637c10 Filter certain viewer effects depending on distance between the avatar that is generating the effect and the cameras of the observers. In particular, this applies to LookAt (which is really verbose and occurs every time users move the mouse) and Beam (which doesn't occur that often, but that can be extremely noisy (10.sec) when it happens) 2013-07-21 09:01:09 -07:00
Diva Canto
3919c80505 A couple of small optimizations over the previous commit 2013-07-21 09:00:57 -07:00
Diva Canto
d5a1779465 Manage AgentUpdates more sanely:
- The existing event to scene has been split into 2: OnAgentUpdate and OnAgentCameraUpdate, to better reflect the two types of updates that the viewer sends. We can run one without the other, which is what happens when the avie is still but the user is camming around
- Added thresholds (as opposed to equality) to determine whether the update is significant or not. I thin these thresholds are ok, but we can play with them later
- Ignore updates of HeadRotation, which were problematic and aren't being used up stream
2013-07-21 09:00:42 -07:00
Diva Canto
174105ad02 Fixed the stats in show client stats. Also left some comments with observations about AgentUpdates. 2013-07-21 09:00:27 -07:00
Diva Canto
18d5d8f5dd Removed verbose debug from previous commit 2013-07-21 09:00:08 -07:00
Diva Canto
edafea6ae6 PollServiceRequestManager: changed the long poll from a Queue to a List. No need to dequeue and enqueue items every 1sec. 2013-07-21 08:59:48 -07:00
Justin Clark-Casey (justincc)
3a6acbcc14 furhter shorten CheckAgentUpdateSignificance(). No real perf impact. 2013-07-21 08:59:31 -07:00
Justin Clark-Casey (justincc)
866de53978 Remove some pointless code in CheckAgentUpdateSignificance() 2013-07-21 08:59:17 -07:00
Justin Clark-Casey (justincc)
61eda1f441 Make the check as to whether any particular inbound AgentUpdate packet is significant much earlier in UDP processing (i.e. before we pointlessly place such packets on internal queues, etc.)
Appears to have some impact on cpu but needs testing.
2013-07-21 08:58:55 -07:00
Justin Clark-Casey (justincc)
e5c677779b Add measure of number of inbound AgentUpdates that were seen as significant to "show client stats" (i.e. sent on for further processing instead of being discarded)
Added here since it was the most convenient place
Number is in the last column, "Sig. AgentUpdates" along with percentage of all AgentUpdates
Percentage largely falls over time, most cpu for processing AgentUpdates may be in UDP processing as turning this off even earlier (with "debug lludp toggle agentupdate" results in a big cpu fall
Also tidies up display.
2013-07-21 08:58:39 -07:00
Justin Clark-Casey (justincc)
5a2d4d888c Hack in console command "debug lludp toggle agentupdate" to allow AgentUpdate in packets to be discarded at a very early stage.
Enabling this will stop anybody from moving on a sim, though all other updates should be unaffected.
Appears to make some cpu difference on very basic testing with a static standing avatar (though not all that much).
Need to see the results with much higher av numbers.
2013-07-21 08:58:21 -07:00
Justin Clark-Casey (justincc)
66048e1a70 minor: provide user feedback in the log for now when udp in/out bound threads are started/stopped 2013-07-21 08:58:02 -07:00
Justin Clark-Casey (justincc)
3a476bf60c Fix up a temporary debugging change from last commit which stopped "lludp stop out" from actually doing anything 2013-07-21 08:57:36 -07:00
Diva Canto
98d47ea428 Delay the enqueueing of non-longpoll requests for 100ms. No need to have these requests actively on the processing queue if it seems they're not ready. 2013-07-21 08:57:16 -07:00
Justin Clark-Casey (justincc)
63c42d6602 Do some simple queue empty checks in the main outgoing udp loop instead of always performing these on a separate fired thread.
This appears to improve cpu usage since launching a new thread is more expensive than performing a small amount of inline logic.
However, needs testing at scale.
2013-07-21 08:56:48 -07:00
Diva Canto
9041f4a056 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-19 20:27:49 -07:00
Diva Canto
c1705236c7 Fix HGTravelStore.migrations in SQLite (mantis #6709) 2013-07-19 20:25:33 -07:00
Robert Adams
1d65b0d802 BulletSim: add position resetting for stationary avatars so they don't
move around when standing on a stationary object.
Create proper linkage between BSCharacter and its actor by generating
a UpdatedProperties event the same way BSPrim does.
2013-07-18 19:09:55 -07:00
Dan Lake
edef7472d1 Enable storing of environment settings in NullSimulationData 2013-07-18 13:33:50 -07:00
Diva Canto
b5062ae7ee Changed the timoeut of EQ 502s (no events) to 50 secs. The viewer post requests timeout in 60 secs.
There's plenty of room for improvement in handling the EQs. Some other time...
2013-07-18 13:30:04 -07:00
Justin Clark-Casey (justincc)
d9d995914c try Hacking in an AutoResetEvent to control the outgoing UDP loop instead of a continuous loop with sleeps.
Does appear to have a cpu impact but may need further tweaking
2013-07-18 12:28:02 -07:00
Diva Canto
71b1511db5 Revert "Revert "I confuse myself. Let's try this variable name instead.""
This reverts commit 52dc7b2a96.
2013-07-18 12:25:47 -07:00
Diva Canto
a22a4db5ce Revert "Revert "Do the same trick that dahlia did for Dequeue(timeout)""
This reverts commit 5495df7443.
2013-07-18 12:25:22 -07:00
Diva Canto
552b85d33d Revert "Revert "Putting the requests back in the queue while testing for count >0 is not the smartest move...""
This reverts commit 7127891957.
2013-07-18 12:25:04 -07:00
Diva Canto
ad198a714c Revert "Revert "Didn't mean to commit this change in BlockingQueue.cs""
This reverts commit fda91d93da.
2013-07-18 12:24:43 -07:00
Diva Canto
9e35b069a4 Reverting the reverts I did yesterday. cpu-branch has now been
successfully tested, and I'm merging back those changes, which proved to
be good.
Revert "Revert "Cleared up much confusion in PollServiceRequestManager. Here's the history:""

This reverts commit fa2370b32e.
2013-07-18 12:23:27 -07:00
Dan Lake
ae997fffee Merge branch 'master' of git://opensimulator.org/git/opensim 2013-07-18 02:28:36 -07:00
Dan Lake
6572847518 Added MinPoolThreads to ini [Startup] section to control SmartThreadPool. 2013-07-18 02:28:07 -07:00
Justin Clark-Casey (justincc)
077be8b496 Fix what apepars to be a bug in DoubleQueue<T>.Enqueue(Queue<T> q, T data) where the q parmater is ignored and everyghig is always placed on m_lowQueue.
No actual impact presently since nothing ends up calling EnqueueHigh()
2013-07-18 01:23:33 +01:00
Diva Canto
6293614074 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-17 15:06:33 -07:00
Dan Lake
49b3b7ee83 Merge branch 'master' of git://opensimulator.org/git/opensim 2013-07-17 15:06:25 -07:00
Diva Canto
fa2370b32e Revert "Cleared up much confusion in PollServiceRequestManager. Here's the history:"
This reverts commit e46459ef21.
2013-07-17 15:05:36 -07:00
Dan Lake
f64f07e7c5 command line kick user now uses exact name match instead of substring search to avoid kicking the wrong user or multiple wrong users. 2013-07-17 15:05:30 -07:00
Diva Canto
fda91d93da Revert "Didn't mean to commit this change in BlockingQueue.cs"
This reverts commit 0f5b616fb0.
2013-07-17 15:05:16 -07:00
Diva Canto
7127891957 Revert "Putting the requests back in the queue while testing for count >0 is not the smartest move..."
This reverts commit f4317dc26d.
2013-07-17 15:04:27 -07:00
Diva Canto
5495df7443 Revert "Do the same trick that dahlia did for Dequeue(timeout)"
This reverts commit af792bc7f2.
2013-07-17 15:04:12 -07:00
Diva Canto
52dc7b2a96 Revert "I confuse myself. Let's try this variable name instead."
This reverts commit 1d3deda10c.
2013-07-17 15:03:40 -07:00
Diva Canto
519dba9a69 Revert "Now trying DoubleQueue instead of BlockingQueue for the PollServiceRequestManager."
This reverts commit 5f95f4d78e.
2013-07-17 15:03:16 -07:00
Diva Canto
5c54eb30ed Revert "This is a completely unreasonable thing to do, effectively defying the purpose of BlockingQueues. Trying this, to see the effect on CPU."
This reverts commit 5232ab0496.
2013-07-17 15:02:54 -07:00
Diva Canto
5232ab0496 This is a completely unreasonable thing to do, effectively defying the purpose of BlockingQueues. Trying this, to see the effect on CPU. 2013-07-17 14:36:55 -07:00
Diva Canto
5f95f4d78e Now trying DoubleQueue instead of BlockingQueue for the PollServiceRequestManager. 2013-07-17 14:09:04 -07:00
Diva Canto
1d3deda10c I confuse myself. Let's try this variable name instead. 2013-07-17 13:26:15 -07:00
Diva Canto
af792bc7f2 Do the same trick that dahlia did for Dequeue(timeout) 2013-07-17 13:23:29 -07:00
Diva Canto
f4317dc26d Putting the requests back in the queue while testing for count >0 is not the smartest move... 2013-07-17 12:57:34 -07:00
Diva Canto
0f5b616fb0 Didn't mean to commit this change in BlockingQueue.cs 2013-07-17 12:02:00 -07:00
Diva Canto
2b8de2c404 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-17 11:19:56 -07:00
Diva Canto
e46459ef21 Cleared up much confusion in PollServiceRequestManager. Here's the history:
When Melanie added the web fetch inventory throttle to core, she made the long poll requests (EQs) effectively be handled on an active loop. All those requests, if they existed, were being constantly dequeued, checked for events (which most often they didn't have), and requeued again. This was an active loop thread on a 100ms cycle!
This fixes the issue. Now the inventory requests, if they aren't ready to be served, are placed directly back in the queue, but the long poll requests aren't placed there until there are events ready to be sent or timeout has been reached.
This puts the LongPollServiceWatcherThread back to 1sec cycle, as it was before.
2013-07-17 11:19:36 -07:00
Robert Adams
2c8bf4aaa6 BulletSim: fix small bug where everything looked like it was colliding
before the first simulator step.
2013-07-17 10:19:44 -07:00
Diva Canto
894554faf6 Removed the MapItems thread. Redirected the map items requests to the services throttle thread. Didn't change anything in how that processor is implemented, for better or for worse. 2013-07-16 20:28:48 -07:00
Diva Canto
9432f3c94d Improvements to the ServiceThrottleModule: added a category and an itemid to the interface, so that duplicate requests aren't enqueued more than once. 2013-07-16 19:04:30 -07:00
Diva Canto
5f27aaa6dd UserManagementModule: in the continuation, call the method that also looks up the cache, because the resource may be here in the meantime 2013-07-16 18:22:42 -07:00
Diva Canto
8bad56cb46 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-16 17:53:49 -07:00
Diva Canto
d4720bd721 Added config var to fiddle with the Interval for the service throttle thread 2013-07-16 17:53:05 -07:00
Dan Lake
9f129938c9 Attachments module only registers when enabled. This enables alternative attachments module implementations. All calls to Scene.AttachmentsModule are checking for null. Ideally, if we support disabling attachments then we need a null attachments module to register with the scene. 2013-07-16 17:43:36 -07:00
Diva Canto
9f578cf0c8 Deleted a couple of verbose messages 2013-07-16 17:18:11 -07:00
Diva Canto
0419852598 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-16 17:15:08 -07:00
Diva Canto
a006caabbc Added IServiceThrottleModule.cs 2013-07-16 17:06:54 -07:00
Diva Canto
99a600753e Changed the name to ServiceThrottle/ServiceThrottleModule in order to reflect its more generic nature. 2013-07-16 17:06:17 -07:00
Diva Canto
3fbd2c54bc Eliminated the UserManagement/UserManagementModule throttle thread. Made the other one generic, taking any continuation. 2013-07-16 17:04:32 -07:00
Justin Clark-Casey (justincc)
cbc3576ee2 minor: Add warning method doc about possibly inconsistent results returned from BlockingQueue.Contains(), Count() and GetQueueArray() 2013-07-16 23:14:53 +01:00
Justin Clark-Casey (justincc)
50b8ab60f2 Revert "Revert "MSDN documentation is unclear about whether exiting a lock() block will trigger a Monitor.Wait() to exit, so avoid some locks that don't actually affect the state of the internal queues in the BlockingQueue class.""
This reverts commit 21a09ad3ad.

After more analysis and discussion, it is apparant that the Count(), Contains() and GetQueueArray() cannot be made thread-safe anyway without external locking
And this change appears to have a positive impact on performance.
I still believe that Monitor.Exit() will not release any thread for Monitor.Wait(), as per http://msdn.microsoft.com/en-gb/library/vstudio/system.threading.monitor.exit%28v=vs.100%29.aspx
so this should in theory make no difference, though mono implementation issues could possibly be coming into play.
2013-07-16 23:00:07 +01:00
Justin Clark-Casey (justincc)
21a09ad3ad Revert "MSDN documentation is unclear about whether exiting a lock() block will trigger a Monitor.Wait() to exit, so avoid some locks that don't actually affect the state of the internal queues in the BlockingQueue class."
This reverts commit 42e2a0d66e

Reverting because unfortunately this introduces race conditions because Contains(), Count() and GetQueueArray() may now end up returning the wrong result if another thread performs a simultaneous update on m_queue.
Code such as PollServiceRequestManager.Stop() relies on the count being correct otherwise a request may be lost.
Also, though some of the internal queue methods do not affect state, they are not thread-safe and could return the wrong result generating the same problem
lock() generates Monitor.Enter() and Monitor.Exit() under the covers.  Monitor.Exit() does not cause Monitor.Wait() to exist, only Pulse() and PulseAll() will do this
Reverted with agreement.
2013-07-16 22:03:49 +01:00
Diva Canto
e0f0b88dec In the pursuit of using less CPU: now trying to avoid blocking queues altogether. Instead, this uses a timer. No sure if it's better or worse, but worth the try. 2013-07-16 13:01:39 -07:00
Diva Canto
6da50d34df Actually use DoubleQueue in UserManagement/UserManagementModule 2013-07-16 07:19:13 -07:00
Diva Canto
5a01ffa515 High CPU hunt: try a different blocking queue, DoubleQueue 2013-07-16 07:15:14 -07:00
dahlia
6dd454240f revert last commit which seems to conflict with DoubleQueue internals. The random crash might be in DoubleQueue instead. See http://pastebin.com/XhNBNqsc 2013-07-16 02:03:01 -07:00
dahlia
70aa77f520 add locking to internal queue in WebFetchInvDescModule; lack of which caused a random crash in a load test yesterday 2013-07-16 01:31:09 -07:00
dahlia
42e2a0d66e MSDN documentation is unclear about whether exiting a lock() block will trigger a Monitor.Wait() to exit, so avoid some locks that don't actually affect the state of the internal queues in the BlockingQueue class. 2013-07-16 01:12:56 -07:00
Justin Clark-Casey (justincc)
e8e073aa97 Simplify EventQueue cap setup so that it is also stat monitored.
Curiously, the number of requests received is always one greater than that shown as handled - needs investigation
2013-07-16 00:05:45 +01:00
Justin Clark-Casey (justincc)
eb14e5a175 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-15 23:28:02 +01:00
Justin Clark-Casey (justincc)
1b7b664c86 Add request received/handling stats for caps which are served by http poll handlers.
This adds explicit cap poll handler supporting to the Caps classes rather than relying on callers to do the complicated coding.
Other refactoring was required to get logic into the right places to support this.
2013-07-15 23:27:46 +01:00
Diva Canto
68fbf7eebb Revert "Puts RequestImage (UDP) back to asyn -- CPU spike hunt"
This reverts commit b060ce96d9.
2013-07-15 12:34:10 -07:00
Diva Canto
687c1a420a Guard against null ref 2013-07-15 12:33:31 -07:00
Diva Canto
b060ce96d9 Puts RequestImage (UDP) back to asyn -- CPU spike hunt 2013-07-15 12:05:31 -07:00
Diva Canto
864f15ce4d Revert the revert
Revert "Trying to hunt the CPU spikes recently experienced."

This reverts commit ac73e70293.
2013-07-15 11:52:26 -07:00
Diva Canto
fbb01bd280 Protect against null requests 2013-07-15 11:37:49 -07:00
Diva Canto
ac73e70293 Trying to hunt the CPU spikes recently experienced.
Revert "Comment out old inbound UDP throttling hack. This would cause the UDP"

This reverts commit 38e6da5522.
2013-07-15 11:27:49 -07:00
Diva Canto
60325f81d8 This might address the following observed exception:
17:14:28 - [APPLICATION]:
APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs
Exception: System.InvalidOperationException: Operation is not valid due to the current state of the object
  at System.Collections.Generic.Queue`1[OpenSim.Region.ClientStack.Linden.WebFetchInvDescModule+aPollRequest].Peek () [0x00011] in /root/install/mono-3.1.0/mono/mcs/class/System/System.Collections.Generic/Queue.cs:158
  at System.Collections.Generic.Queue`1[OpenSim.Region.ClientStack.Linden.WebFetchInvDescModule+aPollRequest].Dequeue () [0x00000] in /root/install/mono-3.1.0/mono/mcs/class/System/System.Collections.Generic/Queue.cs:140
  at OpenSim.Framework.DoubleQueue`1[OpenSim.Region.ClientStack.Linden.WebFetchInvDescModule+aPollRequest].Dequeue (TimeSpan wait, OpenSim.Region.ClientStack.Linden.aPollRequest& res) [0x0004e] in /home/avacon/opensim_2013-07-14/OpenSim/Framework/Util.cs:2297
2013-07-15 10:29:42 -07:00
Diva Canto
d48946f9ef Document obscure Groups config related to the user level required for creating groups 2013-07-14 16:51:07 -07:00
Diva Canto
af02231a7b Added SQLite version of hg travel data store. UNTESTED. Hope it works! 2013-07-14 16:03:46 -07:00
Diva Canto
b0140383da Cleanup old hg sessions (older than 2 days) 2013-07-14 15:47:54 -07:00
Diva Canto
e33ac50388 HG UAS: Moved hg-session data from memory to DB storage. This makes it so that traveling info survives Robust resets. It should also eliminate the cause of empty IP addresses in agent circuit data that we saw in CC grid. MySQL only. 2013-07-14 14:31:20 -07:00
Diva Canto
5939529036 Minor typo in log message 2013-07-14 14:29:10 -07:00
Diva Canto
c8dcb8474d Let's go easy on authenticating ChildAgentUpdates, otherwise this will be chaotic while ppl are using different versions of opensim. Warning only, but no enforcement. 2013-07-14 10:26:05 -07:00
Diva Canto
98f59ffed5 Fix broken tests -- the test setup was wrong... sigh. 2013-07-14 09:22:55 -07:00
Diva Canto
c61ff917ef Authenticate ChildAgentUpdate too. 2013-07-14 09:21:28 -07:00
Diva Canto
f3b3e21dea Change the auth token to be the user's sessionid. 2013-07-14 07:28:40 -07:00
Diva Canto
fcb0349d56 And this fixes the other failing tests. Justin, the thread pool is not being initialized in the tests! 2013-07-13 23:01:41 -07:00
Diva Canto
e4f741f006 This should fix the failing test. 2013-07-13 22:52:51 -07:00
Diva Canto
a2ee887c6d Deleted a line too many 2013-07-13 22:32:52 -07:00
Diva Canto
b4f1b9acf6 Guard against unauthorized agent deletes. 2013-07-13 21:28:46 -07:00
Diva Canto
931eb892d9 Deleted GET agent all around. Not used. 2013-07-13 17:56:42 -07:00
Diva Canto
4d93870fe5 Gatekeeper: stop bogus agents earlier, here at the Gatekeeper. No need to bother the sim. 2013-07-13 17:52:05 -07:00
Diva Canto
5a1d6727e1 Some more debug to see how many threads are available. 2013-07-13 11:39:17 -07:00
Diva Canto
bc405a6a34 That didn't fix the problem.
Revert "Trying to reduce CPU usage on logins and TPs: trying radical elimination of all FireAndForgets throughout CompleteMovement. There were 4."

This reverts commit 6825377380.
2013-07-13 11:30:37 -07:00
Diva Canto
6825377380 Trying to reduce CPU usage on logins and TPs: trying radical elimination of all FireAndForgets throughout CompleteMovement. There were 4. 2013-07-13 11:11:18 -07:00
Diva Canto
3a26e366d2 This commit effectively reverses the previous one, but it's just to log that we found the root of the rez delay: the priority scheme BestAvatarResponsiveness, which is currently the default, was the culprit. Changing it to FrontBack made the region rez be a lot more natural.
BestAvatarResponsiveness introduces the region rez delay in cases where the region is full of avatars with lots of attachments, which is the case in CC load tests. In that case, the inworld prims are sent only after all avatar attachments are sent. Not recommended for regions with heavy avatar traffic!
2013-07-13 10:35:41 -07:00
Diva Canto
ff4ad60207 Same issue as previous commit. 2013-07-13 10:05:11 -07:00
Diva Canto
ccee2959f7 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-13 09:53:05 -07:00
Diva Canto
a412b1d682 Moved SendInitialDataToMe to earlier in CompleteMovement. Moved TriggerOnMakeRootAgent to the end of CompleteMovement.
Justin, if you read this, there's a long story here. Some time ago you placed SendInitialDataToMe at the very beginning of client creation (in LLUDPServer). That is problematic, as we discovered relatively recently: on TPs, as soon as the client starts getting data from child agents, it starts requesting resources back *from the simulator where its root agent is*. We found this to be the problem behind meshes missing on HG TPs (because the viewer was requesting the meshes of the receiving sim from the departing grid). But this affects much more than meshes and HG TPs. It may also explain cloud avatars after a local TP: baked textures are only stored in the simulator, so if a child agent receives a UUID of a baked texture in the destination sim and requests that texture from the departing sim where the root agent is, it will fail to get that texture.
Bottom line: we need to delay sending the new simulator data to the viewer until we are absolutely sure that the viewer knows that its main agent is in a new sim. Hence, moving it to CompleteMovement.
Now I am trying to tune the initial rez delay that we all experience in the CC. I think that when I fixed the issue described above, I may have moved SendInitialDataToMe to much later than it should be, so now I'm moving to earlier in CompleteMovement.
2013-07-13 09:46:58 -07:00
Diva Canto
cd64a70c79 Added UploadBakedTexture/UploadBakedTextureServerConnector, so that this can eventually be served by a robust instance. NOT FINISHED YET. 2013-07-13 08:31:03 -07:00
Justin Clark-Casey (justincc)
d06c85ea77 Reinsert PhysicsActor variable back into SOP.SubscribeForCollisionEvents() in order to avoid a race condition.
A separate PhysicsActor variable is used in case some other thread removes the PhysicsActor whilst this code is executing.
If this is now impossible please revert - just adding this now whilst I remember.
Also makes method comment into proper method doc.
2013-07-13 00:29:07 +01:00
Justin Clark-Casey (justincc)
b4cb644a05 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-13 00:03:23 +01:00
Justin Clark-Casey (justincc)
3d118fb580 In co-op termination, extend EventWaitHandle to give this an indefinite lifetime in order to avoid a later RemotingException if scripts are being loaded into their own domains.
This is necessary because XEngineScriptBase now retains a reference to an EventWaitHandle when co-op termination is active.
Aims to address http://opensimulator.org/mantis/view.php?id=6634
2013-07-13 00:02:54 +01:00
Robert Adams
fa02f28dbf Add ToOSDMap() overrides to the Stat subclass CounterStat.
Add a GetStatsAsOSDMap method to StatsManager which allows the filtered
fetching of stats for eventual returning over the internets.
2013-07-12 14:04:14 -07:00
Diva Canto
3d700bb42c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-12 12:54:29 -07:00
Diva Canto
29f6ae199e Changed UploadBakedTextureModule so that it uses the same pattern as the others, in preparation for experiments to direct baked texture uploads to a robust instance. No functional or configuration changes -- should work exactly as before. 2013-07-12 12:53:58 -07:00
Robert Adams
65239b059f Enhance NullEstateData to remember stored estate values and return
them next time asked. This keeps any estate settings from being reset
when the estate dialog is opened in a region with null estate storage.
2013-07-11 20:55:32 -07:00
Robert Adams
1909ee70f8 Centralize duplicated code in SceneObjectPart for subscribing to
collision events. Improve logic for knowing when to add processing
routine to physics actor.
2013-07-11 16:57:07 -07:00
Diva Canto
83d1680057 Added a few more thingies to the asset client test to poke the threadpool. 2013-07-11 16:43:43 -07:00
Justin Clark-Casey (justincc)
ba8f9c9d0a Try naming the materials handlers again, this time registering the POST as RenderMaterials
This was probably the mistake.
The other handlers are named RenderMaterials as well but this actully has no affect apart from on stats, due to a (counterintuitive) disconnect between the registration name and the name  of the request handler.
Will be tested very soon and reverted if this still does not work.
2013-07-11 23:51:10 +01:00
Justin Clark-Casey (justincc)
7c2e4786ce minor: remove some regression test logging switches accidentally left uncommented. 2013-07-11 23:19:55 +01:00
Justin Clark-Casey (justincc)
e15a15688b minor: Take out unnecessary clumsy sleep at the end of regression Test404Response().
This wasn't actually necessary in the end but was accidentally left in.
2013-07-11 23:11:35 +01:00
Justin Clark-Casey (justincc)
f57f49eede Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-11 23:05:10 +01:00
Justin Clark-Casey (justincc)
44e9849ed1 Fix regression where llHTTPRequests which did not get an OK response returned 499 and the exception message in the http_response event rather than the actual response code and body.
This was a regression since commit 831e4c3 (Thu Apr 4 00:36:15 2013)
This commit also adds a regression test for this case, though this currently only works with Mono
This aims to address http://opensimulator.org/mantis/view.php?id=6704
2013-07-11 23:02:30 +01:00
Diva Canto
ee51a9f9c9 Added property to make for more flexible testing. 2013-07-11 14:23:37 -07:00
Diva Canto
51d106cff8 Added a test for the asset service 2013-07-11 14:21:57 -07:00
Diva Canto
c4f1ec1fd6 Changed the UserProfileModule so that it's less greedy in terms of thread usage. 2013-07-11 10:21:20 -07:00
Diva Canto
ea371a6f54 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-11 09:48:15 -07:00
Diva Canto
604967b31e Switched UUIDNameRequest and RegionHandleRequest to Sync, because now they are also non-blocking handlers. 2013-07-11 09:47:46 -07:00
Diva Canto
3b48b6a792 Switched TransferRequest (UDP packet handler) to sync. The permissions checks may block, so they get a FireAndForget. Everything else is non-blocking. 2013-07-11 09:44:48 -07:00
dahlia
0120e858b7 remove names from Capability handlers (added by justincc in commit 013710168b) as they seem to disable the use of multiple access methods for a single Capability in MaterialsDemoModule 2013-07-10 22:30:41 -07:00
Diva Canto
9173130fde Switched RegionHandshakeReply to Sync, because it's not doing anything blocking. 2013-07-10 20:48:13 -07:00
Diva Canto
fe5da43d15 EXPERIMENTAL: make RequestImage (UDP packet handler) sync instead of async. This _shouldn't_ screw things up, given that all this does is to dump the request in a queue. 2013-07-10 19:29:14 -07:00
Diva Canto
bdaeb02863 show client stats: Fixed the requests/min. Also changed the spelling of the command, not without the dash. 2013-07-10 17:14:20 -07:00
Diva Canto
864a86983e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-10 16:10:04 -07:00
Diva Canto
1b265b213b Added show client-stats [first last] command to expose what viewers are requesting. 2013-07-10 16:09:45 -07:00
Robert Adams
59d19f038a Remove a null reference exception in SimianPresenceServiceConnector that
occurs when GetGridUserInfo cannot find the requested user info.
2013-07-10 08:55:54 -07:00
Robert Adams
38e6da5522 Comment out old inbound UDP throttling hack. This would cause the UDP
reception thread to sleep for 30ms if the number of available user worker
threads got low. It doesn't look like any of the UDP packet types are
marked async so this check is 1) unnecessary and 2) really crazy since
it stops up the reception thread under heavy load without any indication.
2013-07-09 18:34:24 -07:00
Robert Adams
bb6fb65392 Revert "minor: remove some mono compiler warnings in UserProfileModule"
Revert until we understand why all the calls to GetUserProfileServerURI were also
commented out.

This reverts commit 5f58b9b552.
2013-07-09 18:24:39 -07:00
Justin Clark-Casey (justincc)
cec8e6d0f7 If a sensor is in an attachment, avoid throwing an exception if the attachee is removed from the scene before we try to retrieve them. 2013-07-09 23:52:47 +01:00
Justin Clark-Casey (justincc)
095066b1ce Handle UUIDNameRequest UDP packet processing async instead of within the main inbound UDP processing loop, to avoid any chance that this is delaying the main udp in loop.
The potential impact of this should be lower now that these requests are being placed on a queue.
2013-07-09 23:39:29 +01:00
Diva Canto
d0dfb744b2 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-09 14:13:51 -07:00
Diva Canto
67e500383e Put guards on a bunch of exception-inducing code, as seen in logs from load test. 2013-07-09 14:12:52 -07:00
Robert Adams
2c761cef19 BulletSim: add parameter to optionally disable vehicle linear deflection.
Add parameter to not apply vehicle linear deflection Z forces if
vehicle is not colliding. This defaults to 'true' so vehicles will fall
even if there is some linear deflection to apply.
2013-07-09 09:37:42 -07:00
dahlia
065f8f56a2 remove some cruft and trigger a rebuild 2013-07-08 19:18:01 -07:00
dahlia
33eea62606 remove an invalid null UUID check which caused a warning 2013-07-08 17:12:39 -07:00
Robert Adams
fad4241e4e BulletSim: make all the different angularVerticalAttraction algorithms
selectable from configuration paramters.
Changed default algorithm to "1" from previous default as it seems to
handle Y axis correction a little better.
Add config file independent enablement of vehicle angular forces to
make debugging easier (independent testing of forces).
2013-07-08 16:24:31 -07:00
Justin Clark-Casey (justincc)
76b2b20f7e minor: remove mono compiler warnings from HGSuitcaseInventoryService 2013-07-09 00:06:22 +01:00
Justin Clark-Casey (justincc)
5f58b9b552 minor: remove some mono compiler warnings in UserProfileModule 2013-07-09 00:04:46 +01:00
Justin Clark-Casey (justincc)
83da14008f minor: remove some mono compiler warnings in new groups code 2013-07-08 23:57:05 +01:00
Justin Clark-Casey (justincc)
af9b17c545 minor: remove mono compiler warnings related to keyframe code 2013-07-08 23:52:40 +01:00
Justin Clark-Casey (justincc)
2025dd25f6 Add missing file BaseOutputStreamHandler.cs from recent commit e19defd 2013-07-08 23:50:40 +01:00
Justin Clark-Casey (justincc)
047ef9c2a5 minor: remove some mono compiler warnings in OdePlugin 2013-07-08 23:36:57 +01:00
Justin Clark-Casey (justincc)
eccec4f8f6 minor: remove now unused migration-hack bool from DAMap 2013-07-08 23:32:19 +01:00
Justin Clark-Casey (justincc)
8be59829d1 minor: Add back commented out logging message in Caps.RegisterHandler() that I accidentally removed. 2013-07-08 22:41:24 +01:00
Justin Clark-Casey (justincc)
013710168b For stat purposes, add names to capability request handlers where these were not set 2013-07-08 22:39:07 +01:00
Justin Clark-Casey (justincc)
dc54581700 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-08 22:19:37 +01:00
Diva Canto
b2d4b8b1da BaseHttpServer: if the handler sets the content length, don't override it. This happens in HEAD handlers. 2013-07-08 14:12:11 -07:00
Justin Clark-Casey (justincc)
c3db595944 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-08 22:07:27 +01:00
Justin Clark-Casey (justincc)
e19defde36 Add "show caps stats by user" and "show caps stats by cap" console commands to print various counts of capability invocation by user and by cap
This currently prints caps requests received and handled, so that overload of received compared to handled or deadlock can be detected.
This involves making BaseStreamHandler and BaseOutputStream record the ints, which means inheritors should subclass ProcessRequest() instead of Handle()
However, existing inheriting classes overriding Handle() will still work, albeit without stats recording.
"show caps" becomes "show caps list" to disambiguate between show caps commands
2013-07-08 22:03:07 +01:00
Justin Clark-Casey (justincc)
a38c2abae4 Make dictionary read/write locking consistent in CapabilitiesModule, rename two dictionary fields to standard m_ format 2013-07-08 18:07:04 +01:00
Diva Canto
c66a9a08e4 Placed a throttle on UserManagementModule for name lookups. Singularity apparently is flooding the sims with name requests. 2013-07-08 08:41:18 -07:00
Diva Canto
1e72e1b258 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-07 20:44:23 -07:00
Diva Canto
bbb9af363d Print out caller IP when unusual requests are received. 2013-07-07 20:43:42 -07:00
Vegaslon
bbc40fab62 BulletSim: Different Implementation of Angular Deflection for vehicles, Activates it again and fixes problem with fighting with vertical attractor removing wobble of forward axis. Comments on testing welcome, May require adjustments of this force or other forces after this commit, exact tweaking to come after testing on other hardware.
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-07-07 06:18:50 -07:00
Robert Adams
6026759406 BulletSim: fix jumping up and down of linksets when center-of-mass
was enabled. Didn't effect the physical position but the viewer saw
the linkset jumping between its simulator center and its physical
center.
2013-07-07 05:47:41 -07:00
Robert Adams
70d24a654b BulletSim: rename position and orientation variables to remove the
inconsistant use of Raw* and _* conventions.
2013-07-07 05:46:24 -07:00
Diva Canto
1286677352 Try to normalize the creatorData of scene object parts with the trailing '/'. What a nightmare this '/' is! 2013-07-06 18:37:54 -07:00
Diva Canto
803e5498b0 A little more debug 2013-07-06 18:27:03 -07:00
Diva Canto
71e26555bd Revert "WARNING: BRUTE FORCE DEBUG AGAIN. AVOID USING THIS COMMIT"
This reverts commit 9b75d75724.
2013-07-06 18:16:27 -07:00
Diva Canto
391633c072 Some more fixes on strange behaviors of Unknown User, esp. related to large messy inventories and esp. related to kokua 2013-07-06 18:02:17 -07:00
Diva Canto
1dd3a0bc57 MORE DEBUG. DON"T USE THIS. 2013-07-06 17:29:19 -07:00
Diva Canto
9b75d75724 WARNING: BRUTE FORCE DEBUG AGAIN. AVOID USING THIS COMMIT 2013-07-06 16:51:14 -07:00
Diva Canto
93fd5e4036 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-06 15:18:29 -07:00
Diva Canto
b29a09ab8e Simina activity detector was too eager. Disabled it in case simian is not being used. 2013-07-06 15:17:55 -07:00
Robert Adams
d838f15d97 Add implementations for llSetVelocity and llSetAngularVelocity. 2013-07-06 09:53:30 -07:00
Robert Adams
a65cec3986 BulletSim: implementation of linkset center-of-mass.
Default off, for the moment, until more testing.
Add separate thread and center-of-mass flags to OpenSimDefaults.ini.
Clean up comments in OpenSimDefaults.ini.
2013-07-06 08:25:15 -07:00
Robert Adams
97698ae311 BulletSim: More tweaking on center-of-mass. Almost there. Changes have no effect if LinksetOffsetCenterOfMass=false (the default). 2013-07-06 08:25:15 -07:00
Robert Adams
03268d85c4 BulletSim: comments and non-functional changes working toward the center-of-gravity implementation. 2013-07-06 08:25:14 -07:00
Robert Adams
5f97c6f8f0 BulletSim: non-functional updates. Comments and formatting.
Update TODO list.
2013-07-06 08:25:13 -07:00
Diva Canto
c358d5d168 Changed a few bits in Inventory/Archiver/InventoryArchiveReadRequest.cs to be less dependent on a Scene. 2013-07-05 20:17:10 -07:00
Justin Clark-Casey (justincc)
2f6ee8aee2 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-06 00:55:35 +01:00
Justin Clark-Casey (justincc)
98de67d573 Fix mono warning in LLImageManagerTests 2013-07-06 00:55:14 +01:00
justincc
ccceb6d6d2 Fix windows build break fromrecent dd1f95 for real this time - put new dll reference in the wrong place 2013-07-06 00:52:54 +01:00
Justin Clark-Casey (justincc)
55ac8c83c7 Get InventoryWorkerThreads to update watchdog on processing requests 2013-07-06 00:34:22 +01:00
Justin Clark-Casey (justincc)
a44ad01492 Fix build break from recent commit dd15f95 on windows 2013-07-06 00:32:11 +01:00
Justin Clark-Casey (justincc)
67407024a2 Update thread watchdog on GridServiceRequestThread periodically and turn off alarming
Unfortunately, alarm can spuriously go off if the thread blocks for a long time on an empty queue.
2013-07-06 00:29:19 +01:00
Justin Clark-Casey (justincc)
5dbdd5f8b4 refactor: Make stats and sim status simpler by extending BaseStreamHandler like other handlers instead of implementing the IStreamedRequestHandler interface directly 2013-07-06 00:12:48 +01:00
Justin Clark-Casey (justincc)
dd15f95499 Add very basic regression test TestChildAgentSingleRegionCapabilities() which checks for addition and removal of capabilities on add/remove of child agent 2013-07-05 20:06:27 +01:00
Diva Canto
ca26583e6b Delete some verbose debug messages 2013-07-04 15:17:06 -07:00
Diva Canto
c4506cf4f3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-04 14:51:55 -07:00
Diva Canto
8265a88c4a Throttle the viewer's requests for region handles. Apparently Kokua is requesting this for all landmarks in inventory. Not sure why. But this seems to be the root cause of the login freeze mentioned before. This commit adds a blocking queue / process thread pattern. 2013-07-04 14:51:18 -07:00
BlueWall
f2f33b7577 Some consistency fixes for the ini to stop parser breakage 2013-07-04 17:45:17 -04:00
Diva Canto
d80936bbbb Guard against completely unknown user UUIDs. 2013-07-04 14:07:25 -07:00
Diva Canto
da3aa44138 Debug the RegionHandle handler (same issue) 2013-07-04 13:27:53 -07:00
Diva Canto
33ddb6c246 Revert "WARNING: BRUTE FORCE DEBUG. AVOID USING THIS COMMIT."
This reverts commit c95a23863a.
2013-07-04 13:25:58 -07:00
Diva Canto
c95a23863a WARNING: BRUTE FORCE DEBUG. AVOID USING THIS COMMIT. 2013-07-04 13:13:52 -07:00
Diva Canto
38a04ff993 Revert "Same freeze issue, now checking if it's in estate"
This reverts commit ca380ec039.
2013-07-04 13:00:06 -07:00
Diva Canto
d997c49e47 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-04 12:45:34 -07:00
Diva Canto
ca380ec039 Same freeze issue, now checking if it's in estate 2013-07-04 12:41:45 -07:00
Justin Clark-Casey (justincc)
93ee515d9d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-04 20:41:02 +01:00
Justin Clark-Casey (justincc)
fdafc2a16c With diva's permission, temporarily reinsert Unknown UserUMMAU3 to make sure that GUN7 failure has largely disappeared.
Unknown UserUMMAU3 insertion should definitely be removed down the line.
However, I would like a little more time to check the GUN* reduction first, since removing UMMAU3 will make these failures appear as GUN7 instead.
Also bumps GUN6 -> GUN7 and UMMAU2 -> UMMAU3
2013-07-04 20:39:16 +01:00
Diva Canto
bf214122cd More debug, same issue 2013-07-04 11:53:22 -07:00
Diva Canto
15d0bc0900 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-04 11:37:00 -07:00
Diva Canto
ec9ffbb89a More debug, same issue 2013-07-04 11:36:10 -07:00
Justin Clark-Casey (justincc)
c61becc62b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-04 19:33:12 +01:00
Diva Canto
0cc0a2485c More debug related to the previous commit 2013-07-04 11:18:05 -07:00
Diva Canto
ae42c93f9a Now trying to find a cause of freeze at login related to friends status notifications. 2013-07-04 10:59:21 -07:00
Diva Canto
98a2fa8e35 HG Friends: this was commented some commits ago, but it shouldn't have been. 2013-07-04 10:23:20 -07:00
Diva Canto
068a3afad9 HG Friends: migration #3 is failing on some installations of MySql. Setting the table to InnoDB seems to fix the problem. 2013-07-04 09:51:31 -07:00
Justin Clark-Casey (justincc)
16f40c1a15 Add --default option to "debug lludp packet" command to allow packet logging to be performed immediately from client start 2013-07-04 17:29:53 +01:00
Diva Canto
5eb78aad96 Revert "HG Friends: debug an issue where the friends data stored in the DB is incomplete."
This reverts commit 27cdfb7b84.
2013-07-04 09:17:01 -07:00
Diva Canto
80f4a008eb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-04 08:48:19 -07:00
Diva Canto
27cdfb7b84 HG Friends: debug an issue where the friends data stored in the DB is incomplete. 2013-07-04 08:47:45 -07:00
Justin Clark-Casey (justincc)
25889b2d7e change "debug packet" command to "debug lludp packet" to conform with other "debug lludp" options
also moves the implementing code into LLUDPServer.cs along with other debug commands from OpenSim.cs
gets all debug lludp commands to only activate for the set scene if not root
2013-07-04 00:02:53 +01:00
Diva Canto
119f84fe11 Squoosh one last opportunity for Unknown Users to creep in. 2013-07-02 17:03:04 -07:00
Diva Canto
06dba1fa62 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-07-02 16:47:17 -07:00
Diva Canto
4d24bf75fd Deleted debug messages. Fixed a null ref exception on the POST handler of GridUserServerPostHandler.cs 2013-07-02 16:46:35 -07:00
Justin Clark-Casey (justincc)
d01b8e163d minor: Correct typo of "Descrition" to "Description" in "show object *" console commands
Thanks to Ai Austin for pointing this out.
2013-07-03 00:27:22 +01:00
Diva Canto
316e8f9239 Fix SQL statement 2013-07-02 16:10:09 -07:00
Diva Canto
9725b829d5 Do the same for SQLite and MSSQL 2013-07-02 15:48:30 -07:00
Diva Canto
2c05caec7f Really make it call the method with the query interface 2013-07-02 15:47:02 -07:00
Diva Canto
626940ceb8 More debug messages 2013-07-02 15:39:10 -07:00
Diva Canto
e984bfb4c6 This should have a strong effect on the Unknown User issue mantis #6625 2013-07-02 14:31:39 -07:00
Diva Canto
ccca005969 HG: close a loophole by which if something was wrong with the ServiceURLs it resulted in never ending asset requests 2013-07-02 13:29:44 -07:00
Justin Clark-Casey (justincc)
635704b7ef Update debug unknown user name UserUMMTGUN3 to UserUMMTGUN4 and UserUMMAU -> UserUMMAU2 to track any new occurences.
This is to see the impact that Diva's fixes related to this issue (last one is currently commit c7383688)
You will need to clear your viewer cache for this to have any effect
Relates to http://opensimulator.org/mantis/view.php?id=6625
2013-07-01 23:54:04 +01:00
Robert Adams
8eb86c9ec9 BulletSim: add the reset of the last commit for flush log file problems.
Fix small typo in one log message.
2013-06-30 19:22:43 -07:00
Robert Adams
c24c99f4ba BulletSim: fix an occasional crash with flushing log files. 2013-06-30 19:08:15 -07:00
Robert Adams
9d5ae75950 BulletSim: remove the handle to the vehicle actor and cause routines
that need it to look it up.
2013-06-30 17:07:51 -07:00
Robert Adams
425d2a2a97 BulletSim: set linkset type to be prim specific rather than a simulator
wide default. This allows individual prims to differ in the
underlying linkset implementation.
2013-06-30 17:07:50 -07:00
Robert Adams
23516717e4 BulletSim: a better version of llMoveToTarget that doesn't go crazy.
There is still some overshoot but mostly fixes Mantis 6693.
Fix bug where moveToTarget was active for non-physical objects
and while selected.
Fix bug where move target was not getting changed if the script
changed the target during a move.
2013-06-30 17:07:49 -07:00
Robert Adams
2f4a729d40 BulletSim: add inTaintTime parameter to collision cache clear function. 2013-06-30 17:07:48 -07:00
Diva Canto
e377abcc35 Groups V2: charge for group creation only after the group has been successfully created 2013-06-30 08:39:35 -07:00
Diva Canto
c738368846 Revert "More debug mantis #6625"
This reverts commit 20f2cf8769.
2013-06-30 07:25:46 -07:00
Diva Canto
1e97972f78 Revert "One more debug mantis #6625"
This reverts commit 8fa5d12fcb.

Conflicts:
	OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
2013-06-30 07:25:13 -07:00
Diva Canto
d7775d1e11 Revert "A little more debug for the Unknown User problem mantis #6625"
This reverts commit ff47cf77ab.
2013-06-30 07:22:27 -07:00
Diva Canto
1fc873d09f Same fix to LocalInventoryServiceConnector.cs 2013-06-30 07:21:22 -07:00
Diva Canto
74e7fac13f More on mantis #6625 2013-06-29 22:32:26 -07:00
Diva Canto
20f2cf8769 More debug mantis #6625 2013-06-29 21:54:10 -07:00
Diva Canto
c462e0a51c Fixed previous debug message 2013-06-29 21:30:07 -07:00
Diva Canto
8fa5d12fcb One more debug mantis #6625 2013-06-29 21:26:58 -07:00
Diva Canto
0c97021565 More debug for mantis #6625. It looks like the home friends list is being fetched on HG TPs. 2013-06-29 21:05:45 -07:00
Diva Canto
ff47cf77ab A little more debug for the Unknown User problem mantis #6625 2013-06-29 19:15:25 -07:00
Diva Canto
00093a305d Changed HG status notifications timeout down to 15secs from the default 100. 2013-06-29 18:35:23 -07:00
Justin Clark-Casey (justincc)
3a634c56e3 Remove hack to migrate previous experimental-level os materials data.
This didn't seem to be working anyway and it's better not to have such hacks in the code for experimental stuff.
2013-06-29 00:23:41 +01:00
Justin Clark-Casey (justincc)
371085546d Add materials store null check into UuidGatherer code. 2013-06-28 23:57:41 +01:00
Justin Clark-Casey (justincc)
eed15703ed Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-28 23:35:44 +01:00
Justin Clark-Casey (justincc)
4406f07a84 Add IMG_BLOOM1.jp2 to standard asset set, which is used in stars.
This makes stars appear more realistically rather than as massive chunks due to the missing IMG_BLOOM1 asset from the viewer.
Thanks to YoshikoFazuku for supplying the star asset which I then uploaded via a viewer and extracted as JPEG2000.
Thanks also to Ai Austin for helping this process along.
See http://opensimulator.org/mantis/view.php?id=6691 for more details.
2013-06-28 23:34:16 +01:00
dahlia
4cb4c9fb25 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-28 14:03:46 -07:00
dahlia
cbb5122729 add some locking to materials storage dictionary 2013-06-28 14:00:28 -07:00
Justin Clark-Casey (justincc)
e26e8b8829 Remove "Asset deletion not supported by database" message from "delete asset" robust/standalone console command since it actually was implemented and performed.
Improve other associated messages.
2013-06-28 19:19:38 +01:00
Justin Clark-Casey (justincc)
dc0455e217 In XAssetService, on a delete asset request also delete the asset in any chained service.
This eliminates the async migration since it causes a race condition with the "delete asset" console command
2013-06-28 19:11:44 +01:00
Justin Clark-Casey (justincc)
f6ce87c96d Reinsert code for gathering uuids reference by materials back directly into UuidGatherer for now.
This cannot be triggered as an event from Scene.EventManager since some invocations of UuidGatherer (e.g. IAR saving) use scene objects which are not in scenes.
There needs to be some way for modules to register for events which are not connected with a particular scene.
2013-06-28 18:50:33 +01:00
dahlia
529633d970 add method docs for DAMap.GetStore() and DAMap.SetStore() 2013-06-27 18:44:27 -07:00
dahlia
d47fc48b32 and yet another check for null returned from DynAttrs.GetStore() 2013-06-27 18:01:17 -07:00
dahlia
c1b8f83dd4 test for null return from DynAttrs.GetStore() 2013-06-27 17:53:15 -07:00
Justin Clark-Casey (justincc)
149487ea0f refactor: Move code for gathering textures referenced by materials into MaterialsDemoModule from UuidGatherer
This code is now triggered via EventManager.OnGatherUuids which modules can subscribe to.
2013-06-27 23:42:35 +01:00
Justin Clark-Casey (justincc)
f7d09b898a Make the concept of namespaces explicit in dynamic attributes
This is in order to reduce the likelihood of naming clashes, make it easier to filter in/out attributes, ensure uniformity, etc.
All dynattrs in the opensim distro itself or likely future ones should be in the "OpenSim" namespace.
This does alter the underlying dynattrs data structure.  All data in previous structures may not be available, though old structures should not cause errors.
This is done without notice since this feature has been explicitly labelled as experimental, subject to change and has not been in a release.
However, existing materials data is being preserved by moving it to the "Materials" store in the "OpenSim" namespace.
2013-06-27 23:14:28 +01:00
Justin Clark-Casey (justincc)
f78d2ef166 Update temporary "Unknown UserUMMTGUN2" name to "Unknown UserUMMTGUN3" to see if Diva's recent HG updates (post 6c7e33f) fix this issue.
This string is returned if a UserManagementModule.TryGetUserNames() cannot find a server-side name binding or a user account for a given UUID.
This is only called when the viewer requests a binding via the UDP UUIDNameRequest message
2013-06-25 00:46:15 +01:00
Justin Clark-Casey (justincc)
ce9b1320d2 Improve situation where editing just the root prim of an attachment causes other prims to be set to very far off positions on reattach.
Functionally the same as the patch by tglion in http://opensimulator.org/mantis/view.php?id=5334
However, not yet perfect - after editing just root prim on reattach the position is still wrong, though other prims are not set to far off positions.
2013-06-25 00:41:46 +01:00
Justin Clark-Casey (justincc)
4b00203fa5 Tidy up SOG.UpdateRootPosition() to eliminate unnecessary copying of Vector3 structs 2013-06-25 00:15:55 +01:00
Melanie
936700bda3 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-06-23 01:49:45 +01:00
Melanie
4bf1afe300 Fix prim locking to behave like SL 2013-06-23 01:34:35 +01:00
Diva Canto
edb11a7eca Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-22 08:29:54 -07:00
Diva Canto
6c7e33fe47 Change IsLocalRegion from using region handle to using regionID. This was affecting UpdateAgent and CloseAgent in cases where the foreign region is on the same coordinates as *some* local region. 2013-06-22 08:29:06 -07:00
Diva Canto
ca3ce6da73 HG: avoid call on localhost between sim and UAS for standalone. 2013-06-22 08:26:59 -07:00
Diva Canto
4778d67005 Finally moved HG agent transfers to use agent fatpacks. 2013-06-21 20:52:46 -07:00
Robert Adams
74539659f6 BulletSim: move new linear deflection code to own routine.
Remove VehicleForwardVelocity changed storage since the value
will be modified as movement is processed.
2013-06-21 10:46:21 -07:00
Vegaslon
a5de4f692b BulletSim: Implementation of Linear Deflection, it is a partial help for the vehicle tuning diffrence between Opensim and Second life.
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-06-20 19:02:15 -07:00
Robert Adams
bbeff4b8ca BulletSim: rework velocity updating when not colliding and not flying
to prevent infinite jumps. Now jumps last only AvatarJumpFrames long
(default 4) which is about as high as in SL.
TODO: jumping should only depend on standing (collision with feet)
rather than collision anywhere on the avatar.
2013-06-20 09:55:40 -07:00
Justin Clark-Casey (justincc)
a33b6eed6d minor: remove mono compiler warnings in WebsocketServerHandler.cs 2013-06-20 00:54:19 +01:00
Justin Clark-Casey (justincc)
085a87060a Change "ObjectMemory" stat to "HeapMemory" to align with other stat names. Also round this and ProcessMemory to three decimal places in common with other memory stats.
I believe leaving out such minor info makes stats easier to read
2013-06-20 00:52:39 +01:00
Justin Clark-Casey (justincc)
05790ba1cf Allow more than one stat category to be specified in "show stats"
e.g. "show stats httpserver.9000 server.network"
2013-06-20 00:45:56 +01:00
Justin Clark-Casey (justincc)
5b1a9f84fd minor: Change "memory churn" terminology in statistics to "heap allocation rate" since this is more generally meaningful 2013-06-20 00:32:12 +01:00
Justin Clark-Casey (justincc)
d97333255d Fix minor bug where the check whether to display SmartThreadPool stats was accidentally != null rather than == FireAndForgetMethod.SmartThreadPool
Due to another check this had no practical effect
2013-06-20 00:22:44 +01:00
Justin Clark-Casey (justincc)
3370e19205 minor: fix mono compiler warning in FetchInventory2Handler 2013-06-20 00:17:20 +01:00
Justin Clark-Casey (justincc)
086fd70a5f Make it possible to specify display of stats in a particular 'container' by separating category and container with a period.
e.g. "show stats server.network"
I failed to realize this had already been implemented without the period in the show stats command (as the command help had not been updated).
However, I would prefer the . approach as it will allow specifying multiple stats, easier wildcarding, etc.
This commit also prevents any stat from having a period in its short name.
2013-06-20 00:00:39 +01:00
Justin Clark-Casey (justincc)
84af1cab9b Display existing statistic of how many http requests a server is making as server.network.HTTPRequestsMade in "show stats all" 2013-06-19 20:48:12 +01:00
Talun
8a86e29579 Mantis 6608: Math error in parcel dimensions/borders seen with land show command
This patch changes the land show console command to return numbers in the
range 4 to 256 for the "to" coordinates instead of 0 to 252

Also trailing spaces removed from some lines.
2013-06-19 00:26:23 +01:00
Justin Clark-Casey (justincc)
1a72f62d7b minor: remove mono compiler warning in OfflineIMService 2013-06-18 23:52:15 +01:00
Kevin Cozens
3fe5e9057f Prevent an exception if no offline messages were retrieved. 2013-06-18 23:15:38 +01:00
Justin Clark-Casey (justincc)
dda44e31e3 minor: tidy up spacing if display a unit for additional stat information 2013-06-18 23:10:50 +01:00
Justin Clark-Casey (justincc)
9501a583cb Make number of inbound http requests handled available as a httpserver.<port>.IncomingHTTPRequestsProcessed stat 2013-06-18 23:07:18 +01:00
Justin Clark-Casey (justincc)
768e8e363b Fix issue where stat samples were accidentally static, so that any additional stat with sampling would produce wrong results 2013-06-18 22:49:49 +01:00
Justin Clark-Casey (justincc)
0767523834 Fix other places when saving scripts or notecards in prim inventories where messages should be transient without an OK button 2013-06-18 21:21:59 +01:00
Justin Clark-Casey (justincc)
a1e32b8437 If SmartThreadPool is active, display statistical information about it in "show stats server"
Also puts these and previous builtin threadpool stats in the "threadpool" stat container rather than "processor"
2013-06-18 00:10:21 +01:00
Justin Clark-Casey (justincc)
b7c9dee033 refactor: Move existing code to generate report information on the threadpool to the ServerBase rather than being in Util 2013-06-17 23:57:10 +01:00
Justin Clark-Casey (justincc)
c0a00cd7fd Fix bug where no threadpool data would be displayed in the "show threads" command if threadpool type was QueueUserWorkItem (Unsafe worked as expected) 2013-06-17 23:34:09 +01:00
Justin Clark-Casey (justincc)
713a14a6b5 minor: remove mono compiler warnings in WebFetchInvDescModule 2013-06-17 23:23:56 +01:00
Justin Clark-Casey (justincc)
b9dac1f8df Fix test failure in BasicCircuitTests from previous commit 0d2fd0d9 2013-06-17 23:17:55 +01:00
Justin Clark-Casey (justincc)
865d46ae1e Drop server level stats to debug instead of info.
This was the original intention with these stats, as I didn't believe they would be useful to ordinary users if everything is working as it should.
Please amend if this is an issue.
Just for now, levels actually have no impact on what is displayed via the "show stats" command.
2013-06-17 22:57:47 +01:00
Justin Clark-Casey (justincc)
2c9bb0f973 Add server stats for available builtin threadpool and iocp workers 2013-06-17 22:55:25 +01:00
Justin Clark-Casey (justincc)
0d2fd0d914 Make general server stats available on the robust console as well as the simulator console
This means the "show stats" command is now active on the robust console.
2013-06-17 22:39:00 +01:00
dahlia
694c4bcbb6 correct method doc for llRot2Axis() 2013-06-14 20:00:20 -07:00
Justin Clark-Casey (justincc)
e6cb7b4764 Lock m_classifiedCache and m_classifiedInterest dictionary reads in UserProfileModule since in the presence of writes these are not thread-safe operations.
Simplified locking to m_classifiedCache only since r/w of both dictionaries always occurs together
2013-06-15 00:52:57 +01:00
Justin Clark-Casey (justincc)
42b0c68eab Correct build break in previous commit 9c530d7 2013-06-15 00:46:55 +01:00
Justin Clark-Casey (justincc)
9c530d725f refactor: In UserProfileModule, change classifiedCache and classifiedInterest to m_classifiedCache and m_classifiedInterest
This is the coding standard name style for private fields.
2013-06-15 00:41:02 +01:00
Justin Clark-Casey (justincc)
ecfc6a3f4a Add the standard OpenSimulator copyright notice to the top of InventoryCache.cs 2013-06-15 00:36:16 +01:00
Justin Clark-Casey (justincc)
720806b661 Adjust the locking on InventoryCache. Locking for r/w of the ExpiringCache isn't needed since it's thread safe but r/w of contained dictionaries isn't thread-safe 2013-06-15 00:34:45 +01:00
Justin Clark-Casey (justincc)
da3724a904 minor: remove mono compiler warnings from LSL_Api, properly format method doc for llRot2Axis() 2013-06-15 00:11:36 +01:00
Talun
f074739e33 Mantis 6280: llSetContentType(). An implementation.
An implimentation of llSetContentType including all of the new
constants added since the mantis was raised.
2013-06-15 00:06:03 +01:00
Talun
fc89bde044 Mantis 6108: ossetprimitiveparams temporary/phantom problem
Corrected to ensure that the target prim is updated by
osSetPrimitiveParams when setting PRIM_TEMP_ON_REZ and/or PRIM_PHANTOM
instead of the prim that the script is in.
2013-06-15 00:00:00 +01:00
Justin Clark-Casey (justincc)
db9d9d83eb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-14 23:58:16 +01:00
Justin Clark-Casey (justincc)
d412c1b0eb Don't try to abort worker threads in WebFetchInvDescModule if module was not enabled.
This also moves the abort to RemoveRegion() rather than a destructor.
2013-06-14 23:53:20 +01:00
BlueWall
d7f3d7efd2 Merge branch 'master' of /home/opensim/src/opensim 2013-06-13 09:27:13 -04:00
BlueWall
b2c8d5eec7 Add Option: ClassifiedFee
Add option to set minimum fee for publishing classifieds. Many viewers have a
  hard coded minimum of 50, which makes publishing classifieds fail where grids
  have no economy. This allows the grid to set the minimum fee to a suitable
  value for their operation.

  The option is located in the [LoginService] section and defaults to 0. The
  value is sent as "classified_fee" in the login response.
2013-06-13 09:18:27 -04:00
Diva Canto
b271217084 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-12 17:48:48 -07:00
Diva Canto
7c00ccb548 DataSnapshot: changed those annoying messages to Debug instead of Info. 2013-06-12 17:48:20 -07:00
Justin Clark-Casey (justincc)
6b8e94864a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-13 00:33:53 +01:00
Justin Clark-Casey (justincc)
7759b05dcb Make XInventoryServicesConnector properly handle a RESULT = false return for methods where this contains failure rather than throwing an exception.
Result = False is generated for methods such as GetFolderForType() when the other end wants to signal a failure of the operation in methods such as GetFolderForType()
2013-06-13 00:31:32 +01:00
teravus
3357300362 * This fixes having to select and deselect prim to get keyframemotion to start running when pulled from data storage. 2013-06-12 18:13:00 -05:00
Justin Clark-Casey (justincc)
824a4b4808 After calls to GetSuitcaseXFolder() in HGSuitcaseInventoryService, consistently check for null return and log warning rather than throw exception.
This was being done already in some places.
If an exception is thrown it is now an error rather than debug
2013-06-12 23:47:47 +01:00
Justin Clark-Casey (justincc)
ef5be42c86 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-12 23:32:51 +01:00
Justin Clark-Casey (justincc)
47b6e78790 Implement logging of first 80 characters (debug level 5) or full body data (debug level 6) on outgoing requests, depending on debug level
This is set via "debug http out <level>"
This matches the existing debug level behaviours for logging incoming http data
2013-06-12 21:34:20 +01:00
BlueWall
7a17c3720b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-11 21:47:39 -04:00
BlueWall
9fec0faade Revert "Add option to set minimum fee for classified ads"
This reverts commit 90097de6c3.
2013-06-11 21:46:40 -04:00
Robert Adams
3cb65f0d31 BulletSim: when meshing or asset fetching fails, include position
and region with the offending object's name in the error message.
2013-06-11 17:58:08 -07:00
BlueWall
9f8a8f3719 Merge working repo 2013-06-11 20:38:54 -04:00
BlueWall
90097de6c3 Add option to set minimum fee for classified ads
Upcoming phoenix-firestorm (4.4.1) adds a configurable option for setting
  the minimum price for publishing a classified ad.

  http://hg.phoenixviewer.com/phoenix-firestorm-lgpl/rev/43415d69b048
2013-06-11 20:35:25 -04:00
Robert Adams
7556a0f699 Add TriggerScenePresenceUpdated events when an animation is added
or removed. Shouldn't impact anyone as only DSG seems to use
OnScenePresenceUpdated event.
Some minor format changes to AnimationSet's ToString().
2013-06-11 17:18:12 -07:00
Justin Clark-Casey (justincc)
135e10ba09 Uncomment Mic's code and split to create new regression TestAddTemporaryAsset() and TestAddTemporaryLocalAsset() 2013-06-11 23:55:45 +01:00
Diva Canto
d8da83b4ff Removed the lock entirely 2013-06-11 15:50:12 -07:00
Diva Canto
a0fed03e10 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-11 15:36:52 -07:00
Diva Canto
b33db917f5 Really bad idea to lock m_UserCache for so long in UserManagementModule. Added a special lock object instead, if we really want to avoid concurrent executions of that code. 2013-06-11 15:36:27 -07:00
Melanie
26b66c730e Put the "script saved" and "notecard saved" messages back into the bottom
right corner.
2013-06-11 21:03:16 +01:00
teravus
d47a18fd09 * Adds KeyFrameMotion storage support to SQLite, just a note, seems that there's still something wrong with keyframed motion starting when the sim starts up, you have to 'select' and 'deselect' the prim again to get it to appear to move. Not sure what this is but maybe melanie_t can comment on this.
* Has a prim table migration..     that might take a while, hold on to your hats.
* Fixes a null-ref when shutting down while keyframed motion is active.
2013-06-11 08:56:20 -05:00
dahlia
ed950e6c74 Adjust output of llRot2Axis and llRot2Angle to match domains SL(tm) uses. Addresses Mantis #0006671 2013-06-11 00:29:40 -07:00
dahlia
ba84074468 LSL_Rotation.Normalize() now returns 0,0,0,1 for x,y,z,s when normalization fails 2013-06-10 17:54:14 -07:00
dahlia
9d9b9d4938 llRot2Angle now checks absolute value of s rotation component before normalizing 2013-06-10 17:11:49 -07:00
dahlia
b242ead6df llRot2Axis now checks absolute value of s rotation component before normalizing. Also removed some excessive division and cleaned up a bit 2013-06-10 17:10:04 -07:00
teravus
1c7fbb86c2 Check For NaN and Infinity in llRot2Axis/Angle Fixes mantis #6669 2013-06-10 18:47:08 -05:00
dahlia
a949556c4e add a Normalize() method for LSL_Rotation 2013-06-10 16:42:49 -07:00
Justin Clark-Casey (justincc)
7af97f88b7 Add port numbers to poll service thread names so that we can tell which belong to which HttpServer 2013-06-10 23:39:17 +01:00
Justin Clark-Casey (justincc)
32d1e50565 Reinstate explicit starting and stopping of PollServiceRequestManager added in 3eee991 but removed in 7c0bfca
Do not rely on destructors to stop things.
These fire at unpredictable times and cause problems such as http://opensimulator.org/mantis/view.php?id=6503
and most probably http://opensimulator.org/mantis/view.php?id=6668
2013-06-10 23:30:35 +01:00
Mic Bowman
a2f1cd87f8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-10 15:15:38 -07:00
Mic Bowman
82e3b9a6e0 Fix test for adding temporary assets. Code for non-local temporary assets
is there but commented out.
2013-06-10 15:14:55 -07:00
Robert Adams
795acaa6aa BulletSim: add failure flag for meshing failure vs asset fetch failure
so error messages make more sense.
Change some BulletSim status log messages from WARN to INFO.
Update TODO list.
2013-06-10 14:12:45 -07:00
Mic Bowman
57141e34bf Remove Temporary from use to shortcut asset stores. The Local property
differentiates between local & grid storage. The Temporary property just
says that which service handles the it, the asset can be safely removed
in the future.
2013-06-10 13:26:19 -07:00
Talun
7de0912a97 Mantis 5346: llAxisAngle2Rot() should normalize before computing
Corrected to agree with
http://wiki.secondlife.com/wiki/Llaxisangle2rot#Deep_Notes
to normalise the vector before computing the quaternion

Signed-off-by: dahlia <dahlia@nomail>
2013-06-10 04:13:34 -07:00
Diva Canto
e741e5ebce More on mantis #6666 -- Groups V2 remote connector. 2013-06-09 20:20:37 -07:00
Diva Canto
4e2e69bd25 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-08 11:01:20 -07:00
Diva Canto
d00770d56b Groups V2 -- fix mantis #6666 2013-06-08 11:00:22 -07:00
BlueWall
75e4af9d39 Catch exception triggered by incoming avatars using legacy profiles 2013-06-08 11:00:05 -04:00
BlueWall
34d40e46a5 Merge branch 'profiles'
message to explain why this merge is necessary,
2013-06-07 20:17:45 -04:00
BlueWall
1cb1245d84 SQLite support for UserProfiles 2013-06-07 20:14:39 -04:00
BlueWall
1387224821 Ensure selected module is the only active one 2013-06-07 20:09:10 -04:00
Diva Canto
6aa54a8e16 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-07 16:01:07 -07:00
Diva Canto
07cc16ff9c Put the configuration back in FetchInventoryDesc2 cap. 2013-06-07 16:00:32 -07:00
Melanie
3a722ef81b Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-06-07 23:59:02 +01:00
Melanie
75631e0267 Supply proper type information for the various types of requests 2013-06-07 23:55:03 +01:00
Melanie
7c0bfca7a0 Adding Avination's PollService to round out the HTTP inventory changes 2013-06-07 23:43:45 +01:00
Justin Clark-Casey (justincc)
454499ff60 minor: Comment out debug logging (at warn level) about number of objects force selected and turn down to debug level 2013-06-07 23:38:23 +01:00
Justin Clark-Casey (justincc)
346eda27cc minor: add dr0berts to contributors list 2013-06-07 19:26:09 +01:00
Justin Clark-Casey (justincc)
f2a4d9b99c Fix regression where multiple close agents could be sent to the wrong neighbour region on root agent close.
This was introduced in git master d214e2d0 (Thu May 16 17:12:02 2013)
Caught out by the fact that value types used in iterators act like references and this was dispatched asynchronously.
Should address http://opensimulator.org/mantis/view.php?id=6658
2013-06-07 19:13:24 +01:00
Justin Clark-Casey (justincc)
a74e65200c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-07 19:12:55 +01:00
Donnie Roberts
045c26f626 In LocalFriendshipTerminated, send the original client's agentId to the friend being removed instead of the friend's own id. 2013-06-07 18:43:00 +01:00
Diva Canto
664c6191ed Mantis #6620 (removed debug message) 2013-06-07 08:37:18 -07:00
Melanie
ac9c37f31b Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-06-06 23:49:34 +01:00
Melanie
06012f8675 Fix keyframe motion copyright 2013-06-06 23:49:02 +01:00
Diva Canto
25fa647a74 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-05 20:20:22 -07:00
Diva Canto
2ebf70d719 Strengthen some assumptions. 2013-06-05 20:19:59 -07:00
Melanie
a3210d1cf8 Database persistence for keyframes. Contains a Migration. 2013-06-06 03:17:38 +01:00
Melanie
81ad9255b5 Hook up Keyframe motion to almost everything. Failing to cross a sim border
may yield unexpected results in some cases. No database persistence yet,
2013-06-06 03:03:05 +01:00
Melanie
e1d98c9e4c Committing Avination's Keyframe module. This is not hooked up yet and will do nothing. More commits to follow. 2013-06-06 02:25:19 +01:00
BlueWall
26cd59cd6f Merge branch 'master' of /home/opensim/var/repo/opensim 2013-06-05 18:55:42 -04:00
Melanie
e53b62304f Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-06-05 23:44:26 +01:00
Melanie
a7dbafb0e3 Port Avination's inventory send throttling 2013-06-05 23:42:50 +01:00
BlueWall
e449950030 Prevent processing for Npc 2013-06-05 18:42:15 -04:00
BlueWall
cd64da8746 Cleanup 2013-06-05 18:41:55 -04:00
Justin Clark-Casey (justincc)
47ffa12078 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-06-05 22:26:42 +01:00
Justin Clark-Casey (justincc)
f41fc4eb25 Avoid a deadlock where a script can attempt to take a ScriptInstance.m_Scripts lock then a lock on SP.m_attachments whilst SP.MakeRootAgent() attempts to take in the opposite order.
This is because scripts (at least on XEngine) start unsuspended - deceptively the ResumeScripts() calls in various places in the code are actually completely redundant (and useless).
The solution chosen here is to use a copy of the SP attachments and not have the list locked whilst creating the scripts when an avatar enters the region.
This looks to address http://opensimulator.org/mantis/view.php?id=6557
2013-06-05 22:20:48 +01:00
BlueWall
10572b78f8 Remove a couple of orphaned lines 2013-06-05 15:10:53 -04:00
BlueWall
b4f472c4fa Make locking more uniform 2013-06-05 15:08:25 -04:00
Robert Adams
b5d0ac4c42 BulletSim: default PhysicsTimeStep to same as the simulator's
heartbeat timestep when running the physics engine on a separate
thread. This reduces the occurance of heartbeats that happen when
there is no physics step which is seen as vehicle jerkyness.
2013-06-05 07:12:14 -07:00
Robert Adams
0c971d148c BulletSim: fix corner case when rebuilding a compound linkset while
a mesh/hull while a mesh or hull is being rebuilt when its asset
is fetched. This fixes a 'pure virtual function' crash when changing
physical state of complex linksets that include many meshes.
2013-06-05 07:09:43 -07:00
Diva Canto
43d804b998 New HttpServer_OpenSim.dll with increased limits on number of connections, requests, etc. 2013-06-04 12:27:22 -07:00
Robert Adams
07058b044b BulletSim: experimental movement of physics execution off of heartbeat
thread. Off by default until more testing.

Setting "[BulletSim]UseSeparatePhysicsThread=true" causes the physics
engine to be called on its own thread and the heartbeat thread only
handles the reporting of property updates and collisions. Physics frame
rate is about right but physics execution time goes to zero as accounted
by the heartbeat loop.
2013-06-01 14:52:44 -07:00
BlueWall
d7fa9f671e Adding standard OpenSim header to source files 2013-05-31 22:03:27 -04:00
BlueWall
ba2f13db63 Adding back the BasicProfileModule 2013-05-31 21:19:15 -04:00
Justin Clark-Casey (justincc)
217c7d1140 Remove unnecessary m_scenes and m_scene from AsyncCommandManager.
These were private and the sole point of use (to know when to load config for the first time) can be done by looking at script engines instead.
2013-05-31 23:00:10 +01:00
Justin Clark-Casey (justincc)
921ad8704e Lock areas of AsyncCommandManager where multiple threads could try to access/update the same static structures simultaneously.
This is possible where there is more than one scene (multiple copies of the same script engine) and/or more than one script engine being used.
These operations are not thread safe and could be leading to the exceptions/problems seen in http://opensimulator.org/mantis/view.php?id=6651
This also prevents a small race condition where more than one AsyncLSLCmdHandlerThread could be started.
2013-05-31 22:50:15 +01:00
Justin Clark-Casey (justincc)
00c1586ff8 refactor: Remove unused AsyncCommandManager.PleaseShutdown 2013-05-31 18:12:36 +01:00
BlueWall
bf03523323 Fill in fields with default values on profile creation 2013-05-31 10:40:47 -04:00
BlueWall
5b3a443125 Trigger Jenkins build 2013-05-30 22:52:17 -04:00
Robert Adams
924a5df25f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-30 19:20:36 -07:00
BlueWall
e85c70223a Merge branch 'work' contains UserProfiles with Robust service and updates region module using JsonRpc messaging. Requres no databse changes (but backup existing data before use). 2013-05-30 22:16:42 -04:00
Robert Adams
4d32ca19bf Trigger OnScenePresenceUpdated when the avatar's animations change. 2013-05-30 19:16:36 -07:00
Robert Adams
48a175eff7 Add methods to Animation and AnimationSet for easier manipulation and
display of groups of animations (Equal(), ToString(), FromOSDArray(), ...).
No functional change to animations.
2013-05-30 19:16:34 -07:00
Robert Adams
439f11cc3c Add region heartbeat start event to complement heartbeat end event.
This allows object modification before the usual heartbeat operation.
2013-05-30 19:16:31 -07:00
Robert Adams
3aa2fb9928 BulletSim: remove unuseful BulletSim parameters from OpenSimDefaults.ini and
replace with things someone might actually want to tune (avatar height, ...).
2013-05-30 19:16:29 -07:00
Justin Clark-Casey (justincc)
46335b103e If an exception occurs in the AsyncCommandManager loop, spit it out to log rather than silently swallowing it.
This might help diagnose the cause of http://opensimulator.org/mantis/view.php?id=6651 where sometimes scripts fail to start on region start.
2013-05-30 23:51:35 +01:00
BlueWall
328883700a UserProfiles
UserProfiles for Robust and Standalone. Includes service and connectors for Robust and standalone opensim plus matching region module.
2013-05-30 17:59:18 -04:00
Justin Clark-Casey (justincc)
6b88a665d3 minor: fix warnings in GodsModule that were due to duplicate using statements 2013-05-30 22:43:52 +01:00
Justin Clark-Casey (justincc)
12a3b85561 Fix passing of voice distance attenuation to the Vivox voice server.
Because of a typo, this wasn't being done at all - now the 'default' value as described in OpenSimDefaults.ini of 10m is passed (vivox_channel_clamping_distance)
Thanks to Ai Austin for spotting this.
2013-05-30 22:20:02 +01:00
Justin Clark-Casey (justincc)
8f9a726465 If on a sit request we sit the avatar on a different prim in a linkset for some reason (e.g. because it has a sit target), then send the actual sit prim UUID to the viewer rather than the requested one.
This purports to fix the issue described in http://opensimulator.org/mantis/view.php?id=6653 where the camera can end up following the requested sit prim rather than the actual.
The original spot was by Vegaslon, this commit just goes about it in a slightly different way
This commit also makes m_requestedSitTargetUUID to be the actual UUID, which is consistent with m_requestedSitTargetID which was already doing this.
However, this adjustment has no practical effect since we only currently need to know that there's any requested sit UUID at all, not which one it is.
2013-05-30 19:27:20 +01:00
Justin Clark-Casey (justincc)
cc7aa88b26 Try caching the user name for a new agent earlier on in the process of establishing a connection, to see if this helps with "Unknown UserUMMTGUN" issues.
The UMMTGUN form of Unknown User seems to appear because a viewer sometimes sends a UUIDNameRequest UDP request that fails to find a binding.
However, in theory the incoming agent should have made that binding before any such request is triggered.
So moving this binding to an earlier point in the process to see if this makes a difference.
Unknown user name is also updated to UserUMMTGUN2 - if you see the old name then you need to clear your viewer cache.
This relates to http://opensimulator.org/mantis/view.php?id=6625
2013-05-29 23:08:54 +01:00
Justin Clark-Casey (justincc)
f9ee9efb97 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-29 22:40:51 +01:00
Justin Clark-Casey (justincc)
4898f18f89 Add HG regression TestCachedUserNameForNewAgent() 2013-05-29 21:28:38 +01:00
Diva Canto
233b9ec4d7 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-28 20:59:54 -07:00
Diva Canto
7e1c7f54c7 First change in Vivox for ages! -- added a lock to serialize calls to vivox servers. This may ameliorate things when lots of avies arrive in a sim at about the same time. Turns out that there are 4 http requests per avie to Vivox. 2013-05-28 20:59:25 -07:00
Robert Adams
ae0d6ab28a BulletSim: don't zero motion when changing vehicle type.
Some vehicle scripts change type on the fly as an easy way of setting
all the parameters (like a plane changing to a car when on the ground).
2013-05-28 09:19:08 -07:00
Robert Adams
7c3a46ccea BulletSim: default using mesh asset hulls to 'true'. This means that,
if the mesh asset specifies physics hulls, BulletSim will fetch and
use same rather than approximating the hulls. If physics hulls are not
specified, the representation will fall back to the regular physics mesh.
2013-05-27 14:38:59 -07:00
Robert Adams
0c35d28933 BulletSim: enable GImpact shape for prims with cuts. Include DLLs and SOs
which recompute GImpact shape bounding box after creation as Bullet
doesn't do that itself (something it does for nearly every other shape).

Now, physical prims without cuts become single mesh convex meshes. Physical
prims with cuts become GImpact meshes. Meshes become a set of convex
hulls approximated from the mesh unless the hulls are specified in the
mesh asset data. The use of GImpact shapes should make some mechanical
physics more stable.
2013-05-26 17:35:12 -07:00
Melanie
533bbf033d Update the money framework to allow sending the new style linden "serverside is now viewerside" messages regarding currency
This will require all money modules to be refactored!
2013-05-25 02:08:54 +01:00
Robert Adams
1821372634 Meshmerizer: remember to add the copied hull verts to the list of hulls. 2013-05-24 16:32:19 -07:00
Robert Adams
5f1f5ea5ab BulletSim: add VehicleInertiaFactor to allow modifying inertia.
Another parameter for vehicle operation tuning.
Default to <1,1,1> which means nothing is different under normal use.
2013-05-24 16:24:16 -07:00
Robert Adams
4979940def BulletSim: properly set mesh hash key in use tracking structure.
Shouldn't see any functional difference.
2013-05-24 16:23:10 -07:00
Robert Adams
81a6c39781 Meshmerizer: add INI parameter to enable DEBUG mesh detail logging.
Default to off.
To turn mesh parsing DEBUG detail logging on, add
    [Mesh]
        LogMeshDetail=true
to the INI file.
2013-05-24 16:20:26 -07:00
Mic Bowman
a087dbed7f One more appearance change: drop sending the SendAppearance packet
to avatar when it becomes root. This packet shows up in the viewer
logs as an error and appears to cause problems for completing the
texture rebake process for v1 viewers in some cases.
2013-05-24 13:26:07 -07:00
Mic Bowman
bb0ea25090 Protect one more update of the baked texture hashes. 2013-05-24 13:25:25 -07:00
Mic Bowman
681fbda4b6 This is an experimental patch that adds support for comparing texture
hashes for the purpose of accurately responding to AgentTextureCached
packets. There is a change to IClientAPI to report the wearbles hashes
that come in through the SetAppearance packet. Added storage of the
texture hashes in the appearance. While these are added to the
Pack/Unpack (with support for missing values) routines (which means
Simian will store them properly), they are not currently persisted in
Robust.
2013-05-24 13:18:16 -07:00
dahlia
440905ad14 change a hull debugging message to Debug instead of Info 2013-05-24 10:31:14 -07:00
dahlia
21a3a81c7a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-24 01:54:28 -07:00
dahlia
0cdea5c2f3 correct some errors in decoding of mesh asset convex decomposition data 2013-05-24 01:53:37 -07:00
Justin Clark-Casey (justincc)
eb2bd9d203 minor: Remove unnecessary duplication of AbsolutePosition Vector3 in SOG.Copy()
As a struct, Vector3 has already been cloned by MemberwiseClone()
2013-05-24 00:46:58 +01:00
Justin Clark-Casey (justincc)
02fe05f346 Fix issue where llSetPayPrice on either one of a clone prim in the same OpenSimulator session would change the prices on both prims.
This is because the PayPrice array refernence was being memberwise cloned and not the array itself.
Addresses http://opensimulator.org/mantis/view.php?id=6639
2013-05-24 00:41:47 +01:00
Justin Clark-Casey (justincc)
e597a7d94e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-23 23:53:44 +01:00
Justin Clark-Casey (justincc)
9b56f99326 Fix bug where a cloned object would report the wrong llGetNumberOfPrims() when avatars had been sitting on the original and a different avatar sat on the copy within the same opensim session.
This was because the sitting avatars list was being cloned rather than reset.
Addresses http://opensimulator.org/mantis/view.php?id=6649
2013-05-23 23:52:07 +01:00
dahlia
d90d8e9999 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-23 15:48:47 -07:00
dahlia
c5549d2730 add decoder for bounding convex hull 2013-05-23 15:47:47 -07:00
Justin Clark-Casey (justincc)
0d5566e879 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-23 23:07:46 +01:00
Justin Clark-Casey (justincc)
28548ab347 Fix bug where both ordinary UserManagementModule and HGUserManagementModules were being added to scenes if no UserManagementModule was specified.
Without explicit config non-hg UMM is used - this is in common with other HG modules.
This was causing a non-HG module to unpredictably use the UMM or HGUMM, though lack of bug reports suggest either UMM was always used or it didn't matter in this case.
2013-05-23 23:05:56 +01:00
Robert Adams
0e002e3693 Add DEBUG level logging in Meshmerizer for mesh parsing. There is
a compile time variable to turn this logging off if it is too spammy.
2013-05-23 14:41:05 -07:00
Robert Adams
29b3b44fab BulletSim: add locking around Meshmerizer use to eliminate possible race
condition when extracting the convex hulls.
2013-05-23 14:40:16 -07:00
Robert Adams
5efce21abc BulletSim: correct errors caused by misspelled INI parameter spec.
Add debugging messages for hull asset use.
2013-05-22 21:57:07 -07:00
Robert Adams
f490522082 BulletSim: specify directory for OpenSim.Region.Physics.Meshing
DLL file in prebuild.xml since that file ends up in bin/Physics
directory.
2013-05-22 21:09:37 -07:00
Robert Adams
ffc9b3dda7 BulletSim: add code to experimentally use asset hull data.
Default to 'off' as it needs debugging.
2013-05-22 21:01:00 -07:00
Robert Adams
61cdf9390d BulletSim: fix problem with walking up stairs that are oriented
in certain directions. The problem was really that the avatar capsule
orientation was being set incorrectly.
2013-05-22 16:06:06 -07:00
Justin Clark-Casey (justincc)
7d38f4940c Implement llSetSoundQueueing().
This is controlled by the viewer, not the server.
So as per http://wiki.secondlife.com/wiki/LlSetSoundQueueing, only two sounds can be queued per prim.
You probably need to use llPreloadSound() for best results
2013-05-22 20:01:57 +01:00
Robert Adams
6596a1de80 Revert "BulletSim: add code to experimentally use asset hull data."
This reverts commit 2fd8819a04.

Remove this code until I can figure out why the references that are
clearly in prebuild.xml doesn't work for the
'using OpenSim.Region.Physics.Meshing' in BSShape.cs.
2013-05-21 22:16:18 -07:00
Robert Adams
10097f13aa BulletSim: update DLLs and SOs with version containing gImpact code. 2013-05-21 21:40:26 -07:00
Robert Adams
2fd8819a04 BulletSim: add code to experimentally use asset hull data.
Default to 'off' as it needs debugging.
2013-05-21 21:32:30 -07:00
Robert Adams
9de3979f5b BulletSim: add gImpact shape type. Add logic to use gImpact shape
for prims that have cuts or holes. Default logic to 'off' as it
needs debugging.
2013-05-21 15:32:10 -07:00
Robert Adams
ece7b33a96 Merge branch 'master' of git://opensimulator.org/git/opensim 2013-05-21 15:31:13 -07:00
Justin Clark-Casey (justincc)
06ab168897 To further help with tracking down the apperance of too much "Unknown User" in chatlogs, etc. temporarily change each instance of this in OpenSimulator so we can identify where it's coming from
For instance, the "Unknown User" in Util.ParseUniversalUserIdenitifer becaomes "Unknown UserUPUUI (class initials + method initials)
This is to help with http://opensimulator.org/mantis/view.php?id=6625
2013-05-21 22:26:15 +01:00
Justin Clark-Casey (justincc)
ba6a6b2d40 Fix compile failure from recent git master 434c3cf 2013-05-21 18:18:16 +01:00
Justin Clark-Casey (justincc)
434c3cf83b Make "show name" command display HomeURL like "show names" 2013-05-21 18:15:22 +01:00
Justin Clark-Casey (justincc)
5c8d38d6cf minor: Change "show names" command to use consistent console display table 2013-05-21 18:11:07 +01:00
Justin Clark-Casey (justincc)
6edecd5d94 Add "show name" console command to make it possible to show a single binding of a UUID to a name. 2013-05-21 18:00:41 +01:00
Justin Clark-Casey (justincc)
c47de9878d Log when "Unknown User" is sent to a user because the UMM had no binding for that UUID and when a binding replaces a previous "Unknown User" entry.
This is a temporary measure to hunt down issues where some but not all users see others as "Unknown user" in text chat, etc.
http://opensimulator.org/mantis/view.php?id=6625
2013-05-21 17:45:15 +01:00
Justin Clark-Casey (justincc)
6ae426c96b Lock m_UserCache whilst iterating over it in UserManagementModule.GetUserData() to avoid concurrency exceptions 2013-05-21 17:25:06 +01:00
Diva Canto
10e4fb2ce2 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-20 09:26:15 -07:00
Diva Canto
26904cc5a1 Add comment 2013-05-20 09:25:50 -07:00
dahlia
e65d1e459e fix error in hull point indexing 2013-05-18 13:11:22 -07:00
dahlia
477bee6468 remove duplicate hull scaling 2013-05-18 11:15:05 -07:00
dahlia
fa8f5bafb2 add prototype code to decode convex hulls from mesh assets. Please do not use yet; the interface will be defined in a later commit. 2013-05-18 01:23:09 -07:00
Robert Adams
214bae1479 BulletSim: fix BulletSim crashing if there is no [BulletSim] section
in any INI file. Update TODO list.
2013-05-17 21:19:38 -07:00
Justin Clark-Casey (justincc)
ec818a506b minor: remove long commented out scene cache clearing code in EntityTransferModule.CrossAgentToNewRegionAsync() 2013-05-16 18:26:22 +01:00
Justin Clark-Casey (justincc)
61f4ab6674 minor: Remove completely unused IClientAPI.RequestClientInfo() call from EntityTransferModule.CrossAgentToNewRegionAsync() 2013-05-16 18:25:04 +01:00
Justin Clark-Casey (justincc)
3bc8cf65a4 Where this is not already happening, trigger asychoronous calls to CloseChildAgent() above the LocalSimulationConnector level.
This is so that other callers (such as SceneCommunicationService.SendCloseChildAgentConnections() can perform all closes asynchronously without pointlessly firing another thread for local closes).
No functional change apart from elimination of unnecessary chaining of new threads.
2013-05-16 17:30:30 +01:00
Justin Clark-Casey (justincc)
d214e2d0c4 On closing child agents, send separate asynchronous requests to each neighbour rather than sending all closes concurrently on a separate thread.
This is to reduce race conditions where neighbours may be responding erratically, thus mixing up create and close agent requests in time.
This mirrors OpenSimulator behaviour on enabling child agents where each region is contacted separately.
2013-05-16 17:12:02 +01:00
Justin Clark-Casey (justincc)
bd31821792 On logout, send close child agent requests to neighbours asynchronously, so user is not prevented from relogging if many neighbours are present but not responsive.
The symptom here is that previous user connections are still present but are labelled active == false
2013-05-16 16:37:21 +01:00
dahlia
46eb8465a0 fall back to using a display mesh for physics proxy if no physics_mesh entry was wound in a mesh asset 2013-05-15 17:12:17 -07:00
Latif Khalifa
71a5cc2041 Updated libopenmetaverse to a5ad7f200e9bd2e91604ba921d1db3768108686b 2013-05-16 00:07:55 +02:00
Latif Khalifa
12289c4fd1 Removed obsolete libopenmetaverse file 2013-05-16 00:02:28 +02:00
Justin Clark-Casey (justincc)
a4290cdbb3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-15 22:06:01 +01:00
Justin Clark-Casey (justincc)
177a53fbcf Fix issue where osMakeNotecard() would fail if given a list containing vectors or quaternions.
http://opensimulator.org/mantis/view.php?id=6640
2013-05-15 22:04:38 +01:00
Robert Adams
23ebae1828 Eliminate race condition where SimStatsReporter starts reporting
stats before the region is completely initialized.
2013-05-14 13:40:07 -07:00
Justin Clark-Casey (justincc)
df2a0fec5f Comment out log message about looking for asset data in remove asset service for now, in order to reduce log levels in a test region with many hg origin avatars 2013-05-14 20:11:58 +01:00
Justin Clark-Casey (justincc)
ce979552fd Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-14 19:45:35 +01:00
Justin Clark-Casey (justincc)
e9847a4dbd Comment out some debugging item permission messages since these are highly noisy on the console.
Please re-enable when required
2013-05-14 19:44:41 +01:00
Diva Canto
f8bb90d963 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-14 09:07:20 -07:00
Diva Canto
91091c3e54 Second take at HGTP-mesh bug: delay sending the initial data only for agents that are coming via TP (root agents) 2013-05-14 09:06:58 -07:00
Robert Adams
03fddb301b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-14 08:49:41 -07:00
Vegaslon
b135f1d58a BulletSim: Fix for mantis 6487, also minor adjustment to fix flying while you are running.
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-05-14 08:48:40 -07:00
Diva Canto
645da54f25 Revert "HGTP-mesh bug: the mesh download requests were going to the departing sims for a little while. This was also true for local TPs. BUt for local TPs the assets are on the same server, so it doesn't matter. For HGTPs, it matters. This potential fix moves sending the initial data to later, after the client has completed the movement into the region. Fingers crossed that it doesn't mess other things up!"
This reverts commit f32a21d967.
2013-05-14 08:47:18 -07:00
Diva Canto
66c328f51b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-14 08:12:23 -07:00
Diva Canto
f32a21d967 HGTP-mesh bug: the mesh download requests were going to the departing sims for a little while. This was also true for local TPs. BUt for local TPs the assets are on the same server, so it doesn't matter. For HGTPs, it matters. This potential fix moves sending the initial data to later, after the client has completed the movement into the region. Fingers crossed that it doesn't mess other things up! 2013-05-14 08:12:01 -07:00
Robert Adams
c86e828dbf BulletSim: add a lock to try and catch a native shape creation/destruction
race condition.
2013-05-13 13:30:44 -07:00
Robert Adams
15360cbb6b BulletSim: add adjustment for avatar capsule height scaling. Makes
avatar standing on ground view better and enables tuning.
2013-05-13 13:30:42 -07:00
Robert Adams
45f37e11ad BulletSim: use heightmap terrain when using BulletXNA.
Output messages on features disabled when using BulletXNA.
2013-05-13 13:30:40 -07:00
Diva Canto
4194d935ec Fixed mantis #6609 -- LoadPlugin error messages on Robust. 2013-05-13 13:07:39 -07:00
Diva Canto
af1fa95875 Groups: Improve error handling on remote connector. 2013-05-13 11:36:17 -07:00
Diva Canto
25fea82049 Fixes mantis #6636 -- Groups 2013-05-13 07:29:17 -07:00
Diva Canto
a4431381fa Finalize the logic for SetHome. See comments in Land/LandManagementModule.cs about who has permission to set home where. 2013-05-11 07:58:14 -07:00
Diva Canto
ab4d530462 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-11 07:15:31 -07:00
Diva Canto
48f8b884c3 Handle SetHome properly 2013-05-11 07:15:09 -07:00
Melanie
55c9bc15e5 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-05-11 01:29:30 +01:00
Melanie
81d8deb1a8 Send up the part missing from the Avination Estate commit.
Warning - contains a small migration.
2013-05-11 01:27:37 +01:00
Robert Adams
a42bb799cc BulletSim: fix CPU loop that occurs when any 'degenerate' sculptie
is in a region. This fixes the high CPU usage for regions with nothing
else going on.
2013-05-10 14:48:52 -07:00
Diva Canto
a1031772eb Delete debug message 2013-05-10 08:09:26 -07:00
Justin Clark-Casey (justincc)
ff0332730d Implement delete key for local console 2013-05-09 23:11:37 +01:00
Justin Clark-Casey (justincc)
292a6037ad minor: Remove unnecessary code that was generating warning in TestXInventoryDataPlugin 2013-05-09 22:48:10 +01:00
Justin Clark-Casey (justincc)
0e6ad94829 minor: Remove mono compiler warning in RemoteAdminPlugin 2013-05-09 22:44:45 +01:00
Justin Clark-Casey (justincc)
9978f36d9f Don't send BulkUpdateInventory at the end up of UpdateInventoryItemAsset().
This is causing editing of worn clothes to fail frequently, possibly due to a race condition with a transaction.
This looks to address http://opensimulator.org/mantis/view.php?id=6600
2013-05-09 22:43:16 +01:00
Justin Clark-Casey (justincc)
b4a6f2195d Only send one kill object to the deleter when they derez an object rather than two.
Extend regression test to check this.
2013-05-09 18:53:34 +01:00
Justin Clark-Casey (justincc)
3290cd09d3 remove pointless region handle paramter from IClientAPI.SendKillObject() 2013-05-09 18:12:17 +01:00
Justin Clark-Casey (justincc)
2cb2f1d7e3 Fix issue where objects removed via llDie() would not disappear for users looking in from neighbouring sims.
This was because this particular code path (unlike user delete) only sent kills to root presences, for no apparent good reason.
Added regression test for this case.
This fixes http://opensimulator.org/mantis/view.php?id=6627
2013-05-09 18:02:19 +01:00
Justin Clark-Casey (justincc)
2b0b9f3e6c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-09 18:01:49 +01:00
Justin Clark-Casey (justincc)
641c636790 minor: Simplify test setup in SceneObjectDeRezTests since permissions module doesn't need different configuration anymore 2013-05-09 16:43:16 +01:00
BlueWall
182ea00cb3 Application support:
Adding some viwer supported url settings for destination guide and avatar picker apps. URL for the destinations should be: "secondlife:///app/teleport/slurl"
2013-05-09 10:50:18 -04:00
Melanie
543d1fe70b Guard the scene list when estates are updated 2013-05-08 21:14:52 +01:00
Mic Bowman
33aaa40bee Adds an event and a method so that handling of the CachedTexture
packet can be pulled out of LLClientView and moved to
AvatarFactory. The first pass at reusing textures (turned off by
default) is included. When reusing textures, if the baked textures
from a previous login are still in the asset service (which generally
means that they are in the simulator's cache) then the avatar will not
need to rebake. This is both a performance improvement (specifically
that an avatars baked textures do not need to be sent to other users
who have the old textures cached) and a resource improvement (don't
have to deal with duplicate bakes in the asset service cache).
2013-05-08 13:13:51 -07:00
Diva Canto
601aa91163 Delete "" entry for AvatarPicker cap. 2013-05-07 19:16:42 -07:00
Diva Canto
6f5222e863 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-07 18:02:25 -07:00
Diva Canto
e92c05ebbd Added AvatarPickerSearch capability handler. 2013-05-07 18:01:48 -07:00
Vegaslon
ac6dcd35fb Bulletsim: and the rotational friction.
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-05-07 07:14:10 -07:00
Vegaslon
f247ae1a75 BulletSim: Another way to create vehicle framed friction.
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-05-07 07:14:06 -07:00
Robert Adams
ddd97cb78e BulletSim: normalize quaternian rotations when building compound linksets.
Attempt to fix vehicles being twisted off the ground when they go physical.
2013-05-06 18:06:34 -07:00
Robert Adams
84118c5735 BulletSim: properly free references to simple convex hull shapes. Didn't
loose memory since shapes are shared but did mess up usage accounting.
2013-05-06 18:05:37 -07:00
Melanie
1c6b8293d7 Step 3: Commit the Avination XEstate estate comms handler
This adds estate-wide Teleport Home and Teleport All User Home as well
2013-05-07 00:52:40 +01:00
Melanie
5d5edde429 Step 2: commit the IEstateModuleInterface changes needed 2013-05-07 00:37:45 +01:00
Melanie
4c83b5e719 Step one of estate settings sharing - port the Avination Estate module (complete module) as changes are too extensive to apply manually 2013-05-07 00:31:11 +01:00
Robert Adams
93e1986d69 BulletSim: apply linear and angular friction in vehicle coordinates
and not world coordinates.
2013-05-06 16:48:01 -07:00
Robert Adams
045aaa838a BulletSim: remove friction calcuation from BSMotor and move linear and
angular friction computation into linear and angular movement code.
The friction wasn't being applied properly. This will make it so vehicles
don't drift as much and the drift is tunable by changing the friction
timescales.
2013-05-06 13:32:26 -07:00
Robert Adams
bf31896983 BulletSim: simplify parameter specification by reducing the number of
specifications required for simple properties with defaults.
2013-05-06 13:32:24 -07:00
Robert Adams
f9fb1484aa BulletSim: extend BSActorLockAxis to allow locking linear movement in
addition to angular movement. Not enabled by anything yet.
2013-05-06 13:32:22 -07:00
Diva Canto
90f03ccd42 Added new method to Remote Admin for reloading the estate settings. This is meant to be called when some other program has changed the data on the backend. 2013-05-06 11:47:55 -07:00
Diva Canto
a81ddf3d70 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-06 09:18:17 -07:00
Diva Canto
ad00466483 Minor reordering of operations on NewUserConnection. The agent circuit needs to be added earlier for some of the checks to work correctly. 2013-05-06 09:17:54 -07:00
Robert Adams
1ffa69f691 Merge branch 'master' into bulletsim4 2013-05-03 14:25:52 -07:00
Robert Adams
5d25bb3084 BulletSim: zero vehicle motion when changing vehicle type.
Rebuild compound linkset of any child in the linkset changes shape.
Comments and better detailed logging messages.
2013-05-03 14:23:53 -07:00
Justin Clark-Casey (justincc)
5d93c99e8c Fix possible race condition with local region cache if a region was added after startup. 2013-05-03 18:56:58 +01:00
Justin Clark-Casey (justincc)
7ca42d5711 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-03 18:51:29 +01:00
Justin Clark-Casey (justincc)
304c5d4a8b On startup, start scenes after we're set up all local scenes, rather than starting scenes before others have been created.
This aims to avoid a race condition where scenes could look to inform neighbours that they were up before those neighbours had been created.
http://opensimulator.org/mantis/view.php?id=6618
2013-05-03 18:48:50 +01:00
Robert Adams
4042c82a72 BulletSim: prims with no cuts created with single convex hull shape.
Parameter added to enable/disable this feature.
2013-05-02 12:27:30 -07:00
Robert Adams
d9c3947824 BulletSim: Rebuild physical body if physical shape changes for mesh and hull.
Properly rebuilds collision caches.
Release asset data fetched when building mesh or hulls.
2013-05-02 10:06:12 -07:00
Robert Adams
a9480aed85 Merge branch 'master' into bulletsim4 2013-05-02 07:02:28 -07:00
BlueWall
4cb73192a7 Make default config directory "." 2013-05-01 23:01:33 -04:00
Robert Adams
ed46b42fea BulletSim: fix crash when mesh asset wasn't available when meshing
the first time.
Debugging added for mesh/hull asset fetch.
2013-05-01 17:16:46 -07:00
Robert Adams
0378baed35 BulletSim: rework LinksetCompound to work with new BSShape system.
Not all working yet.
2013-05-01 17:15:54 -07:00
BlueWall
04f76af22c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-01 18:52:15 -04:00
BlueWall
e3d9d5566a Fix inventory issue
Fix issue where objects rezzed from Trash or Lost And Found then be placed back in the respective folder when taking the object or a copy back into inventory.
2013-05-01 18:51:43 -04:00
Justin Clark-Casey (justincc)
386d67ec61 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-05-01 23:02:06 +01:00
Justin Clark-Casey (justincc)
854dcd1abd Fix SmartThreadPool line endings in recent update from dos to unix 2013-05-01 23:00:46 +01:00
Melanie
c6d50cd431 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-05-01 21:37:17 +01:00
Melanie
b26276c8c4 Fix the long standing bug of items being delivered to lost and found or trash when takig copy.
This bug was recently aggravated through the perms changes required for the
export permission.
2013-05-01 21:35:50 +01:00
Robert Adams
fca4e4ec7c Merge branch 'master' into bulletsim4 2013-05-01 12:08:12 -07:00
Justin Clark-Casey (justincc)
81a90e30c6 Add in-code exaplanation for the change in cancellation signalling in STP 2.2.3. Remove left in Console.WriteLine accidentally inserted in recent 206fb306 2013-05-01 19:29:46 +01:00
Justin Clark-Casey (justincc)
8d3250cee4 Add information about creating a PID file for robust to the Robust.ini and Robust.HG.ini example files 2013-05-01 19:15:05 +01:00
Justin Clark-Casey (justincc)
206fb306a7 Update SmartThreadPool to latest version 2.2.3 with a major and minor change.
SmartThreadPool code comes from http://www.codeproject.com/Articles/7933/Smart-Thread-Pool
This version implements thread abort (via WorkItem.Cancel(true)), threadpool naming, max thread stack, etc. so we no longer need to manually patch those.
However, two changes have been made to stock 2.2.3.
Major change: WorkItem.Cancel(bool abortExecution) in our version does not succeed if the work item was in progress and thread abort was not specified.
This is to match previous behaviour where we handle co-operative termination via another mechanism rather than checking WorkItem.IsCanceled.
Minor change: Did not add STP's StopWatch implementation as this is only used WinCE and Silverlight and causes a build clash with System.Diagnostics.StopWatch
The reason for updating is to see if this improves http://opensimulator.org/mantis/view.php?id=6557 and http://opensimulator.org/mantis/view.php?id=6586
2013-05-01 19:01:43 +01:00
Melanie
ac135c649c Fix CAPS to work like they should - do not send caps to the viewer if they're not in the requested caps list.
The previous wrong behavior caused the debug setting "UseHTTPInventory" to fail
on all viewers when turned off. UDB inventory would not be correctly used in
that case.
2013-04-30 23:50:23 +01:00
Robert Adams
46ae84cfba BulletSim: fix error messages created while an avatar has no initial
collisions. Usually happens when logging in an avatar that had been
previously flying. Uninitialized variable.
2013-04-30 13:10:15 -07:00
Robert Adams
7cdb07b386 BulletSim: improvements to LinksetCompound and PrimDisplaced. Not all working yet. 2013-04-30 11:42:11 -07:00
Robert Adams
d322625f90 BulletSim: Add non-static BSShape.GetReference for getting another reference
to an existing shape instance.
BSShapeNative rebuilds shape for all references.
BSShapeCompound returns another reference copy if the compound shape
already exists (for linksets).
2013-04-29 17:30:54 -07:00
Robert Adams
15a3f80e2e BulletSim: LinksetCompound work to disable collision for root and
child prims so compound shape can do all collisions.
Don't try to build a compound linkset for non-physical linksets.
Remove and replace root body when compound shape is added so collision
cache is rebuilt.
2013-04-29 17:30:38 -07:00
Justin Clark-Casey (justincc)
3ce198165c minor: remove some mono compiler warnings in ServicesServerBase 2013-04-29 22:21:57 +01:00
Justin Clark-Casey (justincc)
537b243360 minor: Eliminate warning in LLimageManagerTests by properly calling through to OpenSimTestCase.SetUp() 2013-04-29 22:18:11 +01:00
Justin Clark-Casey (justincc)
67789201c3 Add TestRejectGivenFolder() and TestAcceptGivenFolder() regression tests 2013-04-29 22:14:13 +01:00
Justin Clark-Casey (justincc)
0beccf23c0 Add regression test for inventory item give, reject and subsequent trash folder purge by receiver.
This commit also actually adds the InventoryTransferModuleTests file which I previously forgot
2013-04-29 21:11:44 +01:00
Justin Clark-Casey (justincc)
a7cbb9edc9 Add regression test for offer, accept and subsequent receiver delete of an item offered via instant message. 2013-04-29 20:50:49 +01:00
Justin Clark-Casey (justincc)
12054aaa9f Fix bug where an agent that declined an inventory offer and subsequently emptied their trash would make the item invalid in the giver's inventory
This was because the original item/folder ID was sent in the session slot of the offer IM rather than the copy.
2013-04-29 17:14:44 +01:00
Robert Adams
92ee288d66 BulletSim: remove trailing white space to make git happier. No functional changes. 2013-04-29 07:54:50 -07:00
Robert Adams
ad1787770e BulletSim: rename variable 'PhysicsScene' to be either 'PhysScene' or 'm_physicsScene' to match coding conventions and reduce confusion. 2013-04-29 07:38:55 -07:00
Robert Adams
21ec434688 BulletSim: first cut at new linksetCompound shape building. 2013-04-29 07:38:51 -07:00
Robert Adams
f2d408829b BulletSim: fix crash when creating new hull. 2013-04-29 07:38:47 -07:00
Robert Adams
2da8e60b6d BulletSim: code for creating the avatar capsule shape. 2013-04-29 07:38:44 -07:00
Robert Adams
e5582939fd BulletSim: massive refactor of shape classes. Removed shape specific code from BSShapeCollection. Using BSShape* classes to hold references to shape. Simplified shape dependency callbacks. Remove 'PreferredShape' methods and have each class specify shape type. Disable compound shape linkset for a later commit that will simplify linkset implementation. 2013-04-29 07:38:40 -07:00
Robert Adams
890cb6a293 BulletSim: complete BSShape classes. 2013-04-29 07:38:35 -07:00
Melanie
3ff7391495 Some more pieces of Avination's ban system - if an avatar isn't allowed on any
parcel in the sim, keep them out entirely.
2013-04-29 00:55:34 +01:00
Diva Canto
a517e597f5 Fix wrong sql statement in offline im. 2013-04-28 09:03:09 -07:00
Diva Canto
a49c5291dc Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-04-27 21:24:07 -07:00
Diva Canto
222f530411 Added an interface to an external ban service. With this commit, the interface is used only in Hypergrided worlds (Gatekeeper), although in those, it applies to both local and foreign users. The Ban service itself is not in core; it is to be provided externally. 2013-04-27 21:23:29 -07:00
Diva Canto
90a6891a7d Better error reporting 2013-04-27 10:34:23 -07:00
Diva Canto
f675d465b2 Make method virtual 2013-04-27 10:34:13 -07:00
Melanie
12599c34e2 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-04-27 17:57:22 +01:00
Melanie
cbb3bb62da Unbreak the sample money module 2013-04-27 17:56:39 +01:00
Melanie
ef08ab68a7 Small oversight in EconomyDataRequest - this would have affected everyone NOT using a money module. 2013-04-27 17:42:54 +01:00
Diva Canto
2262b13048 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-04-25 17:02:32 -07:00
Diva Canto
0e162511cf Groups: make some methods protected. 2013-04-25 17:01:57 -07:00
Melanie
03c9d8ae4f Change EconomyDataRequest signature to use an IClientAPI rather than UUID. This is needed because recent LL viewer codebases call this earlier in login when the client is not yet established in the sim and can't be found by UUID.
Sending the reply requires having the IClientAPI.
2013-04-25 21:35:18 +01:00
Melanie
5d0a8ff391 Change copyright notice on DynamicMenuModule to proper BSD 2013-04-25 20:48:12 +01:00
Diva Canto
3bc8017464 Recover a lost "virtual". Downstream projects need this. 2013-04-25 09:23:15 -07:00
dahlia
c10405330d UUIDGatherer now includes UUIDs which reference texture assets used as materials 2013-04-24 20:43:15 -07:00
Diva Canto
0e22021c65 Make the kicked user's avie truly disappear when it's god-kicked. 2013-04-24 19:00:41 -07:00
Melanie
ec4f981f1d Adding the dynamic menu module which allows registering new menu options in compliant viewers 2013-04-25 01:52:34 +01:00
Melanie
5cd77a460c Commit Avination's God Kick feature. 2013-04-25 00:51:57 +01:00
Melanie
6f3c905744 Add Avination's support for parcel eject and freeze 2013-04-25 00:24:48 +01:00
Robert Adams
1593d795ea BulletSim: version of libBulletSim.so for 32 bit systems that doesn't
crash on startup. Doesn't yet solve the new glibcxx dependencies.
2013-04-24 15:01:11 -07:00
Diva Canto
1868680848 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-04-24 12:46:23 -07:00
Diva Canto
70081a40a4 Bug fix: compare tolower. This should fix the issue where HG visitors currently in the region were not being found by the avatar picker window. 2013-04-24 12:45:19 -07:00
Robert Adams
c22a2ab7d2 BulletSim: partial addition of BSShape class code preparing for
different physical mesh representations (simplified convex meshes)
and avatar mesh.
2013-04-24 08:05:42 -07:00
Robert Adams
e324f6f3f0 BulletSim: update DLLs and SOs to they have no dependencies on newer
glibc (2.14) since that is not yet in some Linux distributions.
Add unmanaged API calls and code for creating single convex hull shapes.
2013-04-24 08:03:45 -07:00
Robert Adams
522ab85045 BulletSim: improve avatar stair walking up. Add more parameters to control force
of both position change and up force that move avatars over barrier.
Default parameters are for steps up to 0.5m in height.
2013-04-23 18:31:12 -07:00
dahlia
ed22014646 revert CSJ2K.dll to version in use prior to commit d4fa2c69ed 2013-04-23 15:01:20 -07:00
Justin Clark-Casey (justincc)
115e0aaf83 Fix issue in ConciergeModule where UpdateBroker was sending malformed XML if any number of avatars other than 1 was in the region.
I don't know how well the rest of ConiergeModule works since I've practically never looked at this code.
Addresses http://opensimulator.org/mantis/view.php?id=6605
2013-04-23 21:55:51 +01:00
Robert Adams
e1ac683154 BulletSim: fix crash when deleting llVolumeDetect enabled objects. Bullet's check for an object being linked into the world does not work for Bullet's ghost objects so BulletSim was deleting the object while it was still linked into the physical world structures. 2013-04-22 16:50:06 -07:00
Melanie
293a024c14 Allow callers to set the invoice parameter for GenericMessage 2013-04-22 22:39:08 +01:00
Diva Canto
6ddc39a676 Clean up unused config and config comments. 2013-04-21 16:56:18 -07:00
dahlia
46e4ecadc8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-04-21 00:21:42 -07:00
dahlia
69f07fdb34 Materials persistence via SceneObjectPart.dynAttrs. This appears to work across region restarts and taking objects into inventory, but probably will not work across archiving via OAR or IAR as materials texture assets may not be adequately referenced to trigger archiving. 2013-04-20 23:39:07 -07:00
BlueWall
855c88a9c0 Fix spelling 2013-04-20 11:57:11 -04:00
BlueWall
f40abc493a Small fix to prebuild xml for building with mono tools 2013-04-20 11:54:05 -04:00
dahlia
233f761779 handle PUT verb for RenderMaterials Cap 2013-04-20 02:08:22 -07:00
dahlia
258804cc04 RenderMaterials POST Cap now return material entries when invoked with an OSDArray of MaterialIDs 2013-04-19 22:19:57 -07:00
dahlia
9ae24cac2f Materials-capable viewers send ImageUpdate packets when updating materials that are normally sent via RenderMaterials CAP. This can cause a race condition for updating TextureEntry fields. Therefore filter any TextureEntry updates so they only update if something actually changed. 2013-04-19 00:35:06 -07:00
dahlia
06829c4082 remove default parameter value that apparently mono cant handle 2013-04-18 01:29:50 -07:00
dahlia
d5419f0a46 Initial experimental support for materials-capable viewers. This is in a very early stage and this module is disabled by default and should only be used by developers for testing as this module could cause data corruption and/or viewer crashes. No materials are persisted yet. 2013-04-18 01:03:19 -07:00
dahlia
7c839f176f amend previous commit, a line was left out 2013-04-17 23:14:28 -07:00
dahlia
53122fad40 Thanks lkalif for a fix to SendRegionHandshake() which fixes a potential crash with Server-side baking enabled viewers 2013-04-17 23:10:02 -07:00
dahlia
ce043c5141 Allow changes to TextureEntry to propagate to viewers when MaterialID changes 2013-04-17 22:41:12 -07:00
dahlia
d4fa2c69ed update libomv to git master which adds support for MaterialID in TextureEntry 2013-04-17 21:31:18 -07:00
Justin Clark-Casey (justincc)
c5de9840b0 refactor: Remove IClientNetworkServer.NetworkStop() in favour of existing Stop().
This was an undocumented interface which I think was for long defunct region load balancing experiments.
Also adds method doc for some IClientNetworkServer methods.
2013-04-16 21:58:24 +01:00
Robert Adams
5f2cbfc0fd BulletSim: fixing problems with llMoveToTarget. Not all fixed yet. 2013-04-09 18:00:29 -07:00
Robert Adams
b53713cdda BulletSim: some formatting changes. 2013-04-09 18:00:27 -07:00
Vegaslon
9cc41d5118 Another algorithm for AngularVerticalAttraction. This one Takes into account all rotations before it and makes the corrections more close to the time that sl does.
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-04-09 18:00:25 -07:00
Robert Adams
59135c9a31 BulletSim: add Bullet HACD library invocation. Turned off by default as not
totally debugged. Updated DLLs and SOs with more debugged HACD library code.
2013-04-09 18:00:23 -07:00
Robert Adams
17fd075f39 BulletSim: fix problem where large sets of mega-regions weren't registering
all the terrain with the base region.
2013-04-09 18:00:20 -07:00
Justin Clark-Casey (justincc)
148e46563f minor: fix mono compiler warning in ScriptsHttpRequests.cs 2013-04-10 00:07:58 +01:00
Justin Clark-Casey (justincc)
29e28f4b84 minor: remove mono compiler warnings in InventoryAccessModule 2013-04-10 00:05:03 +01:00
Justin Clark-Casey (justincc)
e20b0d5695 minor: Make exceptions thrown by MySQLAssetData more consistent. 2013-04-10 00:03:37 +01:00
Justin Clark-Casey (justincc)
06068444e2 Comment out rez perms logging I accidentally left in at 7f07023 (Sat Apr 6 02:34:51 2013) 2013-04-09 23:21:13 +01:00
Justin Clark-Casey (justincc)
659c741ff5 Add more notes to async_call_method relating to UnsafeQueueUserWorkItem
UnsafeQueueUserWorkItem is so called because it allows the calling code to escalate its security privileges.
However, since we must already trust this code anyway in OpenSimulator this is not an issue.
2013-04-09 23:15:01 +01:00
Justin Clark-Casey (justincc)
8690a08881 minor: Log an exception if we aren't able to delete a script state file rather than simply ignoring it.
This should never normally happen but if it does then it can be valuable diagonstic information.
2013-04-09 23:02:11 +01:00
Justin Clark-Casey (justincc)
aab2b032aa Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-04-09 22:45:00 +01:00
Justin Clark-Casey (justincc)
8e04c752fc If OpenSimulator is writing a PID file and finds the file already present on startup, logging an error since this is commonly due to an unclean shutdown.
Unclean shutdown can cause constantly moving objects to disappear if an OAR has just been loaded and they have not reached persistence time threshold, among other problems.
2013-04-09 22:38:47 +01:00
Robert Adams
4d2203ff52 BulletSim: Add dylib for BulletSim and add he who figured out building BulletSim
on a Mac to the CONTRIBUTORS file.
2013-04-08 09:15:20 -07:00
Jon Cundill
f68b963596 fixed bullet config for osx
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-04-08 09:09:30 -07:00
Robert Adams
99f39836a1 BulletSim: moving comments around. No functional change. 2013-04-08 06:27:45 -07:00
Robert Adams
a7a1b8b7e9 BulletSim: clean up actor code so routines use the same coding pattern.
Fix a few enabling problems.
2013-04-08 06:27:44 -07:00
Robert Adams
fe16dc09da BulletSim: complete movement of physical object action code out of the
physical object and into actors for setForce, setTorque, hover, lock
axis and avatar move.
2013-04-08 06:27:43 -07:00
Mic Bowman
c7cd077e55 Optimize the number of Simian calls to get the initial presence
information for the friends list. This is a pretty big performance
improvement on login. Note that you must upgrade simian to incorporate
the corresponding GetSessions call.
2013-04-07 17:31:44 -07:00
Justin Clark-Casey (justincc)
7f070236f7 Fix taking (and rezzing) of coalesced objects in the non-root subregions of megaregions.
This fixes the combined bounding box location for regions bigger than 256x256.
It also fixes the position on taking coalesced objects in the non-root regions, where position checks are properly done on rez instead.
It also fixes the megaregion land channel to return null if the land does not exist, which should probably also be done for the ordinary land channels rather than returning a dummy region.
Inspiration from Garmin's commit in http://opensimulator.org/mantis/view.php?id=6595.  Thanks!
2013-04-06 02:34:51 +01:00
Justin Clark-Casey (justincc)
0f008d5f7d When rezzing a coalesced object, check adjust position of all components. 2013-04-06 01:44:06 +01:00
teravus
d2367968e4 * In between the fog, a moment of clarity. This fixes mantis 6570 2013-04-04 19:10:23 -04:00
Justin Clark-Casey (justincc)
f064075a85 Fix XmlRpcAdmin admin_exists_user call so that it actually returns the last user login time rather than serializing the DateTime directly which generates a set of unexpected fields.
lastlogin return is in unix timestamp format.
2013-04-04 01:06:57 +01:00
Justin Clark-Casey (justincc)
f281a994e8 refactor: Simplify ScriptsHttpRequests.GetNextCompletedRequest to more simply iterate through pending requests without unnecessary checks. 2013-04-04 00:49:07 +01:00
Justin Clark-Casey (justincc)
831e4c3850 Fix bug where outstanding llHTTPRequests for scripts were not being aborted when they were deleted.
This was because AsyncCommandManager was handing an item ID to IHttpRequestModule.StopHttpRequest() rather than the expected request ID.
This commit also makes the http request asynchronous using BeginGetResponse() rather than doing this by launching a new thread
so that we can more safely abort it via HttpWebRequest.Abort() rather than aborting the thread itself.
This also renames StopHttpRequest() to StopHttpRequestsForScript() since any outstanding requests are now aborted and/or removed.
2013-04-04 00:36:15 +01:00
Justin Clark-Casey (justincc)
94d44142e3 minor: Stop falsely logging that a teleport was being aborted on client logout even when no teleport was active. 2013-04-03 00:48:36 +01:00
Justin Clark-Casey (justincc)
7bf1986e91 Fix minor race condition in SOP.SitTargetOrientationLL where inconsistent values could be returned if the sit orientation was changed whilst the property was being fetched. 2013-04-03 00:24:33 +01:00
Justin Clark-Casey (justincc)
97f0c9da84 Use consistent GroupPosition value Make SOP.UpdateGroupPosition() rather than one that could change whilst the method is being executed. 2013-04-03 00:23:20 +01:00
Justin Clark-Casey (justincc)
c0319daa40 fix minor race condition in SOP.SitTargetPositionLL where inconsistency could occur if the sit target position changed whilst the property was fetched 2013-04-03 00:09:28 +01:00
Justin Clark-Casey (justincc)
3332af4060 minor: Make SOP.UpdateOffset() more consistent by checking against the same old OffsetPosition rather than one which may vary if it simultaneously changes. 2013-04-03 00:01:06 +01:00
Justin Clark-Casey (justincc)
a3c723ee30 Fix minor race condition where SOP.GetGeometricCenter() and GetCenterOfMass() could return results which were never the case if these values were changed whilst the method was running
No need to create new Vector3s since these are structs.
2013-04-02 23:48:55 +01:00
Robert Adams
68c8633ba1 BulletSim: create axis lock constraint with proper orientation and
enable axis lock functionality.
2013-04-02 06:40:12 -07:00
Robert Adams
17aef1c883 BulletSim: update unmanaged API for HACD parameter passing. Bullet HACD
mesh to hull conversion calls in place but code not working. Update
BulletSim DLLs and SOs for new API and HACD code.
2013-04-01 18:03:11 -07:00
Robert Adams
ebc1209fc9 BulletSim: rearrange mega-region terrain code to make the thread flow
a little clearer.
2013-04-01 18:03:09 -07:00
Justin Clark-Casey (justincc)
2bfe60e2fb Use Output instead of OutputFormat in appropriate places of XEngine status reporting. 2013-04-02 01:28:16 +01:00
Justin Clark-Casey (justincc)
69bc37acd6 minor: Remove unnecessary call to GetAttachments() in AttachmentsModule.UpdateUserInventoryWithAttachment() 2013-04-02 01:00:55 +01:00
Justin Clark-Casey (justincc)
0dce496499 Fix what appears to be a bug in HGUserManagementModule where it enables on the base.Name rather than its own Name. 2013-04-02 00:55:00 +01:00
Justin Clark-Casey (justincc)
600087ab49 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-04-02 00:46:53 +01:00
Justin Clark-Casey (justincc)
4153cfbf14 Change recent MSSQL migrations to drop COLUMN from ALTER TABLE which is either not syntactical or unnecessary.
May fix http://opensimulator.org/mantis/view.php?id=6593
2013-04-02 00:45:29 +01:00
Robert Adams
84eb25da23 BulletSim: stop an avatar from moving if standing on a stationary
object. This will stop avatars from sliding down steep terrains
or objects while still allowing an avatar to be moved if standing
on a moving object.
2013-03-31 22:19:44 -07:00
Robert Adams
933ac60746 BulletSim: not quite functional axis lock code. 2013-03-31 22:19:43 -07:00
Robert Adams
7d50015a74 BulletSim: start the renaming of local variables to m_ form to match the OpenSim coding conventions. 2013-03-31 22:19:42 -07:00
Robert Adams
75b8cf428e BulletSim: fix line endings in BSActor* 2013-03-31 22:19:42 -07:00
Robert Adams
747ece59d2 BulletSim: convert BSDynamic to a BSActor and change BSPrim to set
up the vehicle actor.
2013-03-31 22:19:41 -07:00
Robert Adams
2c581cae2a BulletSim: Add physical 'actors' that operate on the physical object.
Add first 'actor' for locked axis.
2013-03-31 22:19:41 -07:00
Melanie
9b83e53b28 Export permission, part two. Setting export perms for textures and clothing works. Setting perms for prims also works but they don't propagate correctly yet.
NOT FOR PRODUCTIN USE. Your database will need to be updated before you can use this!
2013-03-31 21:59:44 +01:00
Justin Clark-Casey (justincc)
9fee431cc8 In the flotasm asset cache, if we get a request for a file that we're actively writing, simply return null instead of first logging an exception. 2013-03-30 01:21:16 +00:00
Justin Clark-Casey (justincc)
f8785b5f47 refactor: rename ETM.InformClientToInitateTeleportToLocationDelegate to InformClientToInitiateTeleportToLocationDelegate to correct spelling and bring into line with other ETM Initiate methods 2013-03-30 00:29:52 +00:00
Justin Clark-Casey (justincc)
76629289f0 refactor: move the append magic number processing for attachments back up into RezSingleAttachmentFromInventory from RezSingleAttachmentFromInventoryInternal() done in commit 023faa2 2013-03-29 23:59:21 +00:00
Kevin Cozens
cbc9ae898c Added missing functionality (mainly custom headers) to llHTTPRequest. 2013-03-29 23:32:11 +00:00
Justin Clark-Casey (justincc)
023faa227e Check viewer 2/3 attachment calls against avatar appearance attachment data rather than actually attached objects
By checking against the grid's Avatar data, we can ignore viewer side attachments but still initiate these calls simulator-side.
Initiating simulator-side is always necessary for version 1 viewers.
This is a further commit to resolve http://opensimulator.org/mantis/view.php?id=6581
2013-03-29 23:10:28 +00:00
Justin Clark-Casey (justincc)
23ae4c0a4d Fix bug where CHANGED_REGION and/or CHANGED_TELEPORT weren't firing for scripts in attachments.
This was because the script resumption in AttachmentsModule was firing the attach event instead.
Had to reinstate the code in 285bd3a do we can resume the scripts there instead, though the bug existed before its removal.
This is to resolve http://opensimulator.org/mantis/view.php?id=6578
2013-03-29 02:21:38 +00:00
Justin Clark-Casey (justincc)
e89bcf4f77 Revert "Try eliminating the pause before auto-reteleporting for a megaregion now that we're telepoting in a different way."
Unfortunately fails on Nebadon's system right now.  Needs investigation.  May put in a temproary option for experimentation soon.

This reverts commit d87ddf50fc.
2013-03-29 01:34:31 +00:00
Justin Clark-Casey (justincc)
4dfffa1df3 Add Location (relative), Rotation (Relative) and Rotation (World) to "show part" and other related console commands 2013-03-29 01:31:37 +00:00
Justin Clark-Casey (justincc)
d87ddf50fc Try eliminating the pause before auto-reteleporting for a megaregion now that we're telepoting in a different way.
On my own system, I can now eliminate the pause entirely and the reteleport happens whilst the teleport screen is still up.
Trying this change to see if this is true for other people.
2013-03-29 01:16:29 +00:00
Justin Clark-Casey (justincc)
285bd3abc8 Eliminate code which tries to restart attachment scripts in ScenePresence.MakeRootAgent(), since this is already done in AttachmentsModule 2013-03-29 00:49:55 +00:00
Justin Clark-Casey (justincc)
c92654fb43 Stop attempts to update/add existing attachments in user inventory when teleporting between regions.
This appears to resolve issues on teleport where attachments disappear or become labelled as invalid within user inventory.
2013-03-28 23:57:35 +00:00
Justin Clark-Casey (justincc)
2b142f2f9e Add "debug attachments" console command to allow highly verbose attachment logging to be switched on and off.
Default is off.
2013-03-28 23:09:35 +00:00
Justin Clark-Casey (justincc)
feffc8081d minor: remove some mono compiler warnings from EntityTransferModule 2013-03-28 22:56:30 +00:00
Justin Clark-Casey (justincc)
03e421bf3d minor: comment out unused Scene.AgentCrossing() to reduce code complexity 2013-03-28 22:55:13 +00:00
Justin Clark-Casey (justincc)
4ad9b27530 If the viewer has already rezzed any attachments itself, then ignore the simulator-side rez attachments call.
This is a further effort to reduce v3 viewer race conditions where this call may clash with the viewer signalling attachment wearing from its current outfit folder.
2013-03-28 22:51:59 +00:00
Justin Clark-Casey (justincc)
3b377f16b2 Fix regression tests by making a new NPC always trigger simulator side attachment code when created.
Regression from previous commit c2093ccc.  Failed because NPCs don't set the ViaLogin flag
2013-03-28 22:44:59 +00:00
Justin Clark-Casey (justincc)
e97567e227 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-28 22:35:24 +00:00
Justin Clark-Casey (justincc)
c2093ccce1 Move the simulator-side RezAttachments call on login to SP.MakeRootAgent with the other attachments code, using TeleportFlags.ViaLogin check to fire if necessary.
This is to simplify the code (no tricky 'wasChild' signalling required)
and to reduce the risk of a thread clash between simulator-side attaching (necessary for v1 viewers)
and the viewer-side attaching the v3 viewers perform.
2013-03-28 22:07:58 +00:00
Robert Adams
6a9630d2bd BulletSim: fix race condition when creating very large mega-regions.
The symptom was exceptions while creating physical terrain.
Reduce default terrain mesh magnification to 2 from 3 because the
higher resolution uses a lot of memory and doesn't solve the terrain
smoothness for vehicles.
Added comments here and there and improved some debugging log messages.
2013-03-28 10:59:18 -07:00
Robert Adams
3f9b274180 BulletSim: tweaks to terrain boundry computation. No functional changes. 2013-03-28 10:59:16 -07:00
Justin Clark-Casey (justincc)
9ca54d00d8 Add back a log message when we attempt a megaregion auto-reteleport 2013-03-28 02:29:34 +00:00
Justin Clark-Casey (justincc)
afd0d6af07 minor: Only try to deregister stats in EntityTransferModule.RemoveRegion() if module was enabled. 2013-03-28 02:23:09 +00:00
Justin Clark-Casey (justincc)
d9c049fd9f Fix a bug in HGEntityTransferModule to call base.RemoveRegion() when a region is removed rather than base.AddRegion() 2013-03-28 02:20:43 +00:00
Justin Clark-Casey (justincc)
b05ed4ffa6 Instead of going via GodLikeRequestTeleport, auto-teleport the agent directly in a megaregion, in the same manner at the "teleport user" console command.
This is to bypass an issue with the HGLureModule which stops the auto-teleport from happening.
2013-03-28 02:17:32 +00:00
Justin Clark-Casey (justincc)
506d5e41bf On the North and East sides of a megaregion, only consider regions within 256m to be neighbours rather than regions up to 512 distant.
This looks like an off-by-one bug since the view distance was already only 256 on the west and south sides.
This reduces the number of child agents being logged into regions neighbouring a megaregion.
2013-03-28 01:54:11 +00:00
Justin Clark-Casey (justincc)
617637c788 minor: Fix usage error message for "debug eq" console command 2013-03-28 01:41:41 +00:00
Justin Clark-Casey (justincc)
b5b01e5bb5 Make HGLureModule track god like lures as well as normal lures, to see if this fixes issues where second megaregion auto-teleport hangs on black teleport screen when HG is active. 2013-03-28 01:37:52 +00:00
Justin Clark-Casey (justincc)
876d0d310f Add "show eq" console command to show numbers of messages in agent event queues.
For debugging purposes.
2013-03-28 01:36:34 +00:00
Justin Clark-Casey (justincc)
f32027f3b5 Remove some Console.WriteLines accidentally left in last commit cfb20f09 2013-03-28 01:08:47 +00:00
Justin Clark-Casey (justincc)
cfb20f09a9 refactor: combine the checks for megaregion view range into a single place. 2013-03-28 00:57:43 +00:00
Justin Clark-Casey (justincc)
dd7d7683c9 Fix problem with megaregions where teleporting into a different region which already had a child agent would stop the eq working for the agent in the new region.
This was because the calculation as to whether a new agent was needed in the receiving region did not take megaregions into account,
unlike the original calculation when the user first teleported into the region.
This meant that on teleport, entity transfer would create a new CAP but this would be ignored by the viewer and receiving region, meaning that the EQ could no longer be used.
This would prevent subsequent teleport, amongst other things.
Currently, regions up to 512m from a megaregion are considered neighbours.
2013-03-28 00:12:48 +00:00
Justin Clark-Casey (justincc)
da5dbaf1d0 Add admin_get_agents xmlrpc method.
This allows one to retrieve information about agents from a particular region (name, id, position, etc.)
Similar to output from "show users"
See http://opensimulator.org/wiki/Remoteadmin:admin_get_agents for more details
2013-03-26 23:02:13 +00:00
Justin Clark-Casey (justincc)
3072f257f5 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-26 23:00:51 +00:00
Robert Adams
abde0d4efb BulletSim: prevent asset fetching loop when the fetched asset fails to mesh.
Check for the case where the fetched mesh asset fails meshing (degenerate
triangles or no physical mesh). In this case, the asset is marked 'failed'
and BulletSim doesn't keep trying to fetch over-and-over trying to get a
good asset.
2013-03-26 15:02:10 -07:00
Justin Clark-Casey (justincc)
13170ca627 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-26 20:32:22 +00:00
Justin Clark-Casey (justincc)
3f0f313a76 Make llGetLinkPrimitiveParams() and llGetPrimitiveParams() work for avatars in a linkset.
llGetPrimitiveParams() works through PRIM_LINK_TARGET
Setting via llSetLinkPrimitiveParams(), etc. not yet implemented
2013-03-26 20:25:58 +00:00
Melanie
e82fab34d7 Implement a pref to turn on the simulator ExportSupported feature entry.
This tells the viewer to enable the UI for export permissions.
WARNING: If your inventory store contains invalid flags data, this will result
in items becoming exportable! Don't turn this on in production until it's complete!
2013-03-26 19:00:30 +00:00
Melanie
5f4c4df227 Phase 1 of implementing a transfer permission. Overwrite libOMV's PermissionMask
with our own and add export permissions as well as a new definition for "All" as meaning "all conventional permissions" rather than "all possible permissions"
2013-03-26 03:40:06 +00:00
Robert Adams
285dc554ec BulletSim: new algorithm for vertical attraction which uses quaternion
arithmetic to compute the shortest path between the current tilt
and vertical.
2013-03-25 15:40:46 -07:00
Robert Adams
c96a6f1de6 BulletSim: small tweaks and formatting in the parameter fetching code. 2013-03-25 15:40:44 -07:00
Robert Adams
953090fd62 BulletSim: fix possible race condition where an prim's asset can be requested quicker than the asset fetcher returns and thus falsely reporting that an asset was not fetched and defaulting the assset to a bounding box. 2013-03-25 15:40:43 -07:00
Robert Adams
f783b9169f BulletSim: parameterize C# HACD hull creation. Add feature of reducing max hull count for simple (non-cut prims) meshes. 2013-03-25 15:40:41 -07:00
Justin Clark-Casey (justincc)
128c72a234 Start recording inter-region teleport attempts, aborts, cancels and failures in statistics for monitoring/debugging purposes
These are recorded as 'entitytransfer' stats as seen by the "show stats entitytransfer" console command.
2013-03-25 21:53:27 +00:00
Justin Clark-Casey (justincc)
01636ca900 Fix teleporting into the non-SW 256x256 corner of a megaregion, though currently with a 10 second delay before auto-reteleport to the correct location.
This now does a check for border crossing (required to trigger the teleport) immediately in SP.MakeRootAgent().
If left any later, it looks like the physics scene changes the position and stops the cross happening.
If done any earlier, nothing happens because the cross-code currently requires a PhysicsActor to be in place, thuogh it's probably not necessary for this case.
2013-03-23 00:47:59 +00:00
Justin Clark-Casey (justincc)
93206ef0fa Add "show borders" command to show the borders of a region.
This is relevant to mega-regions where the borders are very different to a regular region.
Also adds some method doc and other code comments.
2013-03-23 00:45:21 +00:00
Justin Clark-Casey (justincc)
c4d9a23f26 Following on from 476a7d3e (which wasn't enough), make chat across regions on different simulators work.
Also resolves an issue of multiple chatting if the originating simulators had more than one region and they were neighbours
2013-03-22 01:43:18 +00:00
Justin Clark-Casey (justincc)
1f17ef6d3c Take out a testing sleep I accidentally left in the teleport code from last commit 7471bc7 2013-03-22 01:06:56 +00:00
Justin Clark-Casey (justincc)
7471bc7775 At strategic points in the teleport process, if the client has simultaneously logged out then do not continue.
This aims to reduce any side effects if the process tries to complete after the client has logged back in (e.g. it was delayed due to a slow destination region response).
This introduces a new Aborting entity transfer state which signals that the teleport should be stopped but no compensating actions performed.
2013-03-22 01:00:13 +00:00
Justin Clark-Casey (justincc)
476a7d3eee Implement chat across region borders since we can tell if avatars in neighbouring regions are in range. 2013-03-22 00:03:10 +00:00
Justin Clark-Casey (justincc)
e23a0dcc5d minor: On teleport, signal a child agent before we send the viewer TeleportFinish in order to avoid a theoretical race condition when teleporting to a neighbour.
If we do this after TeleportFinish, then it's possible for a neighbour destination to request the source to create a child agent whilst its still treated as root.
This closes the original presence which we don't really want to do.
This is probably okay (albeit with warnings on the console) but afaics there's no reason not to move the child agent signal.
2013-03-21 23:37:23 +00:00
Justin Clark-Casey (justincc)
46c833810c On a teleport, lock m_agentsInTransit whilst we grab the value to check for completion just to be sure we're not using a thread cached version. 2013-03-21 00:46:08 +00:00
Justin Clark-Casey (justincc)
4de530af45 minor: disable logging on regression TestCrossOnSameSimulator() that I accidentally left on a few commits ago. 2013-03-20 23:13:12 +00:00
Justin Clark-Casey (justincc)
b1cd1d917e minor: don't bother with the pause before rezzing attachments if we are running regression tests (fire and forget calls launched on the same thread).
Also adds code comments as to why this pause exists.
2013-03-20 23:12:13 +00:00
Justin Clark-Casey (justincc)
16af5b87f8 Add file missing from last commit 36651be 2013-03-20 23:08:35 +00:00
Justin Clark-Casey (justincc)
36651bed71 On the later forms of teleport failure, tell the user if this was because viewer couldn't/didn't connect with destination or if destination didn't signal teleport completion.
Also adds regression test for the case where the viewer couldn't connect with the destination region.
Also refactoring of regression test support code associated with entity transfer in order to make this test possible and the code less obscure.
2013-03-20 23:01:16 +00:00
Justin Clark-Casey (justincc)
8de933ab07 Insert a short delay on the simulator side rezzing of attachments in order to fix viewer 3 issues if its own rezzing actions on login collide with the simulator side actions.
This resolves issues (at least in my tests with LL 3.3.4) where this can make attachments invisible until one zooms in on the avatar.
This doesn't affect version 1 viewers since this delay is shorter than the login delay.
This doesn't increase the login time since this part of the process was already being performed asynchronously.
This may be a temporary solution.
2013-03-20 02:09:25 +00:00
Justin Clark-Casey (justincc)
c0ff5635ba Fix "show attachments" command probably broken in commit addab12 (Wed Jan 2 21:38:00 2013)
This break was not connected with the recent attachment code changes.
2013-03-20 02:00:56 +00:00
Justin Clark-Casey (justincc)
3cb1c23554 Force a viewer object update for attachments at the end of the final Scene.CompleteMovement() in order to make all multi-attachments appear on the destination region.
For some reason, sending updates before this will not have this effect.
This may be something related to some viewers (e.g. LL 3.3.4) or something OpenSimulator isn't getting quite right.
2013-03-20 01:46:50 +00:00
Justin Clark-Casey (justincc)
9151b9d233 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-20 01:36:28 +00:00
Robert Adams
90b9121e66 BulletSim: change 'degenerate mesh' message from Error to Debug because there
seem to be lots of sculpties with this problem while the condition really doesn't
change region operation.
2013-03-19 17:15:24 -07:00
Justin Clark-Casey (justincc)
3648164219 Prevent multiple instances of the same item ID being appended to an AvatarAppearance
It looks like this was happening when AttachmentsModule.RezAttachments was doing a secondary set of each attachment to update with the asset ID (initially they only have the inventory ID).
However, with multi-attach this was appending a second copy of the same attachment rather than updating the data that was already there.
This commit requires both simulator and service to be updated.
2013-03-19 21:49:29 +00:00
Robert Adams
c2e4f8aed5 For the moment, disable the output of the 'scene' statistics in SimExtraStatsCollector
and thus for the command 'show stats' because it is ugly and most of the information
is already output in the formatted printout that appears before.
2013-03-19 12:37:44 -07:00
Robert Adams
1dd2d432f1 For those people collecting and comparing logfiles from servers scattered
around the world, change LogWriter to use DateTime.UtcNow rather than
DateTime.Now.
2013-03-19 11:40:10 -07:00
Robert Adams
8360223fed BulletSim: code to generate a higher resolution terrain mesh. Parameter
TerrainMeshMagnification controls number of vertices generated per
heightmap point. Default is 3.
2013-03-19 00:00:03 -07:00
Robert Adams
8510f57ad4 BulletSim: add terrain contact processing threshold parameter. Initialize contact processing threshold for static object as well as mesh terrain. 2013-03-19 00:00:02 -07:00
Justin Clark-Casey (justincc)
397379cd3f Process default attachment point in AttachObjectInternal before we check whether a worn object needs to displace an existing attachment on the same point if we are not using multi-attach. 2013-03-19 00:39:58 +00:00
Melanie
55ab6f015a Fix tests for multiattach 2013-03-18 23:48:03 +00:00
Melanie
5e1f651e21 Merge branch 'master' into newmultiattach
Conflicts:
	OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
2013-03-18 23:31:27 +00:00
Melanie
0635d9d174 Merge commit 'ccd6f443e1092cb410f565e921f7cf4dd8cd2dac' into newmultiattach
Conflicts:
	OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
2013-03-18 23:21:01 +00:00
Melanie
e4a70b9f9a Limit each attachment point to 5 items as per spec 2013-03-18 22:56:26 +00:00
Melanie
d07943c262 Multiattach, part 2 2013-03-18 22:56:17 +00:00
Melanie
fcecfc81bb Multiattach, part 1
Conflicts:

	OpenSim/Framework/AvatarAppearance.cs
	OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
	OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
	OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
	OpenSim/Region/Framework/Scenes/Scene.cs
	OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs
	OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
2013-03-18 22:56:03 +00:00
Justin Clark-Casey (justincc)
3611d33b00 Improve rejection of any attempt to reattach an object that is already attached.
This also adds/extends regression tests for wearing attachments directly for the scene and attempting to reattach/rewear already attached objects.
2013-03-18 22:04:27 +00:00
Justin Clark-Casey (justincc)
a7a9a8a614 Fix recent regression where an item worn to an attachment point that was already occupied did not remove the previous attachment (current behaviour)
Regression was commit ccd6f4 (Tue Mar 5 23:47:36 2013)
Added regression test for this case.
2013-03-18 20:48:50 +00:00
Melanie
46a81b3527 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-03-17 23:07:12 +00:00
Robert Adams
464201b41d BulletSim: add INI parameter for angular banking timescale fudge parameter. 2013-03-16 15:34:07 -07:00
Vegaslon
fc84ebb819 BulletSim: Working Implementation of Angular Banking for Vehicles (Not SL Grade, Other features when implemented should slow it down for now be Strong with Vertical Angular attraction setting and conservative with Angular Velocity on X axis)
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-03-16 15:13:40 -07:00
teravus
6e1b3f9951 *Yet another HTTPServer update code changes in OpenSim Libs. * This fixes a connection close issue by getting rid of the socket references * This adds a connection timeout checker to shutdown poor or evil connections and combats DOS attempts that just connect and make no complete requests and just wait. It also actually implements KeepAlive... instead of just understanding the connection header in the request... you can test by connecting and requesting a keepalive header and sending another request on the same connection. The new timeout checker closes expired keepalive sessions, just make sure you send the request within 70 seconds of connecting or the timeout checker will timeout the connection. 2013-03-16 03:14:11 -04:00
Justin Clark-Casey (justincc)
03075359b5 Finally remove the 'REST' ApplicationPlugins code which has been non-functional and largely commented out for many years. 2013-03-15 23:48:40 +00:00
Melanie
7e5d553781 Make the LSL memory functions virtual so script engines can override them if they have different memory management. 2013-03-15 23:46:49 +00:00
Justin Clark-Casey (justincc)
35843e8ec8 Change the table and field names of XAssetService mysql db tables to be capitalized like Avatars, Friends, etc.
Also fixes access time being set on assets rather than XAssetsMeta
This is to try and be somewhat consistent with other service tables that are mainly in this style.
No migration is supplied, since nobody should be using this service yet except on a test basis.
2013-03-15 23:42:16 +00:00
Justin Clark-Casey (justincc)
e9f3cd1a60 Implement access time updates on assets for XAssetService.
This only happens if access time is older than 30 days currently, in order to reduce database updates.
The idea is to give some idea of assets which haven't been accessed for a very, very long time.
These might conceivably be deleteable, though this will be a risk due to caching at other points in the chain.
This is actually currently much less useable on the xasset service since access time is on metadata rather than the data itself.
And many metadata entries may point to the same data.  Probably need to address this.
2013-03-15 23:17:54 +00:00
Justin Clark-Casey (justincc)
45dee383db refactor: Reuse Get() method in AssetService to eliminate some copy/paste in other Get methods 2013-03-15 22:42:34 +00:00
Justin Clark-Casey (justincc)
bd0c1d9b6a Migrate assets from chained asset service to xassetservice as they are requested.
This shrinks the asset database over time as duplicate assets are fetched.
2013-03-15 22:33:39 +00:00
Justin Clark-Casey (justincc)
d05af4bdad Fix bug in AssetService where requesting data only for an asset would throw an exception if the asset did not exist. 2013-03-15 22:14:34 +00:00
Justin Clark-Casey (justincc)
7fb458b055 minor: log an error rather than info if a connector fails to load. 2013-03-15 22:08:11 +00:00
Justin Clark-Casey (justincc)
3a7d9f740e minor: Make logged message in ServerUtils more consistent. 2013-03-15 22:05:18 +00:00
Justin Clark-Casey (justincc)
8cc3adb585 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-15 21:57:25 +00:00
Justin Clark-Casey (justincc)
924d6e892a Make it possible to chain another asset service underneath the de-duplicating XAssetService.
This makes it possible to use the dedupliicating service without needing to migrate all the existing asset data beforehand.
Currently controlled by a ChainedServiceModule setting in [AssetService] (e.g. ChainedServiceModule = "OpenSim.Services.AssetService.dll:AssetService")
Not yet ready for use.
2013-03-15 21:53:39 +00:00
Robert Adams
032b645e80 Add Vegaslon to CONTRIBUTORS.txt 2013-03-15 14:07:28 -07:00
Vegaslon
78b25094dc BulletSim: Tweak vertical angular attraction to remove double VehicleOrientation application fixing the problem with the vertical attractor pushing vehicles nose first into ground when tilted on side.
Signed-off-by: Robert Adams <Robert.Adams@intel.com>
2013-03-15 14:05:38 -07:00
Robert Adams
c10c43d6f6 Fix server statistics always reporting zero for total network bytes in/out.
Clean up some parameter code in Statistics.Binary.
2013-03-15 13:59:34 -07:00
Justin Clark-Casey (justincc)
d3e76730bd Add example code to DOExampleModule to pull data from that previously saved by DAExampleModule when instantiating a dynamc object. 2013-03-15 00:49:35 +00:00
Justin Clark-Casey (justincc)
cb74186888 Add ParentGroup.HasGroupChanged = true setting to DAExampleModule as this is necessary to get attributes to save (though this probably happens anyway due to the prim move) 2013-03-15 00:27:06 +00:00
Justin Clark-Casey (justincc)
e25ba116a3 refactor: make llGetLinkName() and llGetLinkKey() use a common GetLinkEntity() method 2013-03-15 00:06:42 +00:00
Justin Clark-Casey (justincc)
081271e1d7 minor: remove mono compiler warnings in LSL_Api.cs 2013-03-14 23:44:16 +00:00
Justin Clark-Casey (justincc)
12900ea84e Log same environment information to Robust log as is already done for simulator logs, for debug purposes 2013-03-14 23:39:15 +00:00
Justin Clark-Casey (justincc)
2fbc08d7dd refactor: minor cleanup in osGetAvatarList() 2013-03-14 23:19:18 +00:00
Justin Clark-Casey (justincc)
0ea0f8aa83 Fix bug in osCauseHealing() if called with an avatar ID for an avatar that is not in the scene. 2013-03-14 23:16:39 +00:00
Justin Clark-Casey (justincc)
56b333f301 minor: Use more compact libomv primitive constructors in osNpcGetPos() and osNpcGetRot() 2013-03-14 23:12:58 +00:00
Justin Clark-Casey (justincc)
55204ccde6 Fix minor race conditions in OSSL_Api functions where a parcel could be misidentified for moving prims. 2013-03-14 23:09:59 +00:00
Justin Clark-Casey (justincc)
f8dab4f93f refactor: Use LSL_Vector(Vector3) constructor in llCastRay() 2013-03-14 23:06:54 +00:00
Justin Clark-Casey (justincc)
ca99f418d8 refactor: Use ILandChannel.GetLandObject(Vector3) in LSL_Api rather than having to continually take intermediate Vector3s to avoid race conditions 2013-03-14 23:05:21 +00:00
Justin Clark-Casey (justincc)
c1115e4c2e Add ILandChannel.GetLandObject(Vector3 position) as this is a very common input to GetLandObject()
This conforms to the existing ILandChannel.ParcelsNearPoint() method
2013-03-14 22:56:26 +00:00
Justin Clark-Casey (justincc)
c09f4ff483 Fix minor race condition in llGetCameraRot() where inconsistent information could be returned for a rotating camera 2013-03-14 22:49:08 +00:00
Justin Clark-Casey (justincc)
114fd042de Fix minor race condition in llGetCameraPos() where an inconsistent post could be returned for a moving camera 2013-03-14 22:46:27 +00:00
Justin Clark-Casey (justincc)
d4b109b4c4 Fix minor race condition in llParcelMediaCommandList() where a parcel could be misidentified for a moving prim 2013-03-14 22:45:00 +00:00
Justin Clark-Casey (justincc)
2a81eb8d45 Fix minor race conditions in LSL_Api.GetPrimParams() for PRIM_POSITION, PRIM_SIZE and PRIM_ROT_LOCAL
This function is used by all the various ll*Params() and os*Params() functions
2013-03-14 22:42:11 +00:00
Justin Clark-Casey (justincc)
b23009e480 Fix minor race condition in llGetGeometricCenter() if this was changing whilst the function was called. 2013-03-14 22:35:41 +00:00
Justin Clark-Casey (justincc)
a6f8638174 refactor: use LSL_Rotation(Quaternion) constructor in lLGetRootRotation() 2013-03-14 22:34:48 +00:00
Justin Clark-Casey (justincc)
dd6f1fc637 Fix minor race condition in llGetRootPosition() where inconsistent results could be returned for moving prims 2013-03-14 22:33:44 +00:00
Justin Clark-Casey (justincc)
e7603f98b7 Fix minor race conditions in detecting current parcel for llAddToLandPassList(), llSetParcelMusicURL() and llGetParcelMusicURL() for moving prims 2013-03-14 22:31:07 +00:00
Justin Clark-Casey (justincc)
e6eb914675 refactor: use LSL_Vector(Vector3) constructor in llGroundNormal() 2013-03-14 22:29:09 +00:00
Justin Clark-Casey (justincc)
f8c24b2a61 minor: Reuse ground LSL_Vector in llGroundSlope() rather than creating a new one. 2013-03-14 22:26:37 +00:00
Justin Clark-Casey (justincc)
3c9bea1e3f Fix minor race conditions in llTeleportAgent(), llTeleportAgentGlobalCoords(), llEjectFromLand() and llOverMyLand() where the wrong parcel could be identified for very fast moving avatars. 2013-03-14 22:22:10 +00:00
Justin Clark-Casey (justincc)
7b85279dba refactor: Use LSL_Vector(Vector3) constructor in llGetCenterOfMass() 2013-03-14 22:14:32 +00:00
Justin Clark-Casey (justincc)
ff6a16b46e Fix a minor race condition in llInstantMessage() where slightly wrong origin co-ordinates could be given for a fast moving prim 2013-03-14 22:09:05 +00:00
Justin Clark-Casey (justincc)
895aa7346f Fix minor race condition in llGetOmega() where inconsistent results could be returned (accidentally stated that commit 1774c631 was this fix).
Commit 1774c631 was actually a fix for a similar minor race condition in llGetAccel()
2013-03-14 22:07:07 +00:00
Justin Clark-Casey (justincc)
1774c631cb Fix minor race condition in llGetOmega() where a call whilst a prim was changing angular velocity could return inconsistent results 2013-03-14 22:04:11 +00:00
Justin Clark-Casey (justincc)
04e806036f refactor: Use LSL_Vector(Vector3) constructor in llGetVel() 2013-03-14 22:02:43 +00:00
Justin Clark-Casey (justincc)
ffbbe29229 refactor: Use LSL_Vector(Vector3) constructor in llGetTorque() 2013-03-14 22:01:24 +00:00
Justin Clark-Casey (justincc)
c3e081a5ca Fix minor race condition in llGetLocalRot() where inconsistent results could be returned if the prim was rotating during the call 2013-03-14 22:00:04 +00:00
Justin Clark-Casey (justincc)
f840728273 refactor: use cleaner LSL_Rotation quaternion constructor in LSL_Api.GetPartRot() 2013-03-14 21:57:43 +00:00
Justin Clark-Casey (justincc)
ad9bd3fe93 Fix sensors, llGetRootRotation(), llGet*Param() and other functions to use the world rotation if the avatar to which they are attached is sitting 2013-03-14 21:46:29 +00:00
Justin Clark-Casey (justincc)
e9c394fb4e Make llGetObjectDetails() return the correct world rotation for a sitting avatar
This addresses http://opensimulator.org/mantis/view.php?id=6567
This creates a ScenePresence.GetWorldRotation() with the same semantics as SOP.GetWorldRotation()
SP.Rotation can't be used since it's relative to the sat upon prim if the avatar is sitting.
2013-03-14 21:23:48 +00:00
teravus
9fad90a914 Merge branch 'master' of ssh://opensim/var/git/opensim 2013-03-14 00:58:00 -04:00
teravus
42c533c589 * Updates HttpServer again to re-add the code that closes the stream and connection when It's done sending. Be on the lookout for an old linux/mono bug where the client doesn't get the last bit of the stream before it is disconnected!. Code on opensim-libs. All tests pass.. HttpServer's internal tests pass.. but just a bad feeling. More people should test :) 2013-03-14 00:57:42 -04:00
Justin Clark-Casey (justincc)
43220afda2 Improve DAExampleModule to show current necessary locking to avoid race conditions with a serialization thread. 2013-03-13 23:42:14 +00:00
Justin Clark-Casey (justincc)
48d41ef307 Remove unnecessary instation of DOMap() in SOP from commit 5c53660 since this is being done lazily 2013-03-13 23:25:56 +00:00
Justin Clark-Casey (justincc)
39a0928052 minor: Remove some mono compiler warnings in OpenSim.Framework.dll 2013-03-13 23:17:27 +00:00
Justin Clark-Casey (justincc)
5c53660a7f Add prototype dynamic objects map for scene object parts
This allows region modules to add dynamic objects to SOPs rather than having to continually push and pull OSD dynamic attributes.
This is to explore the original MOAP use case for dynamic attributes where it could be very awkward and possibly time-consuming to keep reconstructing MediaEntrys from stored DynamicAttributes.
This commit adds a DOExampleModule to demonstrate/evolve this code.
Dynamic objects involve no storage or persistence changes - the 'backing store' for any data that does need to be saved will remain the DAMap.
DOExampleModule in this commit only attaches a fresh dynamic object.  Actually constructing this from stored dynamic attributes and handling persistence is left for later.
These changes should affect no existing functionality, though it may or may not reveal necessary changes in DAMap down the road.
2013-03-13 22:59:06 +00:00
Justin Clark-Casey (justincc)
b7216f4daf minor: save some commented out log lines which will be useful again in future debugging of VectorRenderModule 2013-03-13 00:46:17 +00:00
Justin Clark-Casey (justincc)
f8a4d95bdd minor: Remove mono compiler warning in LLClientView 2013-03-13 00:22:07 +00:00
Justin Clark-Casey (justincc)
0d25be3f81 Make C# scripts return correct error line and column numbers instead of failing because they have no linemap.
Adapted fix from http://opensimulator.org/mantis/view.php?id=6571
Thanks Nickel Briand
2013-03-13 00:19:37 +00:00
Justin Clark-Casey (justincc)
fb1211ad5e Add DisableInterRegionTeleportCancellation option in [EntityTransfer] section of OpenSim.ini. False by default.
This option allows the simulator to specify that the cancel button on inter-region teleports should never appear.
This exists because sometimes cancellation will result in a stuck avatar requiring relog.
It may be hard to prevent this due to the protocol design (the LL grid has the same issue)
In small controlled grids where teleport failure is practically impossible it can be better to disable teleport cancellation entirely.
2013-03-12 23:01:27 +00:00
Justin Clark-Casey (justincc)
c43d4b5572 Improve teleport cancellation in some circumstances, though cancelling teleports is still not recommended.
Previously, hitting the cancel button on a teleport would cancel on the client side but the request was ignored on the server side.
Cancel would still work if the teleport failed in the early stages (e.g. because the destination never replied to early CreateAgent and UpdateAgent messages).
But if the teleport still completed after a delay here or later on, the viewer would become confused (usual symptom appears to be avatar being unable to move/reteleport).
This commit makes OpenSimulator obey cancellations which are received before it sends the TeleportFinish event queue message and does proper cleanup.
But cancellations received after this (which can happen even though the cancel button is removed as this messages comes on a different thread) can still result in a frozen avatar.
This looks extremely difficult and impossible to fix.
I can replicate the same problem on the Linden Lab grid by hitting cancel immediately after a teleport starts (a teleport which would otherwise quickly succeed).
2013-03-12 22:16:09 +00:00
Justin Clark-Casey (justincc)
0c6268fe56 minor: remove mono compiler warning in SceneObjectUndoRedoTests 2013-03-11 23:15:13 +00:00
Justin Clark-Casey (justincc)
be686f80a3 minor: Remove mono compiler warnings from LSL_ApiHttpTests 2013-03-11 23:01:07 +00:00
Justin Clark-Casey (justincc)
e898a5fec5 minor: Remove mono compiler warnings in EventQueueTests 2013-03-11 22:42:27 +00:00
Robert Adams
13f3bcae94 Update comment about setting physics=BulletSimN as the C# Bullet
version has been wrapped into one BulletSim and the physics engine
selection is now done as specified in OpenSimDefaults.ini.
2013-03-10 22:24:34 -07:00
Robert Adams
1120bcf123 BulletSim: remove the ability for avatars to fly off the edge of
regions when there are no region neighbors.
Add some terrain location processing routines to support above.
2013-03-09 14:15:14 -08:00
teravus
5097437e11 * Apparently, sometimes texture entries come in from the wire with no default texture defined.. so apply better fallback protection against that. The net result is clients will have their selected textures set when they would have previously had an ignored exception. 2013-03-08 19:32:47 -05:00
teravus
33dab49d22 * Just another one of those new packet blocks causing a null ref. Defaulting to zero length array..... 2013-03-07 19:19:36 -05:00
Diva Canto
2f1aa87eb5 One more comment inconsistency fixed. 2013-03-07 08:02:48 -08:00
Diva Canto
fdebee25db Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-07 06:41:03 -08:00
Diva Canto
2b0056eaca Fixed inconsistency in comments. Thanks Ai Austin. 2013-03-07 06:40:39 -08:00
Justin Clark-Casey (justincc)
6706e189d5 minor: remove some completely unused string local vars added recently in commit 984faf2 2013-03-06 23:11:32 +00:00
Justin Clark-Casey (justincc)
2fe938d11d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-06 23:07:04 +00:00
Justin Clark-Casey (justincc)
5751ecde52 Add code for testing event queue messages recevied on region cross.
This is currently disabled pending an improvement in the test code to properly add avatars when an event queue module is present.
2013-03-06 23:06:00 +00:00
Justin Clark-Casey (justincc)
8960418e7d Add regression test for presence crossing between regions on the same simulator.
Unlike a much earlier commented out version of this test, this is done in synchronous mode.
2013-03-06 21:37:53 +00:00
Mic Bowman
9875e840f7 Per discussions with justincc... split the JsonStore type
functions into one for node type and one for value type.
Define and export constants for both nodes and values.
2013-03-05 20:33:17 -08:00
Mic Bowman
30e06b0742 Convert doubles passed back through the MOD interface into LSL_Floats 2013-03-05 20:32:06 -08:00
Justin Clark-Casey (justincc)
a9f380d124 Fix bug in osGetPrimitiveParams() so that it works for prims with the same owner as the script and not ones with different owners.
Addresses http://opensimulator.org/mantis/view.php?id=6560
2013-03-06 00:22:58 +00:00
Justin Clark-Casey (justincc)
b272b91317 minor: Fix mono compiler warning in MonitorModule 2013-03-05 23:59:39 +00:00
Justin Clark-Casey (justincc)
5cd38d680a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-05 23:52:52 +00:00
Justin Clark-Casey (justincc)
ccd6f443e1 Get attachment script state before taking sp.AttachmentsSyncLock() to avoid race conditions between closing agents and scripts that may be doing attachment manipulation.
This is in an effort to resolve http://opensimulator.org/mantis/view.php?id=6557
2013-03-05 23:47:36 +00:00
BlueWall
f676408e2a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-05 15:30:54 -05:00
teravus
69fbcdf14c * Add a Max Payload size property to the Websocket Server Handler. If you would like to restrict the maximum packet size, (and therefore protect against Memory DOSing) then you should set this. I defaulted it to 40MB. This means that in theory, a malicious user could connect and send a packet that claims that the payload is up to 40 mb (even if it doesn't actually turn out to be 40mb. More testing needs to be done on it where the packets are maliciously malformed. 2013-03-05 00:04:09 -05:00
teravus
7556b42d7a * Update LibOMV to f8f8e616b37a7ea22b7922b2331999bc06725bf9
* Add zero length blocks to the new packet blocks to remain compatible with older viewers and avoid a NullRef when _packets_.cs calls the Length parameter..    which adds up the Length property all of the blocks.
2013-03-04 21:26:26 -05:00
Justin Clark-Casey (justincc)
fa9f4ef1ba Fix issue in the mesh upload flag module where the ID of the last agent to request the capability was always used instead of the original requesting agent for each cap.
Should address http://opensimulator.org/mantis/view.php?id=6556
2013-03-04 23:20:00 +00:00
Diva Canto
aadf7d32d1 GridUserService was missing from [Gatekeeper] 2013-03-04 12:52:28 -08:00
BlueWall
66d74e76b1 Add method to remove JsonRpc Handlers from the server 2013-03-03 09:40:44 -05:00
Diva Canto
e70c71a175 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-02 17:54:19 -08:00
Diva Canto
b0985f7019 Fixed typos in TempAttachmentsModule. No changes. 2013-03-02 17:53:57 -08:00
Robert Adams
b47ffb5dc4 Added existance and default value for [XEngine]MinTimerInterval to OpenSimDefaults.ini 2013-03-02 13:02:02 -08:00
Justin Clark-Casey (justincc)
1bc8692a99 Move AllowedClients and BannedClients section to new [AccessControl] section in OpenSim.ini from [Startup]
This change also corrects the setting names - they were actually wrong (though the text in {} was correct).
If there are settings in [Startup] they will continue to be used and anything there will override settings in [AccessControl]
2013-03-02 01:43:54 +00:00
Justin Clark-Casey (justincc)
4999d7920a Revert "Removed more vars from [Startup]. I think these were already moved elsewhere, because I can't find any reference to them in the code."
This reverts commit efa7227865.
2013-03-02 01:23:01 +00:00
Justin Clark-Casey (justincc)
1a98ce5f64 minor: Quieten down the parts of the WebSocketEcho module logging for now where it tells us it is added/loaded/removed from regions 2013-03-02 01:06:08 +00:00
Justin Clark-Casey (justincc)
c91753c065 minor: Log number of region modules loaded from each plugin 2013-03-02 00:56:53 +00:00
Diva Canto
20530ee667 Moved permissions config vars out of [Startup] into [Permissions]. Backwards compatible ([Startup] still being looked up), but please update your configs sometime soon. 2013-03-01 15:24:22 -08:00
Diva Canto
efa7227865 Removed more vars from [Startup]. I think these were already moved elsewhere, because I can't find any reference to them in the code. 2013-03-01 14:18:01 -08:00
Justin Clark-Casey (justincc)
90a19fb573 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-01 21:49:05 +00:00
Justin Clark-Casey (justincc)
c851ebcd8c Add the Mono AddinDependency attribute to the example region modules.
It turns out this is required to get Mono.Addins to pick up plugin DLLs
2013-03-01 21:47:17 +00:00
Robert Adams
326634a0b3 BulletSim: more things into the TODO list. 2013-03-01 09:44:39 -08:00
Robert Adams
1c740798b4 BulletSim: add parameters, code cleanup around checking and enforcing
maximum velocity and angular velocity values for prims.
2013-03-01 09:44:37 -08:00
Justin Clark-Casey (justincc)
862c3fd446 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-03-01 00:21:56 +00:00
Justin Clark-Casey (justincc)
faf96f5c85 minor: Log location in which simulator/robust was started.
Useful information for system debugging, especially if logging and ini files locations have been changed from defaults.
2013-02-28 23:59:26 +00:00
Robert Adams
b2087add96 Add missing prebuild.xml dependency for System.Action2<t1,t2> in recent additions
to ScriptEngine tests. Compiles some places but not others.
2013-02-28 15:17:07 -08:00
Diva Canto
433102108b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-28 14:20:31 -08:00
Diva Canto
ea3e0ef8a3 Bug fix in DataSnapshot, where a var was being used before being initialized. 2013-02-28 14:20:07 -08:00
Justin Clark-Casey (justincc)
239a8da74e Fix potential concurrency issue since the LSL notecard cache was not being checked for expiry under lock 2013-02-28 21:19:23 +00:00
Justin Clark-Casey (justincc)
a523ed1e4d Fix bug where simultaneous calls by different scripts to llGetNotecardLine() or llGetNumberOfNotecardLines() would sometimes not trigger a dataserver event.
This was because the notecard asset ID was being used as the request identifier.
Now using a random ID, in common with other code using the DataServer
2013-02-28 21:15:14 +00:00
Justin Clark-Casey (justincc)
14684116f8 Add regression tests for llGetNotecardLine() 2013-02-28 20:57:03 +00:00
Diva Canto
9e0c678c1e Robust.HG.ini.example updated to get an [Hypergrid] section too. 2013-02-28 06:24:09 -08:00
Diva Canto
3cc3a8e5bf Removed duplicate 'using' statement. 2013-02-27 21:12:27 -08:00
Diva Canto
bb44758179 Switched to using the other Util function with a default value. 2013-02-27 20:59:16 -08:00
Diva Canto
64b8ce73da Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-27 20:50:03 -08:00
Diva Canto
f1010d7b15 Moved the HG default variables out of [Startup] and into their own section [Hypergrid] in *Common.ini.example. Backwards compatible for now. 2013-02-27 20:49:41 -08:00
Justin Clark-Casey (justincc)
b892411575 Add comment to example region modules about need to add Assembly annotation if adding modules to a DLL which does not already have this 2013-02-27 22:54:51 +00:00
Justin Clark-Casey (justincc)
0e8ec5649e Get "show modules" console command to obey selected command line region/s 2013-02-27 22:32:14 +00:00
Justin Clark-Casey (justincc)
647cb278c7 Get "show modules" console command to show modules in alphabetical order, and group shared and non-shared modules together
This is to make it easier to tell if a region has a certain module active or not
2013-02-27 22:25:03 +00:00
Justin Clark-Casey (justincc)
1bef19b914 Do not have the Freeswitch connector on by default in Robust ini example files.
This is not widely used (may even be currently broken), only allows very poor quality voice (not the fault of FreeSwitch)
and requires a complicated Freeswitch setup.
Having it on but not configured results in spurious warnings in the logs
2013-02-27 21:45:31 +00:00
Justin Clark-Casey (justincc)
9b045e72b6 Add asset name and description truncation warnings to SQLite database plugin for consistency. 2013-02-27 21:41:21 +00:00
Justin Clark-Casey (justincc)
74916ed777 Add more information to warnings logged when asset names and descriptions have to be truncated for database storage
On balance, I still think this is useful because asset names and descriptions can sometimes be helpful in determining what things are.
Even though they are never subsequently (inventory names/descriptions are always used instead).
2013-02-27 21:35:54 +00:00
Justin Clark-Casey (justincc)
61ba02e95f minor: remove some mono compiler warnings in script regression tests 2013-02-27 20:38:10 +00:00
Justin Clark-Casey (justincc)
056f11c297 Show http poll handlers in separate http (poll) section of "show http-handlers" console command instead of never showing them (due to a previous bug).
The code was assuming that poll handlers were also included in general http handlers but this was not the case.
2013-02-27 20:33:11 +00:00
Justin Clark-Casey (justincc)
59bd099b03 Add regression test for llReleaseUrl() (and for llRequestUrl)
Forgot to add file for llRequestUrl() test in commit b8a7c8b
2013-02-27 20:12:58 +00:00
Justin Clark-Casey (justincc)
20760fde25 Improve description of GenerateMapTiles config option 2013-02-27 00:31:54 +00:00
Justin Clark-Casey (justincc)
917c1695a1 Add documentation on default or Warp3D image module choice to OpenSim.ini.example.
As before, default is MapImageModule.
Thanks to Ai Austin for pointing out this omission.
2013-02-27 00:27:21 +00:00
Justin Clark-Casey (justincc)
80c19b7cac Make sure we dispose of WebResponse, StreamReader and Stream in various places where we were not already. 2013-02-27 00:21:02 +00:00
Justin Clark-Casey (justincc)
2bfbfc5725 minor: Remove unnecessary very old System.Net reference in OpenSim.Region.ScriptEngine.Shared 2013-02-26 23:43:06 +00:00
Justin Clark-Casey (justincc)
ea4be309e8 minor: remove warning in ConfigurationLoaderTest 2013-02-26 23:40:55 +00:00
Justin Clark-Casey (justincc)
b8a7c8b26f Add regression test for llRequestUrl() 2013-02-26 23:36:36 +00:00
Robert Adams
bf9132e1c7 BulletSim: fix crash around race condition when a mesh asset cannot
be fetched.
Update TODO list.
2013-02-26 11:32:01 -08:00
Robert Adams
2b53f08386 BulletSim: tweeks to make avatar jump work better. 2013-02-25 21:58:00 -08:00
Diva Canto
a356978c79 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-25 16:28:12 -08:00
Diva Canto
00da59ae52 Mantis #6552 -- stricter error (crash) if server URL is malformed. 2013-02-25 16:27:41 -08:00
Justin Clark-Casey (justincc)
d0cb4fc326 Move map related settings from [Startup] to a new [Map] section in OpenSim.ini
Existing map settings in [Startup] will continue to work, and if present will override anything in [Map]
However, the proper place for such settings would now be [Map]
This is to reduce the use of [Startup] as a bag for non-generic settings which should really go in sections, in common with other settings.
This commit also extends Diva's previous work to allow a default setting to be given when looking at multiple sections for settings.
2013-02-25 23:04:38 +00:00
Diva Canto
66c5934d90 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-25 10:25:56 -08:00
Diva Canto
53470d5057 Missing var in [LoginService] for HG Robust. 2013-02-25 10:25:36 -08:00
Diva Canto
f7aa018a78 Fixes mantis #6551 -- misspelled key name. Also fixed an issue with the roles cache. 2013-02-25 10:24:28 -08:00
Robert Adams
aa538fe36f Add StatsManager registration for region specific stats as collected
by MonitorModule. Left existing functionality (command line and HTTP
fetch) and just added StatsManager registration.
2013-02-24 07:48:02 -08:00
Robert Adams
b2495c9a1e Streamline stat registration code in ServerStats. Remove most of the
usage of ProcessCounters which tend to fail oddly and are not supported
everywhere.
2013-02-24 07:48:01 -08:00
Robert Adams
2aae046b95 Make StatsManager default output a little more readable 2013-02-24 07:48:01 -08:00
Robert Adams
9f213892ea Add EventHistogram.GetHistogramAsOSDMap that returns that parameters
about the histogram as well as the values.
2013-02-24 07:48:00 -08:00
Robert Adams
ee8d726ec5 Modify StatsManager so console command "show stats category container"
only outputs the statistics in the specified container in the category.
2013-02-24 07:48:00 -08:00
Robert Adams
8e67ad25b0 Addition of ServerStats shared region module which collects and registers
server wide statistics (CPU%, network bytes sent, ...) with StatsManager.
2013-02-24 07:47:59 -08:00
Diva Canto
6a01683aeb More clarification on the [Groups] section 2013-02-23 11:24:11 -08:00
Diva Canto
a0161e7161 Further clarification on the same spot. 2013-02-23 11:21:14 -08:00
Diva Canto
c72c238f5d Improved documentation of Groups section. 2013-02-23 11:16:50 -08:00
Diva Canto
d7115cfd46 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-22 15:58:06 -08:00
Diva Canto
0e8289cd00 Added new Util function for reading config vars that's more generic than the one I added yesterday -- this is for helping move config vars out of [Startup] 2013-02-22 15:57:33 -08:00
Justin Clark-Casey (justincc)
a93f06eb88 minor: Add doc to ScenePresence.IsInTransit to make it clear that this is set only for region crossing and not teleport, etc. 2013-02-22 23:08:42 +00:00
Justin Clark-Casey (justincc)
ccb7cce819 Make reset of EntityTransferStateMachine for an avatar transfer always happen despite unexpected exceptions.
This means that if such an exception does occur, the region does not need to be reset before that user can teleport from it again.
This is all Oren's code from his patch in http://opensimulator.org/mantis/view.php?id=6374 but I've chosen to split it in two.
2013-02-22 21:59:00 +00:00
Diva Canto
0d08f81421 Err.. wrong dll name for groups in Robust.HG.ini.example 2013-02-21 19:07:39 -08:00
Diva Canto
56c979afe8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-21 17:27:03 -08:00
Diva Canto
0e5859d2b4 Minor formatting cleanup. No changes. 2013-02-21 17:26:37 -08:00
Diva Canto
e515cdddec Simplification of HG configs: HomeURI and GatekeeperURI now are defined as default under [Startup]. They can then be overwritten in the other sections (but probably shouldn't). I kept the existing code for backwards compatibility, so this should not cause any breaks from people's current configurations. But people should move to have these 2 vars under [Startup] -- see OpenSim.ini.example and Robust.HG.ini.example. And yes, both names now end with "URI" for consistency. 2013-02-21 17:26:19 -08:00
Robert Adams
76ee47c797 Add a virtual ToOSDMap() function to Monitoring.Stat for future
overloading by aggregation statistics and browser based stat viewers.
2013-02-21 15:53:04 -08:00
Robert Adams
303e21babe Add CounterStat which is a wrapper for a counter stat but, because
the 'count' event is internal, historical data can be built it.
Also includes EventHistogram class for building time based,
bucketed history of event occurances.
Make Stat implement IDisposable for subclasses that might need it.
2013-02-21 15:53:02 -08:00
Justin Clark-Casey (justincc)
9de670c550 minor: Change summary in "show appearance" console command to "incomplete" rather than "corrupt"
Corrupt is misleading - it implies textures were uploaded but are not j2k valid.
The actual situation is that at least one required baked texture is not present.
2013-02-21 23:08:50 +00:00
Robert Adams
efb5da0aa6 BulletSim: add OutOfBounds logic and some position sanity checking
to eliminate some of the "cannot find terrain height" warning messages.
2013-02-21 08:52:11 -08:00
Robert Adams
681653ca13 Add a method to IStatsCollector for returning stats as an OSDMap.
Extend implementors of IStatsCollector to return an OSDMap of stats.
Update UserStatsCollector and AssetStatsCollector to return both
string and OSDMap data (as well as console format).
2013-02-20 16:13:51 -08:00
Robert Adams
16bb40229b Add flush after write feature to LogWriter 2013-02-20 16:13:49 -08:00
Justin Clark-Casey (justincc)
99ebff94b5 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-20 22:11:04 +00:00
Justin Clark-Casey (justincc)
a671c06ee5 Correct mistake in parsing 'show object pos' and similar pos commands where the 'to' text would be treat as the end vector rather than discarded.
Before this, the commands still work but the help text is wrong - one has to leave out the 'to' in stating the vectors
2013-02-20 22:09:33 +00:00
Mic Bowman
903b40b47e Fix the JsonStore path set problem justincc found earlier today and
remove the deprecated TestPath functions.
2013-02-19 22:53:46 -08:00
Diva Canto
4779f7d7d5 Deleted all AssemblyFileVersion directives 2013-02-19 17:14:55 -08:00
Diva Canto
c5cbf862f9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-19 17:04:43 -08:00
Diva Canto
66bc526e4c Updated AssemblyInfo.cs for Groups and OfflineIM to 0.7.6.*. Removed AssemblyFileVersionNumber too. 2013-02-19 17:04:21 -08:00
Justin Clark-Casey (justincc)
05a0998f57 Give the user some feedback about the success or failure of console login property commands 2013-02-20 00:51:55 +00:00
Justin Clark-Casey (justincc)
db2b3627f2 Add information about MinLoginLevel to example ini files 2013-02-20 00:48:02 +00:00
Justin Clark-Casey (justincc)
8a6f2432fc minor: remove some mono compiler warnings in OpenSim.Region.ClientStack.Linden.Caps.dll 2013-02-20 00:01:20 +00:00
Justin Clark-Casey (justincc)
26dca1adc3 Convert JsonTestPath() use in json regression tests to JsonGetPathType() instead 2013-02-19 23:53:57 +00:00
Diva Canto
036d73c52a This should fix the build fail. Fingers crossed. 2013-02-19 07:55:20 -08:00
Diva Canto
fc89987656 Previous build failed. Checking in a dummy change to see if the fail persists. 2013-02-19 07:30:55 -08:00
Diva Canto
9380d01976 First commit of Diva Groups. The Data bits went to OpenSim.Data core, the rest to Addons.Groups.dll. 2013-02-19 07:26:40 -08:00
Diva Canto
46e182dbf5 Offline IM: moved the Data and MySQL bits to the corresponding places in core, so that it will be easier to plugin a SQLite backend, if anyone is interested in doing that. 2013-02-19 06:37:20 -08:00
Diva Canto
9e460f2af8 One more sql statement on migration #2 for offline im, to really clean up things. 2013-02-18 19:54:18 -08:00
Diva Canto
4e846d55a8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-18 16:06:01 -08:00
Diva Canto
5e709b087c Donating Diva OfflineIM as an addon in a single dll, OpenSim.Addons.OpenSim.dll 2013-02-18 15:44:00 -08:00
Justin Clark-Casey (justincc)
050ef1dc4e minor: Rename regression test method TestGetArrayLength() -> JsonTestGetArrayLength() to match others 2013-02-18 22:59:29 +00:00
Diva Canto
8b1b8a3921 I need these for OfflineIM and Groups. 2013-02-18 12:08:05 -08:00
Robert Adams
26421294f6 BulletSim: experimental lock axis code using constraints. Not enabled
by default. Like more debugging is needed.
2013-02-17 20:13:50 -08:00
Robert Adams
1d7276235a BulletSim: add calls for creating all the different Bullet constraint types.
Updated the DLLs and SOs and code for BulletXNA to create the types.
All the detailed control calls are not all in place yet.
2013-02-17 20:13:49 -08:00
Robert Adams
885b45b112 BulletSim: rework parameter setting for different types of values
(like vectors or quaternions).
2013-02-17 20:13:48 -08:00
teravus
6560d80fa8 * Fix walking to <NaN, NaN, NaN> via autopilot. 2013-02-16 22:54:37 -05:00
Robert Adams
e549c2922a BulletSim: fix physical object appearing to slowly float off when
they stop moving.
2013-02-16 19:28:38 -08:00
Melanie
3108d18ffb Fix shape parameters sent for meshes tosupport the full number of faces 2013-02-16 05:44:41 +00:00
Justin Clark-Casey (justincc)
7d7736dc73 Separate IAR tests into separate files for load/save/loadpath tests 2013-02-16 01:57:42 +00:00
Justin Clark-Casey (justincc)
d54d31807a Make it so that "load iar / ..." does not save the 'root' "My Inventory" folder.
Really "My Inventory" is just the name of the root, it isn't a folder in its own right.
This also makes it more intuitive for users to save whole inventory iars for backup/later restoration, as they don't need to remember to use /*
/* will still work and this is a special case just for the root
If you want to save only the contents of other folders (rather than the folder itself), you still need to specify something like a/b/*
Added a regression test for this case.
2013-02-16 00:50:52 +00:00
Justin Clark-Casey (justincc)
84de7e55e9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-16 00:27:16 +00:00
Justin Clark-Casey (justincc)
e9cc22fea4 Add regression test TestSaveNonRootFolderToIar 2013-02-16 00:26:21 +00:00
Dan Lake
e09467b30d Merge branch 'master' of git://opensimulator.org/git/opensim 2013-02-14 20:06:22 -08:00
Dan Lake
afeb5d4917 Use SortedDictionary in StatsManager instead of regular Dictionary so stats will interate and print in a defined order 2013-02-14 20:05:42 -08:00
Justin Clark-Casey (justincc)
8d5fe5c222 Enable one sub-test in TestJsonSetValue() which now works (using identifier with embedded .).
Need to look further at other still commented tests.
Still need to check coverage against some of Mic's scripts.
2013-02-15 01:00:49 +00:00
Justin Clark-Casey (justincc)
61f18d15e1 Rename JsonSetValueJson() -> JsonSetJson() and JsonGetValueJson() -> JsonGetJson()
This is because JsonGetJson() is getting json from anywhere in the structure, not just values.
Equally, JsonSetJson() is setting any type of json, not just json which represents a value.
Agreed with cmickeyb
2013-02-15 00:38:07 +00:00
Justin Clark-Casey (justincc)
0b2608d8f4 Comment out regression TestJsonTestPath and TestJsonTestPathJson as these will go away soon 2013-02-15 00:32:20 +00:00
Justin Clark-Casey (justincc)
30a60d661f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-15 00:28:00 +00:00
Justin Clark-Casey (justincc)
cc40517863 Add regression TestJsonList2Path() 2013-02-15 00:27:30 +00:00
teravus
71862f34b6 * Handle null check on configs in module startup so that the the code can be run on 'stop on handled and unhandled null reference exceptions' mode without pausing during startup a bunch of times. I don't think exceptions were really meant for replacing a single if statement... 2013-02-14 18:52:11 -05:00
teravus
c22276a169 * gracefully handle a Situation where a double close is called on the WebSocket handler 2013-02-14 18:43:53 -05:00
Justin Clark-Casey (justincc)
13d4f6f747 Add regression TestGetArrayLength() 2013-02-14 21:34:57 +00:00
Justin Clark-Casey (justincc)
6fe771f27e Add regression TestJsonGetPathType() 2013-02-14 21:31:34 +00:00
Justin Clark-Casey (justincc)
0ad07eb44d minor: remove some mono compiler warnings 2013-02-14 21:29:35 +00:00
Justin Clark-Casey (justincc)
edb99dcc19 Rename new JsonScript functions JsonPathType() -> JsonGetPathType() and JsonArrayLength() -> JsonGetArrayLength()
This is for consistentency with the verb:noun naming approach existing json script functions and other script functions.
Corresponding c# methods also changed since verb:noun is also the .net c# method naming guideline (as used by OpenSimulator) and for consistency with script functions.
As agreed with cmickeyb
2013-02-14 21:11:58 +00:00
Justin Clark-Casey (justincc)
a52dfd43b6 Make new JsonStore script constants separated with underscores, to be consistent with existing LSL/OSSL, etc script constants.
Agreed with cmickeyb
2013-02-14 21:03:07 +00:00
Robert Adams
5920abbf8d Add EventManager events triggered when a SOP is added or removed
from the physical scene. Invocations added in SceneObjectPart.
2013-02-14 09:48:11 -08:00
Melanie
ef662fc959 Add an event and some logic to allow customizing Simulator Features by avatar 2013-02-14 09:11:57 +00:00
Justin Clark-Casey (justincc)
69d0e168fb Fix a very unlikely-to-occur NullReferenceException race condition in llPushObject() where the code assumed that the physics actor it null-checked would still be null when it invoked a method on it 2013-02-14 00:20:23 +00:00
Mic Bowman
bcb172301d Adds a couple requested functions to the JsonStore script
interface. JsonPathType returns the type of node pointed to by the
path and deprecates the functionality of both JsonTestPath
functions. JsonArrayLength returns the length of an array node.
2013-02-13 07:14:04 -08:00
Mic Bowman
708c3f8b86 Make path parsing more robust in the JsonStore. 2013-02-12 23:21:49 -08:00
Melanie
d652de1d0e Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-02-13 01:53:29 +00:00
Melanie
c2bfdaa026 Make the sim features module register it's interface so it can be used 2013-02-13 01:52:25 +00:00
Justin Clark-Casey (justincc)
5557b523fd Add more sub-tests to TestJsonSetValue for paths containing []{} without {} delineation.
As expected, values are not set and the set call returns FALSE (0).
As a reminder, these tests are not currently running on jenkins continuous integration as the functionality is only available on .net 4 (mono 2.8 and later).
2013-02-13 01:38:33 +00:00
Justin Clark-Casey (justincc)
b1a165a39a Extend JsonTestSetValue() with tests for escaping brackets, periods and unbalanced braces from paths
The sub-tests that are commented out are currently those which fail unexpectedly based on my understanding of the path syntax
2013-02-13 01:25:30 +00:00
Justin Clark-Casey (justincc)
70e641c708 Add test for array as root element in TestJsonCreateStore() 2013-02-13 00:51:45 +00:00
Justin Clark-Casey (justincc)
3e9f3c0383 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-13 00:34:08 +00:00
Justin Clark-Casey (justincc)
4b797f2ead Extend TestJsonRemoveValue() with tests for non-penultimate nodes and arrays 2013-02-13 00:12:20 +00:00
Robert Adams
0194a3d890 BulletSim: fix density since the simulator/viewer track density in a
funny unit that is 100 times real density (default 1000).
Fix avatar drifting slowly when stationary flying.
Fix for physical prims getting corrected for being under terrain when it was
just its geometric center that was below terrain.
Add PreUpdatePropertyAction allowing plugable modifiction of phys
parameters returned from Bullet.
Fix an exception setting GravityMultiplier on initialization.
Update DLLs and SOs for good measure (no functional change).
2013-02-12 15:52:10 -08:00
Robert Adams
fb903ff490 BulletSim: More work on center-of-mass. Remove linksetinfo and rely on simulator to update info. 2013-02-12 15:52:08 -08:00
Justin Clark-Casey (justincc)
992ef9e971 Extend TestJsonCreateStore() with a one key input and an input with raw number values 2013-02-12 23:00:24 +00:00
Diva Canto
aaa80d11a8 Replaced Ionic.Zip.dll with a new one that fixes a bug in it. DotNetZip (from which Ionic.Zip.dll is derived) is now a fork in opensim-libs, forked from 1.9.1.8 and added that simple bug fix. 2013-02-12 14:47:26 -08:00
Justin Clark-Casey (justincc)
a82bd5678e Use an integer when specifying the XWorkItem wait rather than a TimeSpan to avoid a Windows casting issue in SmartThreadPool for large TimeSpans.
TimeSpan.Milliseconds is an int64.  However, STP casts this to an int (32-bit).
If TimeSpan.MaxValue is given then the casting results in an invalid value for the SDK WaitHandle.WaitAll() call.
This was causing the co-op script termination regression tests to fail on Windows but not Mono 2.10.8 (which is perhaps not strict in the negative values that it accepts).
Solution here is to use the int millisecondsTimeout STP call rather than the TimeSpan one.
This also allows us to more clearly specify Timeout.Infinite rather than TimeSpan.MaxValue
Thanks to Teravus for this spot.
2013-02-12 21:34:12 +00:00
Justin Clark-Casey (justincc)
058d477ce7 Re-enable subtest for single quoted token in TestJsonSetValueJson()
This is in response to the resolution of http://opensimulator.org/mantis/view.php?id=6540
2013-02-12 20:51:36 +00:00
Mic Bowman
4b8c22ecfa Adds the parameter for OSD serialization to encode default values. This
makes the JsonStore get/set operations symmetric.
2013-02-12 11:10:17 -08:00
Mic Bowman
d3b2cdc2b4 Fix handling of string values in JsonSetValueJson(). There are
some oddities with empty strings: the Json serializer treats them
as default values and does not return them in serialized hashes.
2013-02-11 19:55:10 -08:00
Justin Clark-Casey (justincc)
586def0bcc Add regression TestJsonSetValueJson()
The part to test setting of single leaf-node string tokens is currently commented out.
See http://opensimulator.org/mantis/view.php?id=6540
2013-02-12 01:27:38 +00:00
Justin Clark-Casey (justincc)
d55974bcb7 Add regression TestJsonGetValueJson() 2013-02-11 23:47:49 +00:00
Justin Clark-Casey (justincc)
6924bd21f4 Add regression TestJsonTestPathJson() 2013-02-11 23:10:07 +00:00
Justin Clark-Casey (justincc)
9d001e40e7 Add section to TestJsonGetValue() to test call on a sub-tree 2013-02-11 22:56:43 +00:00
Justin Clark-Casey (justincc)
8fcfd82241 Extend TestJsonTestPath() for non-terminating section of path (i.e. one that does not point to a value/leaf) 2013-02-11 22:44:25 +00:00
Justin Clark-Casey (justincc)
cbb8d82c7d Add section to TestJsonSetValue() to test attempted set of value where the penultimate section of path does not exist 2013-02-11 22:28:50 +00:00
Justin Clark-Casey (justincc)
c72c189864 Add test to try reading notecard into an invalid path in TestJsonReadNotecard() regression test 2013-02-11 22:16:07 +00:00
Melanie
6f3dcf58b8 Fix code to check for no spawn points. Possibly a merge artefact? 2013-02-10 20:00:39 +00:00
BlueWall
38b476d9d6 Adding contributor to credits: Welcome Allen Kerensky! 2013-02-10 14:17:02 -05:00
Allen Kerensky
7524bd5a7c Additional ThreadPool worker and IOCP thread startup logic
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2013-02-10 14:14:33 -05:00
BlueWall
adedd70c35 Fix teleport/telehub issue:
Fix bug that allowed only login access to regions with mis-configured telehubs. Administrators now have teleport access when there exists a mis-configured telehub in the region. Estate owners are now placed at region center in the absence of spawnpoints instead of being denied access. Grid Gods are unrestricted. All others are denied access to the region until spawnpoints are assigned to the telehub object.
2013-02-10 13:01:33 -05:00
Mic Bowman
0a297a0e52 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-08 22:43:56 -08:00
Mic Bowman
7bb82c8f2e Make JsonStore path parsing more robust. Should fix the
invalid path problem.
2013-02-08 22:43:15 -08:00
Oren Hurvitz
745ef40153 Fixed ReadSculptData(): the check whether there are enough bytes to read was incorrect 2013-02-09 02:04:26 +00:00
Oren Hurvitz
ae701eccd2 Fixed check for 0 results in GetUserAccounts() 2013-02-09 01:57:36 +00:00
Justin Clark-Casey (justincc)
6935bec0ab Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-09 01:11:41 +00:00
Justin Clark-Casey (justincc)
a8bc08ebe6 Change TestDestroyStore() and TestJsonRemoveValue() to reflect the fact that the return values have changed. 2013-02-09 01:10:53 +00:00
Oren Hurvitz
85b81ff7f2 Added physics parameters support to MSSQL and SQLite (not tested) 2013-02-09 01:03:58 +00:00
Robert Adams
4808b8ee38 BulletSim: add parameter to set global contact breaking threshold. Update DLLs and SOs for setting same. 2013-02-08 16:29:52 -08:00
Robert Adams
222040f1ec BulletSim: Change BSCharacter to use new base Density and Friction
variables rather than own local varaibles.
2013-02-08 16:29:45 -08:00
Robert Adams
1b55a9d81e BulletSim: fix avatar bobbing or jiggling while stationary flying.
Various comments and debugging message mods.
2013-02-08 16:29:40 -08:00
Robert Adams
d92eb80373 BulletSim: add initial instance of the ExtendedPhysics region module which adds new LSL commands for extended physics functions. Uses the modInvoke system. Disabled by default. 2013-02-08 16:29:35 -08:00
Robert Adams
1b203601f4 BulletSim: include the linkage to the layered prim implementation. Separate layers for physical (vs simulator) location displacement and linksets. 2013-02-08 16:29:29 -08:00
Robert Adams
2fd184e350 BulletSim: reclass BSPrim into layers so linkset and physical world displacement is implemented as overlay classes rather than if statements scattered about. 2013-02-08 16:29:24 -08:00
Mic Bowman
6d825d7ea2 Broaden the internal OSD type checks to parse JSON that has
non string values.
2013-02-08 15:46:42 -08:00
Mic Bowman
4d5c04837e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-08 15:09:13 -08:00
Mic Bowman
e93defd0ca Adds size limits to JsonStore. Adds a separate configuration
variable to enable binding to dynamic attributes.
2013-02-08 15:07:43 -08:00
Justin Clark-Casey (justincc)
a08e1b60ec Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-08 21:56:22 +00:00
Justin Clark-Casey (justincc)
b08977ea7d Don't allow exceptions to propogate from FlotsamAssetCache which may occur when deleting expired files or stamping the region status file.
Changes various error level log lines to warn since these are not fatal to the operation of OpenSimulator
2013-02-08 21:21:20 +00:00
Mic Bowman
2b5eba9c74 Fix the return values for JsonDestroyStore, JsonRemoveValue, and JsonSetValue.
Fix the link message status when reading a notecard.
2013-02-08 12:00:16 -08:00
Justin Clark-Casey (justincc)
c2bf91c5e3 If a component of a coalesced object fails to deserialization, do not add a null where the object should be.
This prevents a later load IAR failure.
This code is currently only used by IAR loading.
2013-02-08 02:45:30 +00:00
Justin Clark-Casey (justincc)
221a90e3a1 On IAR loading, if loading of a coaleseced item entirely fails, then continue with the IAR load rather than failing completely. 2013-02-08 02:34:13 +00:00
Justin Clark-Casey (justincc)
e836da5d20 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-08 02:01:17 +00:00
Justin Clark-Casey (justincc)
42f724f380 Refine TestJsonReadNotecard() and use / instead of . to separate paths.
An attack of the stupid meant that I was using / as a path separator.
Fixing this makes the tests behave better, though still with some questions.
Also, I imagine / shouldn't really put data in the root as that's not a valid identifier.
This commit also fix the / mistake in other tests those this does not affect their outcomes.
2013-02-08 01:59:27 +00:00
Robert Adams
913965256f BulletSim: Adapt BulletSim to the newer physical properties. Viewer
dialog setting of friction, restitution, ... working.
2013-02-07 17:13:28 -08:00
Robert Adams
b545e13184 BulletSim: fix exceptions caused by setting physical properties before the prim body is initialized. 2013-02-07 17:13:27 -08:00
Robert Adams
ebb63b55aa BulletSim: add user setting of friction, density and restitution. 2013-02-07 17:13:27 -08:00
Justin Clark-Casey (justincc)
528f23beab Extend TestJsonReadNotecard() for reads to non-root locations and fake stores.
Assertions for loading to non-root paths are currently commented out because this doesn't seem to be working.  Will be raising mantis to resolve.
2013-02-08 01:02:25 +00:00
Justin Clark-Casey (justincc)
9c9b48b29a Stop wrongly create a receiving store already populated with "Hello":"World" in TestJsonReadNotecard() 2013-02-08 00:38:30 +00:00
Justin Clark-Casey (justincc)
24bfdbfb80 Extend TestJsonWriteNotecard() regression test for cases with fake paths and fake stores.
Also separates out TestJsonWriteReadNotecard() into separate write and read tests
2013-02-08 00:36:20 +00:00
Justin Clark-Casey (justincc)
bef8961578 Extend TestJsonSetValue() regressio ntes tto test against a fake store 2013-02-08 00:04:05 +00:00
Justin Clark-Casey (justincc)
be982666fb Extend TestJsonTestPath() regression test with checks against fake values and fake stores 2013-02-08 00:01:06 +00:00
Justin Clark-Casey (justincc)
75f1e04315 Add tests for removing fake values/from fake store in TestJsonRemoveValue()
Again, need to check if returning true for removing a value that doesn't exist is most appropriate.
2013-02-07 23:58:19 +00:00
Justin Clark-Casey (justincc)
715d6f2da1 Add testing for getting non-existing values and values from a non-existing datastore to TestJsonGetValue() 2013-02-07 23:52:28 +00:00
Melanie
a2dad09172 Actually plumb the new values to physics. 2013-02-07 23:34:47 +00:00
Melanie
de53955610 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-02-07 23:23:42 +00:00
Justin Clark-Casey (justincc)
2e86978b60 Add TestJsonDestoreStoreNotExists()
This still returns true even if we ask to destroy a store that does not exist.
Need to check that this is more appropriate behaviour.
2013-02-07 23:30:03 +00:00
Melanie
22675e6b14 Add some more code from Avination. This changes physics actor stuff around
to work with the new params. Not actually plumbed just yet.
2013-02-07 23:22:00 +00:00
Justin Clark-Casey (justincc)
9e17dc3daa Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-07 23:09:47 +00:00
Justin Clark-Casey (justincc)
c135c3224f Fix a recent regression in e17392a where JsonSetValue() stopped working (probably other functions as well).
Fix is to call through to the no-arg constructor from the string constructor in JsonStore, which I suspect was just forgotten.
This was actually picked up by the TestJsonSetValue() regression test failing
But this isn't being run on jenkins due to the .net version issue.
This commit also puts the full stack trace in logged messages and makes these error level messages instead of info
2013-02-07 23:08:19 +00:00
Melanie
7bf33d333a Plumb the path from the client to the extra physics params and back 2013-02-07 22:25:28 +00:00
Melanie
338b02a8bc Send the new physics params to the viewer build dialog 2013-02-07 21:23:35 +00:00
Melanie
9089757ea2 Revert "Add plumbing for physics properties to get to the physics engine."
This reverts commit c658fa1c0d.
2013-02-07 21:05:58 +00:00
Robert Adams
c658fa1c0d Add plumbing for physics properties to get to the physics engine.
Addition of entries to PhysicsActor and setting code in SceneObjectPart.
2013-02-07 11:10:15 -08:00
Robert Adams
af73ea909c Change passed PhysicsParameter value from float to the more general string value 2013-02-07 11:10:14 -08:00
teravus
a5c83f7505 Websocket Echo module should not be on by default. 2013-02-07 12:22:03 -05:00
teravus
4bd1794b5a * missing example module.. Oops. 2013-02-07 12:19:54 -05:00
teravus
94a5232d3a * Adds Websocket support to baseHttpServer and IHttpServer.cs . This allows modules to set up a websocket server that websocket clients can connect to. An example module is in OptionalModules/Example/WebSocketEchoTest/WebSocketEchoModule.cs 2013-02-07 10:50:17 -05:00
teravus
4867a7cbbf This is the final commit that enables the Websocket handler 2013-02-07 10:27:18 -05:00
Melanie
6504e3d4ce Rename "Bounciness" to "Restitution" 2013-02-07 03:30:02 +00:00
Justin Clark-Casey (justincc)
2c5d24d394 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-07 02:19:53 +00:00
Justin Clark-Casey (justincc)
3657a08844 Add TestJsonWriteReadNotecard() regression test 2013-02-07 02:19:26 +00:00
Mic Bowman
274d376c82 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-06 17:32:57 -08:00
Mic Bowman
e17392acbb Enables script access to the per object dynamic attributes through the JsonStore
script functions. Adds JsonAttachObjectStore to associate a store identifier with
an object (scripts can only access the store in their host object, this could be
extended but isn't necessary for now).

Note this opens a method to the DAMap OSDMap. This will be removed later, but
greatly simplifies the code for now.

The JsonStore and these scripts are disabled by default.
2013-02-06 17:29:17 -08:00
Justin Clark-Casey (justincc)
4d1758985f Make json store tests operate on a single thread to ensure we don't run into any race related test failures in the future. 2013-02-07 00:54:09 +00:00
Dan Lake
7590ebc934 Merge branch 'master' of git://opensimulator.org/git/opensim 2013-02-06 16:45:47 -08:00
Dan Lake
df37738ce7 WebStats will now use actual logfile as specified in OpenSim.exe.config rather than hardcoded ./OpenSim.log. This allows for rotating logs and other file appender types 2013-02-06 16:44:59 -08:00
Justin Clark-Casey (justincc)
c8c5d74c22 minor: add method doc to DAMap.ValidateKey() 2013-02-07 00:22:39 +00:00
Robert Adams
5d523ea493 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-06 16:18:27 -08:00
Justin Clark-Casey (justincc)
e2c1e37b07 Add key length validation to DAMap.Add(KeyValuePair<string, OSDMap> kvp) to match Add(string key, OSDMap store) 2013-02-07 00:15:50 +00:00
Robert Adams
d2ece00e68 BulletSim: set removing zero width triangles in meshes to be enabled by default. This should fix the invisible barrier in sculptie doorways bug. 2013-02-06 15:59:59 -08:00
Robert Adams
0baa2590be BulletSim: check for completely degenerate meshes (ones with all
triangles having zero width) and output an error rather than
throwing and exception.
2013-02-06 15:52:28 -08:00
Robert Adams
67d92e4e16 BulletSim: remove an exception which occurs if a physics mesh
asset is not found.
2013-02-06 14:00:27 -08:00
Melanie
054a9928a0 Fix a bug I brought in by manually editing a diff file. Terrain is if cource not always at 20m. 2013-02-06 18:13:02 +00:00
Melanie
e5beb480ea Partial port of Avination's support for the new physics parameters.
Implements the parameters as properties, the serialization and
database storage (MySQL only). Implements llSetPrimitiveParams for
prim physics shape and the other 4 extra params. Only the prim shape type
"None" is currently functional. No support for the Viewer UI (yet), that
will be ported in due course. Lots more to port, this is a large-ish changeset.
2013-02-06 08:03:04 +00:00
Justin Clark-Casey (justincc)
07a7ec4d1b minor: Add explanation of MaptileStaticUUID setting in Regions.ini.example 2013-02-06 02:40:32 +00:00
Justin Clark-Casey (justincc)
145e38e5e9 Remove long unused Scene.DumpAssetsToFile boolean. 2013-02-06 02:21:17 +00:00
Justin Clark-Casey (justincc)
2ce8a050e4 Remove very long unused IScriptHost and NullScriptHost 2013-02-06 02:15:54 +00:00
Justin Clark-Casey (justincc)
9ebad38c34 Remove unused ScriptEngineLoader and ScriptEngineInterface in OpenSim.Region.Framework.dll
I believe this predates the generic system of registering interfaces and is very long unused.
2013-02-06 02:08:44 +00:00
Justin Clark-Casey (justincc)
dfe5826f9f Remove wrong code in ScriptUtils.GetAssetIdFromKeyOrItemName which would return the item ID instead of the asset ID if the identifier was a uuid that matched an inventory item name.
This would practically never happen.
This makes this overloaded version of the function consistent with the other version.
It looks like this accidentally came over in commit c5af16a from Tue Oct 16 12:40:21 2012
However, there's arguably a case for looking for an item name that matches a UUID before assuming that the identifier is already an asset ID.
2013-02-06 01:49:32 +00:00
Justin Clark-Casey (justincc)
eddfed3812 Allow JsonReadNotecard() to accept the name of the notecard as well as the asset ID.
Agreed in discussion with cmickeyb.
This is to make this consistent with similar existing LSL/OSSL functions such as llTriggerSound() and osNpcLoadAppearance() that allow an item name or an asset id.
2013-02-06 01:37:22 +00:00
Justin Clark-Casey (justincc)
0d4df99d04 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-06 01:35:25 +00:00
Robert Adams
3646361279 BulletSim: make removing zero width triangles from meshes optional
and, for the moment, default to 'off'.
2013-02-05 17:19:55 -08:00
Justin Clark-Casey (justincc)
5c94346bd7 refactor: Move functions that lookup asset ids from task inventory or pass them through to ScriptUtils class in OpenSim.Region.Framework.dll
Renames functions to better reflect what they do.
This is so that code registering with modInvoke() can reuse this code to provide functions that behave in a consistent manner with existing LSL/OSSL functions.
2013-02-06 01:17:19 +00:00
Robert Adams
dce9e323f4 BulletSim: remove degenerate triangles from meshes. This fixes the
invisible barriers in sculptie doorways (Mantis 6529).
Bump up level-of-detail for physical meshes to 32 (the max). This
fixes the invisible barriers that showed up in prim cut arches.
NOTE: the default LOD values are removed from OpenSimDefaults.ini.
   If you don't change your OpenSimDefaults.ini, you will continue
   to see the arch problem.
2013-02-05 16:56:33 -08:00
Robert Adams
13233da66c BulletSim: add debugging looking for doorway sculpty problems 2013-02-05 16:56:28 -08:00
Robert Adams
ad438ee59f BulletSim: rework some parameter setting implementation moving functionality that was in BSScene to BSParam. Remove unused parameters that were passed to the unmanaged code. Update DLLs and SOs for the new param block. 2013-02-05 16:56:23 -08:00
Robert Adams
2b6d226911 BulletSim: correct angular vertical attraction to properly correct an upside down vehicle. 2013-02-05 16:56:17 -08:00
Diva Canto
4cdee3dd3c Changed protection of CreateDefaultAppearanceEntries to protected, so extensions of the UserAccountService can reuse this. 2013-02-05 16:28:25 -08:00
teravus
2104e4d4d4 * the root prim was being given an OffsetPosition in addition to setting the position when creating the root prim. The offset position caused the positioning code to re-move the root prim when you selected it and released it. 2013-02-05 18:46:02 -05:00
teravus
1dc09d8e8f We're not really done here.. but we're getting there. Socket Read is working.. Still have to do Header.ToBytes and compose a websocket frame with a payload. 2013-02-05 18:02:25 -05:00
Melanie
6bce4bc112 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-02-05 20:09:45 +00:00
Melanie
2163bebeb4 Try to fix uploaded mesh rotations - code from Avination code base. 2013-02-05 20:09:02 +00:00
Justin Clark-Casey (justincc)
562067eb16 Fix bug where viewers would not see the "Module command functions not enabled" error if these were disabled and a viewer attempted to call one.
This was not working because the shouter was wrongly signalled as an agent rather than a prim
2013-02-05 02:09:21 +00:00
Justin Clark-Casey (justincc)
1fc9f282fa Merge branch 'dynamic-attributes2' 2013-02-05 00:35:15 +00:00
Justin Clark-Casey (justincc)
1f1da23097 Bump version and assembly version numbers from 0.7.5 to 0.7.6
This is mostly Bluewall's work but I am also bumping the general version number
OpenSimulator 0.7.5 remains in the release candidate stage.
I'm doing this because master is significantly adding things that will not be in 0.7.5
This update should not cause issues with existing external binary DLLs because our DLLs do not have strong names
and so the exact version match requirement is not in force.
2013-02-05 00:23:17 +00:00
Justin Clark-Casey (justincc)
503c906732 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-04 07:09:36 +00:00
Justin Clark-Casey (justincc)
80d9b336ff Remove [XMLRPC] section I added by accident to the top of OpenSimDefaults.ini in previous commit 95883282 2013-02-04 07:08:48 +00:00
teravus
ee4f8ac193 Merge branch 'master' into JSONTCPClient 2013-02-03 08:18:53 -05:00
teravus
8fd99ecab1 Merge branch 'master' of ssh://opensim/var/git/opensim 2013-02-03 08:14:47 -05:00
teravus
6b0310b829 Adds the ability to load more then one IClientNetworkServer thereby allowing additional client network servers at the same time. Use comma separated values in clientstack_plugin in your config. Additional plugins lying around shouldn't be picked up because the loader only loads configured dll assemblies and breaks at the first IClientNetworkServer found in the assembly. (the only new functionality is the ability to specify more in config). Note: The existing functionality also passes in a nini config.. and has a boolean to determine if the client network server should be initialized for a specific scene. 2013-02-03 08:13:52 -05:00
teravus
29d521e273 Changing OpenSimDefaults back to default 2013-02-03 07:56:31 -05:00
teravus
d18fbb98b7 Adds the ability to load more then one IClientNetworkServer thereby allowing additional client stacks. Use comma separated values in clientstack_plugin in your config. 2013-02-03 07:44:45 -05:00
teravus
27a0b3ecbd Commit 1 in of this branch feature. This is one of many... 2013-02-03 06:49:17 -05:00
BlueWall
219a25c985 Merge /home/opensim/src/opensim 2013-02-01 23:14:19 -05:00
BlueWall
0ab68f6c31 Revert "Update assembly version numbers"
This reverts commit 141ad829f4.
2013-02-01 23:13:33 -05:00
BlueWall
840f72f8a8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-01 22:07:08 -05:00
Justin Clark-Casey (justincc)
0d0bfa4dcd minor: change comment about assuming script references are textures in UuidGatherer since this is no longer the behaviour. 2013-02-02 03:02:04 +00:00
BlueWall
57cf89f4a9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-02-01 21:58:32 -05:00
BlueWall
141ad829f4 Update assembly version numbers 2013-02-01 21:57:49 -05:00
Justin Clark-Casey (justincc)
9822bb664b Log missing assets on "fcache assets" found. This ignores references found by scanning LSL/notecard files since these are the source of false positives.
This also changes UuidGatherer to reutn an AssetType.Unknown for embedded script/lsl references instead of Texture, since these are often not textures.
This is added to help people in determining when they have missing assets such as textures, etc.
In this case, one wants to run "fcache clear" first.
2013-02-02 02:57:38 +00:00
Justin Clark-Casey (justincc)
2ff301ca11 Correct spelling mistake in new RayFilterFlags, LSLPhanton -> LSLPhantom 2013-02-02 01:34:49 +00:00
Justin Clark-Casey (justincc)
9588328242 Stop exceptions being thrown if GenerateMapTiles = false but no static map tile has been set. Do more informative warn instead. 2013-02-02 00:59:26 +00:00
teravus
d8d4e7f236 Sit and Spin reduction. If sitting, slam avatar angular velocity to zero. 2013-02-01 15:42:24 -05:00
Robert Adams
5bb85a14d4 BulletSim: fix problem where editting a physical linkset caused the
child prim physical positions to get out of sync with the view.
More reliably compute the offset of children in a physical linkset.
2013-02-01 11:52:27 -08:00
Robert Adams
75a05c16c5 BulletSim: fix crash caused when linksets were rebuilt. A problem added
when individual child pos/rot changes were implementated a week or so ago.
Remove some passing of inTaintTime flag when it was never false.
2013-01-31 15:56:10 -08:00
Robert Adams
ed71c939fc BulletSim: make sure vehicle physical properties are set when going
physical by delaying setting until pre-step time. Change vehicle.Refresh()
to schedule the pre-step setting.
Comments and updating of TODO list.
2013-01-31 15:56:02 -08:00
Robert Adams
371449db2f BulletSim: clean up TargetVelocity implementation by using the default defn in the PhysicsActor base class. 2013-01-31 15:55:53 -08:00
Mic Bowman
f984922dfd Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-31 14:54:19 -08:00
Mic Bowman
1e0420431f Move the JsonStore regular expressions to static variables to avoid
recompiling on every operation. Added JsonList2Path script function
to simplify array iteration.
2013-01-31 14:53:16 -08:00
Melanie
6a4c8824ea Whitespace fix and removing unneccessary parentheses 2013-01-31 20:46:41 +00:00
Dan Lake
b659ccfc80 Merge branch 'master' of git://opensimulator.org/git/opensim 2013-01-31 11:15:22 -08:00
Dan Lake
17440d8a29 Added option for UUID as command parameters. This lets the command handle the UUID parsing and type checking before the command is executed. 2013-01-31 11:14:43 -08:00
BlueWall
a8fa8af9fc Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-30 23:44:06 -05:00
BlueWall
ce4faf497f Add config option to Regions.ini for new maptile feature 2013-01-30 23:41:32 -05:00
Jak Daniels
fac72d540b Allow use of MaptileStaticUUID in Regions.ini to override the global setting in OpenSim.ini for each region.
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2013-01-30 23:37:02 -05:00
Mic Bowman
a0ef3df194 Add JsonTestStore to determine if a JsonStore is associated with
a particular UUID.
2013-01-30 14:45:03 -08:00
teravus
52ea6eadae * This adds a bit more to the previous flying roll effect by adding additional roll when pressing page down, and reducing your roll when pressing page up to make it feel more responsive and give the user more visual feedback. 2013-01-30 07:34:48 -05:00
teravus
7c4e0ff03c * Adds a satisfying angular roll when an avatar is flying and turning. (General, not physics). Makes flying not feel as stiff. 2013-01-30 06:22:05 -05:00
Justin Clark-Casey (justincc)
d42c7afe3f Add JsonDestroyStore() basic regression test 2013-01-30 05:56:30 +00:00
Justin Clark-Casey (justincc)
5a22efe69c refactor: Make invocations of json store functions from the regression test simpler 2013-01-30 05:49:28 +00:00
Justin Clark-Casey (justincc)
addf9ada49 Add regression test for script func JsonRemoveValue() 2013-01-30 05:39:34 +00:00
Justin Clark-Casey (justincc)
5ac84a3793 Fix issue where lsl -> c# generation in co-operative termination mode did not correctly handle single statement versions of for, while and do-while loops.
Add regression tests to validate the fix.
This problem will not affect the default abort termination mode.
2013-01-30 03:52:22 +00:00
Robert Adams
a61ecee227 BulletSim: fix physics repositioning when under ground to only happen
for physical objects. Non-physical objects can go anywhere they want.
2013-01-29 17:04:28 -08:00
Justin Clark-Casey (justincc)
39700445f2 minor: change name of json script tests to JsonStoreScriptModuleTests instead of copy/pasted LSL_ApiInventoryTests 2013-01-29 04:36:41 +00:00
Justin Clark-Casey (justincc)
ccdf86c737 minor: remove EnableLogging() left over in CoopTerminationTests 2013-01-29 04:35:05 +00:00
Justin Clark-Casey (justincc)
e0f4e91d22 Try ignoring json tests if they can't be run due to being on <=.net 3.5 2013-01-29 04:26:47 +00:00
Justin Clark-Casey (justincc)
fd34a75cde minor: Tidy up disabled logging on AssetTransactionModule for future use. Make it clear that transaction parameter to HandleUDPUploadRequest is an ID. 2013-01-29 04:03:33 +00:00
Justin Clark-Casey (justincc)
77cd74ded6 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-29 03:59:38 +00:00
Justin Clark-Casey (justincc)
ca26ff9436 minor: remove some mono compile warnings in XEngine.cs 2013-01-29 03:58:11 +00:00
Robert Adams
47f09ed4c1 BulletSim: enable angular vertical attraction.
Increase terrain collision margin to help vehicles from tunneling
into same.
2013-01-28 17:21:13 -08:00
Robert Adams
531d0429d1 BulletSim: first unit test: vehicle angular attraction 2013-01-28 17:08:34 -08:00
Robert Adams
e9aff0a91d BulletSim: do not zero an avatar's standing velocity if it is standing
on a moving object.
Rearrange pre/post action subscription code to put more in locks.
Add meshmerizer params to BulletSimTestUtil scene creation (and fix line endings).
Rebuilt version of DLLs and SOs with cleaned up code and no profiling for sure.
2013-01-28 15:11:50 -08:00
Robert Adams
e4c6a19940 BulletSim: rename 'uint' to 'UInt32' to make clear the type that is passed to unmanaged code. 2013-01-28 15:11:20 -08:00
Robert Adams
f6380a3ad3 BulletSim: fix the trimming of colliders so only the top 25 are returned. 2013-01-28 09:02:01 -08:00
Robert Adams
2cd56014a7 BulletSim: update Bullet with profiling disabled. This seems to fix the memory leak problem. 2013-01-28 06:21:51 -08:00
Robert Adams
aea90c198f BulletSim: reorder dependencies for tests and specify path for meshing dll since it is placed in the Physics directory 2013-01-27 13:37:58 -08:00
Robert Adams
2c5f0677e5 BulletSim: fix reference path for BulletSim tests in prebuild.xml 2013-01-27 13:09:18 -08:00
Robert Adams
b546af9ac2 BulletSim: simplify the initialization of some of the parameters.
Disable vertical attraction for vehicles by default (for the moment).
Fix bug where vehicle would go crazy when velocity got above a
   certain speed.
2013-01-27 12:50:07 -08:00
Robert Adams
26d4596080 BulletSim: reinstate the supression of rotational velocity for vehicles 2013-01-27 12:50:07 -08:00
Robert Adams
a345a2feb7 BulletSim: add framework for BulletSim unit tests. No tests yet. 2013-01-27 12:50:06 -08:00
Robert Adams
05adf4b30f BulletSim: disable center-of-mass computation because it does not work yet 2013-01-27 12:50:06 -08:00
Robert Adams
80f0a978db BulletSim: fix compile error from last commit 2013-01-27 12:50:06 -08:00
Robert Adams
36f401d850 BulletSim: parameterize the value for gravity reduction for ground vehicles on the ground. Set defaults for vehicle factors to one. Debug logging changes. 2013-01-27 12:50:05 -08:00
Robert Adams
ddef8f16e5 BulletSim: first attempt at reporting top colliders 2013-01-27 12:50:05 -08:00
Robert Adams
dd08e1fba6 BulletSim: parameterize several vehicle debugging values: physical linear and angular force factors now default to less than 1 (0.2) vehicle friction and restitution now default to low values 2013-01-27 12:50:05 -08:00
Robert Adams
c44a8e9f92 BulletSim: finish the post step event for physical object actions. Modify vehicle to use post step event for logging. 2013-01-27 12:50:04 -08:00
Melanie
776cc33541 Prevent items being destroyed by rename operations. Renaming of a wearable also
sends an asset transaciton but it is empty. So we can't ignore name data
when a transaction is present and can't treat every transaction as valid.

Conflicts:

	OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
2013-01-27 01:07:37 +00:00
Justin Clark-Casey (justincc)
b0cff35d96 Fix issue where the "set terrain texture" console command did not tell the viewers that textures had updated (hence they did not display the changes).
Addresses http://opensimulator.org/mantis/view.php?id=6513
2013-01-26 04:27:01 +00:00
Justin Clark-Casey (justincc)
53833babf9 Add OnScriptMovingStartEvent and OnScriptMovingEndEvent to EventManager so that these can be triggered by future code (not yet implemented).
Also hooks up moving_start and moving_end script events, eliminating itemID on XEngine EventManager methods since this is completely unused.
An adaptation of the patch in http://opensimulator.org/mantis/view.php?id=6515
Thanks Garmin Kawaguichi and Signpost Marv.
2013-01-26 03:57:51 +00:00
Justin Clark-Casey (justincc)
8ea112a5b2 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-26 02:58:10 +00:00
Talun
ceabb1b49a Mantis 6343: Turn a prim to flexy to OFF don't work llSetPrimParams
Correction so that scripts can turn Flexi off as well as on.
2013-01-26 02:55:24 +00:00
teravus
5128ae7b86 * This adds llVolumeDetect functionality to the C# implementation of BulletSim. 2013-01-25 20:15:37 -05:00
Justin Clark-Casey (justincc)
c3fb114461 minor: Fix full scene part console report to show proper Light* names rather than all wrongly FlexiDrag 2013-01-26 00:31:50 +00:00
Justin Clark-Casey (justincc)
d6d6618f62 minor: Call down to base OpenSimTestCase.SetUp() in NPCModuleTests to disable any enabled logging from previous tests 2013-01-26 00:28:45 +00:00
Justin Clark-Casey (justincc)
7a139f8e53 Remove the accidental PrimShapes column that I added back to the SQLite region store 2013-01-25 04:35:06 +00:00
Justin Clark-Casey (justincc)
7789415148 Fix tests by adding DynAttrs add column commands to RegionStore.migrations (these were originally in 021_RegionStore.sql which I might have forgotton to add 2 years ago). 2013-01-25 04:22:32 +00:00
Oren Hurvitz
6daf559fb6 Added unit tests for Dynamic Attributes 2013-01-25 04:03:30 +00:00
Oren Hurvitz
23f0610f0c Disabled DAExampleModule 2013-01-25 04:03:28 +00:00
Oren Hurvitz
af6a7cf95d Added DynAttrs to the serialized XML format of prims. When copying prims, use deep copy for DynAttrs. 2013-01-25 04:03:26 +00:00
Oren Hurvitz
86802bcf93 Store NULL in the 'DynAttrs' column if the prim doesn't have any dynamic attributes 2013-01-25 04:03:24 +00:00
Oren Hurvitz
fdec05a15e Stopped storing dynamic attributes in the PrimShape 2013-01-25 04:03:20 +00:00
Oren Hurvitz
8b4441d940 Changed DAMap to be the container of "data stores", which are OSDMaps. Store names must have at least 4 characters. 2013-01-25 04:03:18 +00:00
Oren Hurvitz
918b062866 Added missing DynAttrs references in MySQL 2013-01-25 04:03:15 +00:00
Justin Clark-Casey (justincc)
1650846df3 Lock DAMap rather than encapsulated OSDMap
This allows external lockers to preserve atomicity of dynamic attribute changes
2013-01-25 04:03:13 +00:00
Justin Clark-Casey (justincc)
a6d9c26365 Encapsulate an OSDMap in DAMap (was DynAttrsOSDMap) rather than inheriting from it
This is the easier way to give us control over locking, rather than asking that OSDMap IDictionary methods be virtual
2013-01-25 04:03:11 +00:00
Justin Clark-Casey (justincc)
a3e1e6dd61 Implement dynamic attribute persistence on mysql and mssql
mssql is untested
2013-01-25 04:03:09 +00:00
Justin Clark-Casey (justincc)
d3095e2649 Add DAExampleModule to demonstrate dynamic attributes
This module demonstrates that we can add an arbitrary persisted value to SOP without any changes to core code.
Every time the object is moved, the move record is updated and the users in the scene alerted
The number of moves is persisted over server restarts in sqlite
2013-01-25 04:03:07 +00:00
Justin Clark-Casey (justincc)
1bd0b06ec1 Implement Dynamic Attributes for SOP and PBS. Implement storage in SQLite 2013-01-25 04:03:04 +00:00
Justin Clark-Casey (justincc)
d977bb77cb Disable json tests for now - I see this is failing on jenkins because mono 2.4.3 doesn't have Funcs >5 params, though mono 2.6 onwards does.
Standardize logging in JsonStoreScriptModule and some minor code formatting.
2013-01-25 03:19:56 +00:00
Justin Clark-Casey (justincc)
614d4eda3e See if getting the registering JsonReadNotecard with MethodInfo works around an apparent issue with registering methods with more than 5 parameters on mono 2.4.3 2013-01-25 03:02:08 +00:00
Justin Clark-Casey (justincc)
4f52acaa83 Increase logging by enabling during test setup rather than during individual tests of for JsonStore 2013-01-25 02:32:38 +00:00
Justin Clark-Casey (justincc)
8c68451856 Enable logging in new json store tests to find out why they fail on jenkins but not locally. 2013-01-25 02:22:24 +00:00
Justin Clark-Casey (justincc)
844e60da0f Add JsonTestPath() regression test 2013-01-25 02:12:28 +00:00
Justin Clark-Casey (justincc)
f32361d595 Add regression test for JsonSetValue() 2013-01-25 02:08:33 +00:00
Justin Clark-Casey (justincc)
b914fb98c4 minor: remove mono compiler warning in SceneCommandsModule 2013-01-25 01:56:41 +00:00
Justin Clark-Casey (justincc)
ba369c5cfe Add basic JsonGetValue() regression test. 2013-01-25 01:55:27 +00:00
Justin Clark-Casey (justincc)
f557d7e828 Add basic JsonCreateStore() regression test 2013-01-25 01:48:31 +00:00
Robert Adams
6a5d088197 BulletSim: reduce the force of gravity on ground vehicles when they
are on the ground. Makes them a little more stable.
2013-01-24 16:26:04 -08:00
Robert Adams
a2a32fc844 BulletSim: reduce the zeroing threshold for rotational velocity.
Sometimes settling of a vehicle from gravity introduces small
velocities that need to be kept.
2013-01-24 14:36:00 -08:00
Robert Adams
591faac3ac BulletSim: disable CCD (continuious collision detection) and
contact processing threshold since the first didn't solve tunneling
problems but used resources and the latter caused instabilities.
2013-01-24 14:35:42 -08:00
Robert Adams
2cf29c87bc BulletSim: zero motion on an object that we pop up because it is
below terrain. If the position is being corrected because it is out
of bounds, all other movement rules are out the window.
2013-01-24 14:35:23 -08:00
Robert Adams
3ecfddd791 BulletSim: remove exception that can happen when setting physics parameters from the console. 2013-01-24 14:35:05 -08:00
Talun
71f7bfc2ff Mantis 6508 llHTTPResponse body is incorrectly interpreted by IE
This patch html escapes responses going to IE so that they cannot be
interpreted as HTML if the response type is "text/plain". This has no
effect if the reponse type has been set to "text/html" by
osSetContentType

Signed-off-by: nebadon <michael@osgrid.org>
2013-01-24 14:48:20 -07:00
Robert Adams
427ab219b8 Add JSONification of WebStats module. Adds a '?json' query parameter
to the fetch URL to return the data in JSON format. Also adds a simple
'sim.html' that uses JavaScript to display the JSON data. Not pretty
but an example.
2013-01-24 10:44:57 -08:00
teravus
d5b950633d * Added in the manifold point dept on collision desc. In BulletSim engine BulletXNA. 2013-01-24 07:36:24 -05:00
teravus
ba9d6b7337 * Repairs the Object updates, Collision updates, and Child Prim methods making the bulletXNA engine work again.
* The only thing that had an issue was when creating a new RigidBody, BulletXNA didn't know the type SimMotionState and the upcast type is unknown in the constructor.   Therefore, I had to update the IMotionState with a new method 'SetBody'.    All of the duplicated type information has been removed and BulletXNA is not relying on any non-standard types external to the library.
2013-01-24 07:11:32 -05:00
teravus
878df52515 * This makes the non-physics llCastRay 'better'. It's not 'correctly working', and if you look deep enough, you see that the results are not really stable depending on the direction of the ray. 2013-01-23 21:58:51 -05:00
Justin Clark-Casey (justincc)
f7feed4d44 Remove unnecessary System.Linq reference from Compiler.cs
Hopefully will fix windows build via compile.bat
2013-01-24 01:11:04 +00:00
Justin Clark-Casey (justincc)
b775761104 Disable the not very useful infinite recursion co-op termination tests for now as they appear to cause failures with testing in jenkins.
These tests are not very useful anyway as they never actually get a chance to try termination before the script runs out of stack
2013-01-24 00:31:42 +00:00
Justin Clark-Casey (justincc)
957cea59a0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-24 00:24:13 +00:00
Justin Clark-Casey (justincc)
1a610f30d8 Fix mono 2.4.3 build break by using CreateInstanceAndUnwrap 9 method call deprecated in later .net versions 2013-01-24 00:23:12 +00:00
Robert Adams
5b334079e0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-23 16:23:11 -08:00
Robert Adams
1c3d84fe03 BulletSim: pass up and report the real collision penetration. 2013-01-23 16:20:44 -08:00
Justin Clark-Casey (justincc)
55c6753b13 Merge branch 'master' into cooptermination 2013-01-24 00:03:44 +00:00
Justin Clark-Casey (justincc)
a1f78ceb37 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-24 00:02:43 +00:00
Justin Clark-Casey (justincc)
c51cae8fe8 Add information on ScriptStopStrategy to [XEngine] in OpenSimDefaults.ini and OpenSim.ini.example. Default remains abort.
This setting controls whether scripts are stopped by aborting their threads externally (abort) or by co-operative checks from the compiled script (co-op)
co-op should be more stable but this option is experimental.
If moving from co-op to abort, existing script DLLs will need to be recompiled.
This currently can only be done manually, either by setting DeleteScriptsOnStartup = true for one run
or by deleting the script DLL* files in bin/ScriptEngines/<region-id>/
One can move from co-op back to abort without recompilation, but reverting back to co-op again will need script recompile
2013-01-23 23:57:09 +00:00
Justin Clark-Casey (justincc)
8a22ac3f94 Pass narrower WaitHandle rather than EventWaitHandle as co-op termination wait handle to script APIs.
APIs don't need to reference any methods on EventWaitHandle
2013-01-23 23:38:08 +00:00
Justin Clark-Casey (justincc)
72dd3633ee Improve logging by making it clearer which script is failing if an assembly fails to load.
Moves the noise co-op start/stop debug log messages to only display if xengine debug level >= 1
Logs which stop strategy is being used (abort or co-op)
Adjusts some other logging to remove not very useful stuff
2013-01-23 23:34:15 +00:00
Robert Adams
a7b810ddee BulletSim: remove setting of vehicle InterpolationRotationalVelocity.
This doesn't seem to help the vehicle stability.
Rename vehicle internal variables adding a "V" or "W" so it is clear
when coordinates are vehicle or world relative.
2013-01-23 14:25:42 -08:00
Robert Adams
13182904da BulletSim: small change to center-of-mass computation left out last commit 2013-01-23 14:25:30 -08:00
Robert Adams
a5e9c665f0 BulletSim: center-of-gravity linkset changes. Not working yet.
Conflicts:

	OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
2013-01-23 14:25:18 -08:00
Robert Adams
c1371ab786 BulletSim: working on COM 2013-01-23 14:25:06 -08:00
Robert Adams
775fd6f8cc BulletSim: fix build break introduced by previous commit 2013-01-23 14:24:54 -08:00
Robert Adams
a0d460e6bf BulletSim: remove the unused RestoreBodyDependencies used by linksets
and vehicles and clean up code by removing their kludgyness.
2013-01-23 14:24:42 -08:00
Melanie
c1795ed399 Add the Avination physics raycast glue so Core Physics can implement raycast 2013-01-23 21:03:24 +00:00
Melanie
6a2b673fca Remove the return value from llGiveMoney and add llTransferLindenDollars. Also
make llGiveMoney async so the script thread is not held up waiting for comms
to an external server.
2013-01-23 19:45:36 +00:00
BlueWall
2841ed05cf Merge branch 'master' of /home/opensim/var/repo/opensim 2013-01-23 08:16:18 -05:00
BlueWall
1776986dc3 Add additional return status
Adding additional return status for JsonRpcMethod. Now returns true/false
2013-01-23 08:14:21 -05:00
Justin Clark-Casey (justincc)
cf168194e5 If ScriptStopStrategy hasn't been set to co-op in [XEngine] config, then continue to generate C# that is functionality identical to historical generation
This is to eliminate disruption until co-op termination has been well-tested.
In non co-op mode, XEngine will continue to load DLLs of the existing Script class and the new XEngineScript class.
Moving to co-op mode still requires existing script DLL deletion to force recompilation, either manually or by setting DeleteScriptsOnStartup = true for one run.
This change also means that scripts which fail to initialize do not still show up as running scripts.
2013-01-23 02:36:43 +00:00
Robert Adams
80b1e32bfa BulletSim: Tweeks to vehicle motion.
Pass through old angular velocity making for smoother transitions.
Remove some old kludges for angular motion (damping and rotvel suppression).
2013-01-21 23:43:24 -08:00
Justin Clark-Casey (justincc)
9a4914e58c Add co-op termination regression test for infinite recursive manual call on event function.
Such code would normally terminate quickly with a stack overflow exception anyway.
2013-01-22 02:32:40 +00:00
Justin Clark-Casey (justincc)
0727784186 Set script delay factor to 0 in co-op termination tests
This is to ensure loops aren't actually terminating from a wait on an LSL function.
This was not the case with any of the existing tests.
2013-01-22 02:26:04 +00:00
Justin Clark-Casey (justincc)
679dc811dd Add regression test for co-op termination on infinite user function call regression.
Such a script would probably run out of stack pretty quickly anyway.
2013-01-22 02:22:58 +00:00
Justin Clark-Casey (justincc)
b93e8020e2 Add regression test for co-op stop of an infinite jump loop
Also fixes bug in do-while test
Improves detection of failure due to invalid script in test
Sets up xengine anew for each test rather than once for the while testsuite to improve isolation between tests.
Stop listening for chat after the first 'script is running' chat is received to reduce test run time.
2013-01-22 02:16:10 +00:00
Justin Clark-Casey (justincc)
cf0b5e4f27 Add do-while co-op termination test
Minor changes to scripts in other tests.
2013-01-22 01:53:10 +00:00
Justin Clark-Casey (justincc)
fbdfe43d75 Add single and comound while loop co-op termination test 2013-01-22 01:40:18 +00:00
Justin Clark-Casey (justincc)
c6ba27d096 Fix bug in generating termination checks in compound statement for loop.
Add regression test for this case.
2013-01-22 01:23:10 +00:00
Justin Clark-Casey (justincc)
a558f9797d factor out common code in existing co-op termination regression tests 2013-01-22 01:13:45 +00:00
Justin Clark-Casey (justincc)
419f8e0f76 Increase WaitForEventCompletionOnScriptStop to 120 secs to show that the co-op setting is active in its regression tests. 2013-01-22 01:08:24 +00:00
Justin Clark-Casey (justincc)
1730de14a4 minor: comment out Console.WriteLine debugging message in XEngine 2013-01-22 01:00:53 +00:00
Justin Clark-Casey (justincc)
cd446c32d6 Add regression test TestStopOnLongForLoop() 2013-01-22 00:59:46 +00:00
Justin Clark-Casey (justincc)
49d674c74d refactor: rename XEngineTest to more descriptive XEngineBasicTests 2013-01-22 00:35:56 +00:00
Robert Adams
471c477863 BulletSim: allow changing position and rotation of a child of a linkset
without rebuilding the whole compound shape. Should make vehicles move
smoother.
2013-01-21 15:58:22 -08:00
Robert Adams
95c53ecae7 Have SOP and LSL_Api call the proper GetCenterOfMass and GetGeometricCenter
routines on the physics engine. Won't make a difference for any
existing scripts since ODE always returned Vector3.Zero.
2013-01-21 15:55:54 -08:00
Robert Adams
3f6698a595 BulletSim: remove unused MaxTaintsToProcessPerStep parameter 2013-01-21 09:19:09 -08:00
Robert Adams
52b341e2e2 BulletSim: More aggressive as setting character velocity to zero
when should be standing.
Modify angular force routines to be the same pattern as linear force routines.
BulletSim vehicle turning is scaled like SL and is DIFFERENT THAN ODE!!
Fix some bugs in BSMotor dealing with the motor going to zero.
Add a bunch of parameters:  MaxLinearVelocity, MaxAngularVelocity,
MaxAddForceMagnitude, VehicleMaxLinearVelocity, VehicleMaxAngularVelocity,
and most of the values are defaulted to values that are larger
than in SL.
Use the new parameters in BSPrim, BSCharacter and BSDynamic.
2013-01-20 23:09:54 -08:00
Robert Adams
3c4868f613 BulletSim: fix problem of avatar sliding very slowly occasionally after stopping walking. Consolidate movement tests into the one prestep motion action 2013-01-20 23:09:54 -08:00
Robert Adams
2cb1d5240e BulletSim: small fix making sure terrain height is calculated
properly if the vehicle moves during vehicle actions.
2013-01-20 23:09:54 -08:00
Robert Adams
3b0df52d10 BulletSim: modify motors to return correction rather than current value
to better use them for incremental updates.
Modify prim and character to use the new motors.
Simplify the vehicle linear movement code to just update the velocity
directly or the basic movement.
2013-01-20 23:09:53 -08:00
teravus
2c517d792f This updates prebuild to remove BulletSimN, implements the BulletSim API in BulletSPlugin using the BulletXNA Bullet physics engine. It also updates the BulletXNA library to be compatible with the changes. OpenSimDefaults has been updated to describe how to switch engines and terrain implementations. 2013-01-20 08:18:16 -05:00
teravus
6a75949323 * Dumping BulletSimNPlugin in favor of combining the API 2013-01-20 08:07:49 -05:00
teravus
82b954b212 * Tweak the BulletSimN API a bit. 2013-01-20 08:06:15 -05:00
teravus
10de5d8169 * Allow unsafe code with BulletSim 2013-01-20 08:03:17 -05:00
PixelTomsen
9c590e51b6 IRCBridgeModule: optional agent-alertbox for IRC enabled Regions look in OpenSimDefaults.ini / section [IRC]
http://opensimulator.org/mantis/view.php?id=6470

idea: https://github.com/ssm2017/IrcBridgeAlert
2013-01-19 02:40:28 +00:00
Justin Clark-Casey (justincc)
41ae006e9b minor: adjust formatting in TESTING.txt to make headers more wiki-like 2013-01-19 02:32:41 +00:00
Justin Clark-Casey (justincc)
fc6115f777 Check the existing ScenePresence.ParentPart to make sure we're not trying to sit on a prim we're already sat upon, rather than looking up the part from scratch.
An adaptation of commit 055b8a2
Having both ParentID and ParentPart references now is redundant.  ParentID should probably be eliminated.
2013-01-19 02:29:02 +00:00
Oren Hurvitz
b77da5039e Assign the SmartThreadPool name in the constructor
This is required because some threads are created in the constructor, so assigning the name afterwards would be too late.
2013-01-19 02:08:58 +00:00
Justin Clark-Casey (justincc)
3eee991935 Explicitly stop PollServiceRequestManager() rather than relying on its destructor.
Hopes to address occasional shutdown failures from http://opensimulator.org/mantis/view.php?id=6503
2013-01-19 02:04:36 +00:00
Talun
27e2ec177a New constants for llGetObjectDetails
New constants for llGetObjectDetails OBJECT_CHARACTER_TIME,
OBJECT_ROOT, OBJECT_ATTACHED_POINT, OBJECT_PATHFINDING_TYPE,
OBJECT_PHYSICS, OBJECT_PHANTOM and OBJECT_TEMP_ON_REZ
also Pathfining constants, 3 of which are used by llGetObjectDetails
2013-01-19 01:50:16 +00:00
Talun
607558fe21 New constants for llGetObjectDetails
New constants for llGetObjectDetails OBJECT_CHARACTER_TIME,
OBJECT_ROOT, OBJECT_ATTACHED_POINT, OBJECT_PATHFINDING_TYPE,
OBJECT_PHYSICS, OBJECT_PHANTOM and OBJECT_TEMP_ON_REZ
also Pathfining constants, 3 of which are used by llGetObjectDetails
2013-01-19 01:18:04 +00:00
Talun
4f70e423df Mantis 6507 keys returned by llGetAgentList incorrect for llList2Key
The type of the keys returned by llGetAgentList corrected to LSL_Key
2013-01-19 01:14:11 +00:00
Justin Clark-Casey (justincc)
652cfa2ee2 Fix use of scene debug commands when region is set to root or a specific region where there is more than one region on the simulator. 2013-01-19 00:27:17 +00:00
Justin Clark-Casey (justincc)
115e1c2abb Add "debug set set animations true|false" region console command.
Setting this logs extra information about animation add/remove, such as uuid and animation name
Unfortunately cannot be done per client yet
2013-01-18 23:22:02 +00:00
Justin Clark-Casey (justincc)
74256c0cc4 Restore previous client AO behaviour by not allowing them to remove the default animation but continue to allow scripts to do so.
This keeps the fix from http://opensimulator.org/mantis/view.php?id=6327
and fixes the behaviour regression in http://opensimulator.org/mantis/view.php?id=6483
Animations may still exhibit different behaviour if both scripts and clients are adjusting animations.
A change in the behaviour of client AO to not remove all animations may be a better long term approach.
2013-01-18 22:57:09 +00:00
Robert Adams
c6b6c94ccb BulletSim: reduce jitter in avatar velocity when walking or flying.
OpenSimulator is VERY sensitive to changes in avatar velocity and
will send an avatar update message when velocity changes more than
0.001m/s. This significantly reduces the number of avatar update messages by
smoothing the avatar velocity returned by Bullet.
2013-01-18 11:39:24 -08:00
Robert Adams
482c7b5368 BulletSim: add logic to turn off pre-step actions when object goes
non-active. This turns off 'setForce', 'setTorque' and 'moveToTarget'
when the object is selected or made non-physical.
2013-01-18 11:37:36 -08:00
Justin Clark-Casey (justincc)
c8afc8523b Implement non-wait co-operative termination of scripts for XEngine in addition to termination on wait.
This involves inserting opensim_reserved_CheckForCoopTermination() calls in lsl -> c# translation at any place where the script could be in a loop with no wait calls.
These places are for, while, do-while, label, user function call and manual event function call.
Call goes through to an XEngineScriptBase which extends ScriptBase.
IEngine is extended to supply necessary engine-specific parent class references and constructor parameters to Compiler.
Unfortunately, since XEngineScriptBase has to be passed WaitHandle in its constructor, older compiled scripts will fail to load with an error on the OpenSim console.
Such scripts will need to be recompiled, either by removing all *.dll files from the bin/ScriptEngines/<region-id> or by setting DeleteScriptsOnStartup = true in [XEngine] for one run.
Automatic recompilation may be implemented in a later commit.
This feature should not yet be used, default remains termination with Thread.Abort() which will work as normal once scripts are recompiled.
2013-01-17 23:39:09 +00:00
Robert Adams
a6afd2f706 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-17 14:51:52 -08:00
Robert Adams
75f710f1e7 BulletSim: Add one function that all actors who act on the physical
can use to know if the object is currently active.
Code cleaning including use of Util.ClampV function.
2013-01-17 14:47:35 -08:00
Robert Adams
caad1edabf Add utility function to clamp a vector to a maximum magnitude. 2013-01-17 14:44:54 -08:00
Melanie
9c99ed26eb Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-01-16 16:52:57 +00:00
Melanie
5563a8916e Complete removal of the now unused state queue 2013-01-16 16:45:18 +00:00
Diva Canto
37fcf87946 Changed a couple of debug messages at the request of osgrid. 2013-01-16 08:20:32 -08:00
Robert Adams
8ee9daa121 BulletSim: add the editting children in linkset going phantom bug to TODO list. 2013-01-15 21:08:47 -08:00
Robert Adams
5d098d8f17 BulletSim: don't modify angular parameters when doing LIMIT_MOTOR_UP.
It was a dumb idea to try and do a nose over feature for jumping cars anyway.
Add better logging of native shape creation/reuse so can  tell the difference.
2013-01-15 21:08:46 -08:00
Robert Adams
61ff79587b BulletSim: add debugging messages to know when assets for physical
objects have been fetched.
Update TODO list with more work.
2013-01-15 21:08:46 -08:00
Robert Adams
daef2b8d87 BulletSim: reduce maximum force a script can apply (like in llApplyImpulse)
to the documented maximum from the outragious number previously.
2013-01-15 21:08:46 -08:00
Justin Clark-Casey (justincc)
0963ece25b Implement co-operative script termination if termination comes during a script wait event (llSleep(), etc.)
This makes use of EventWaitHandles since various web references indicate that Thread.Interrupt() can also cause runtime instability.
If co-op termination is enabled, then termination sets the wait handle instead of waiting for a timeout before possibly aborting the thread.
This allows the script to cleanly terminate if it's in a llSleep/LL function delay or the next time it enters such a wait without any timeout period.
Co-op termination is not yet testable since checking for termination request within loops that never trigger a wait is not yet implemented.
This commit, unlike 1b5c41c, passes the wait handle as an extra parameter through IScript.Initialize() instead of passing IScriptInstance itself.
2013-01-16 02:07:43 +00:00
Justin Clark-Casey (justincc)
b8949024bc Revert "Implement co-operative script termination if termination comes during a script wait event (llSleep(), etc.)"
Doing this as a favour to Melanie.  This will be back with passing the wait handles directly to the api.

This reverts commit 1b5c41c14a.
2013-01-16 01:45:09 +00:00
Justin Clark-Casey (justincc)
03a8a4426f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-16 00:20:18 +00:00
Justin Clark-Casey (justincc)
1b5c41c14a Implement co-operative script termination if termination comes during a script wait event (llSleep(), etc.)
This makes use of EventWaitHandles since various web references indicate that Thread.Interrupt() can also cause runtime instability.
If co-op termination is enabled, then termination sets the wait handle instead of waiting for a timeout before possibly aborting the thread.
This allows the script to cleanly terminate if it's in a llSleep/LL function delay or the next time it enters such a wait without any timeout period.
Co-op termination is not yet testable since checking for termination request within loops that never trigger a wait is not yet implemented.
2013-01-16 00:12:40 +00:00
Justin Clark-Casey (justincc)
fccb03227e Instead of passing separate engine, part and item components to script APIs, pass down IScriptInstance instead.
This is to allow the future co-operative script thread terminate feature to detect and act upon termination requests.
This splits the assembly and state loading out from the ScriptInstance() constructor to a separate Load() method
in order to facilititate continued script logic regression testing.
2013-01-15 21:13:22 +00:00
BlueWall
f54b398540 Merge branch 'master' of /home/opensim/var/repo/opensim 2013-01-15 10:08:27 -05:00
BlueWall
ca3e0d67d2 Add Json-Rpc 2.0 To Registered Handlers
Added registration json-rpc handlers in the http server. Covers version 2.0
  See: http://www.jsonrpc.org/specification
2013-01-15 10:04:16 -05:00
Robert Adams
021964c6e0 BulletSim: tweeks to improve hover. 2013-01-15 04:24:24 -08:00
Robert Adams
181d4c6fcb BulletSim: temporarily disable banking and direction deflection
because the computations are wrong.
Add VehicleTorqueImpulse routines.
2013-01-15 02:58:14 -08:00
Robert Adams
0374b2a0b4 BulletSim: fix logic for enabling unmanaged code debug messages.
Free pinned memory when physics engine is unloaded.
2013-01-15 02:21:38 -08:00
Robert Adams
edf198b766 Merge branch 'master' of git://opensimulator.org/git/opensim 2013-01-15 01:46:30 -08:00
Robert Adams
13778c895a BulletSim: by default, turn on continuious collision detection (CCD)
and enable friction computation caching. Remove dangerous BulletSim
settings from OpenSimDefaults.ini.
2013-01-15 01:44:34 -08:00
dahlia
055b8a2d58 move resit fix to ScenePresence.cs and allow for requesting sit on objects other than the object currently sat on 2013-01-14 22:24:24 -08:00
dahlia
b5d55c129a test commit for new git install 2013-01-14 19:54:17 -08:00
Justin Clark-Casey (justincc)
1c240cd555 Print full stacktrace from plugin loading failure to help determine what went wrong, rather than a possibly unhelpful simple exception message. 2013-01-15 01:07:20 +00:00
Justin Clark-Casey (justincc)
c846cefda9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-15 00:24:51 +00:00
Robert Adams
4e1ca890c2 BulletSim: fix not moving physical objects below terrain to over terrain.
Add locking on register prestep action list preventing potential race conditions.
Little comment and formatting changes.
2013-01-14 15:46:46 -08:00
Justin Clark-Casey (justincc)
7978b349bd refactor: Simplify ScriptInstance by retaining reference to SceneObjectPart instead of sometimes but not always looking it up. 2013-01-14 23:19:47 +00:00
Robert Adams
8bf0a9f85d BulletSim: disable center-of-mass computation for linksets until debugged. Move physical prim above ground if it is underground. Previously tried to correct by applying and up force but the prim would never go through the ground. 2013-01-14 07:50:58 -08:00
Robert Adams
459fcd81c9 BulletSim: move center of gravity of linkset to its geometric center.
Necessitated allowing simulator and physical position of a body to
get out of sync since Bullet assumes that <0,0,0> is the center of mass.
Update DLLs and SOs for the UpdateChildTransform so positions of
  individual prim in a linkset can be implemented.
2013-01-11 16:47:53 -08:00
Robert Adams
eacc2561d1 BulletSim: add osGetPhysicsEngineType() LSL function and update
the physics engines to return the name that is specified in the INI
file ("physics = XXX") as the type of engine.
This os function is a little different than the others in that it
does not throw an exception of one is not privilaged to use it.
It merely returns an empty string.
2013-01-11 16:47:35 -08:00
Robert Adams
93adc4cb66 BulletSim: Add IsSelected attribute to physical objects. Have vehicles check to see if physical before trying to step. Replace vehicle gravity application. Previously relying on Bullet to apply gravity but since vehicles over-ride the velocity calculation, gravity never had a chance to accelerate the body down. Added AddForceImpulse as well as AddForce for those who need to apply immediate velocity updates. Use the impulse to apply the linear motion. 2013-01-11 16:47:20 -08:00
Robert Adams
daacd4deed Fix exception reporting in SceneObjectPart so it logs what the exception is rather than just saying it happened. 2013-01-11 16:47:07 -08:00
Robert Adams
7e58bbaac6 BulletSim: Redo linear function coding so they can better interact. New algorithm for limitMotorUp that relies on going up when not colliding rather than distance from ground. Add parameter for turning on and off embedded source vehicle debugging. 2013-01-11 16:46:53 -08:00
Robert Adams
98168edc29 BulletSim: remove double application of buoyancy. Centralize computation of buoyancy. Add motor angular debugging controls. 2013-01-11 16:46:38 -08:00
Robert Adams
b592ec265b BulletSim: fix the 'No recognised physics mesh found ...' error spew by remembering that the last asset fetch failed until the simulator resets the shape parameters. 2013-01-11 16:44:34 -08:00
dahlia
72cc94cfbc add some sanity checking to HandleAgentRequestSit handler 2013-01-10 20:21:18 -08:00
Justin Clark-Casey (justincc)
660d36a5b0 Implement a workaround solution for saving manual script state changes by the user before logout instead of wrongly removing the script early.
This workaround relies on the fact that a closing client goes inactive before the attachments derez calls happen.
This reverts the change to remove scripts too early instead of stopping them, since the the two step stop then remove is necessary to execute the detach event.
2013-01-11 02:28:43 +00:00
Justin Clark-Casey (justincc)
05ac6d3209 Save attachments on detach/exit if a contained script state has been changed.
This involves making Attachments module listen for start/stop script changes.
It also involves removing the script from the region on detach in the same manner as every other DeleteSceneObject() call rather than simply stopping it
This is necessary tue to the bad assymetry of start and stop script triggers but it appears to be the correct behaviour anyway, as detached objects are completely gone from the sim.
Not just in a state where their scripts have been stopped.
2013-01-11 01:46:36 +00:00
Justin Clark-Casey (justincc)
26347307ec Fix a regression in the last few scene commands changes where setting these via the viewer estate dialog stopped working.
Forgot to register the new interface.
Also removes some code which got included by adpating an existing module.
2013-01-11 00:08:52 +00:00
Justin Clark-Casey (justincc)
f3a2bbbd93 Add "debug scene get" console command to list current scene options 2013-01-10 23:56:11 +00:00
Justin Clark-Casey (justincc)
a16ae5d7e3 Move scene debug commands into separate module. Command changes from "debug scene <key> <value>" to "debug scene set <key> <value>" to accomodate future settings 2013-01-10 23:49:48 +00:00
Justin Clark-Casey (justincc)
983e458bb6 refactor: route the final scene backup through the same code that handles periodic backup
This is rather than making unnecessary duplicate checks that the SOG later performs again.
2013-01-10 22:59:40 +00:00
Justin Clark-Casey (justincc)
17f21ba9a0 minor: Capitalize GroupsModule command category 2013-01-10 22:46:25 +00:00
Justin Clark-Casey (justincc)
e65737be93 minor: add missing newline to "debug scene" console command 2013-01-10 22:42:33 +00:00
Justin Clark-Casey (justincc)
f566dc0618 Remove unimplemented "debug teleport" console command 2013-01-10 22:42:12 +00:00
Justin Clark-Casey (justincc)
701ca1e4b8 Add "debug scene pbackup true|false" console command. This enables or disable periodic scene backup. For debug purposes.
If false, scene is still saved on shutdown.
2013-01-10 22:38:48 +00:00
Justin Clark-Casey (justincc)
170d376967 On baked texture save, replace any HG ID with an ordinary asset ID so the HGAssetBroker doesn't try to save back to the avatar's originating region 2013-01-10 01:45:56 +00:00
Justin Clark-Casey (justincc)
84407e322f revert accidental change to MemoryWatchdog stat calculation in previous b1b4687 2013-01-10 01:30:00 +00:00
Justin Clark-Casey (justincc)
b1b4687250 Add "show script timers" command to show script timers. For debug purposes.
Also, "show sensors" changes to "show script sensors".
2013-01-10 00:57:49 +00:00
Justin Clark-Casey (justincc)
a0000a034f Add "show sensors" command to show script sensor information for debug purposes. 2013-01-10 00:32:22 +00:00
Justin Clark-Casey (justincc)
290dc274ec minor: Remove unnecessary commented out code from last commit c28a2f05 and fix up code comment 2013-01-09 01:04:43 +00:00
Justin Clark-Casey (justincc)
c28a2f05ca minor: make spacing consistent in console help output 2013-01-09 00:54:28 +00:00
Melanie
e4fad4a09d Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2013-01-09 00:21:43 +00:00
Robert Adams
df1d7414ad BulletSim: Fix hover height (boats float at the correct level).
Fix problem of vehicles going crazy when backing up.
2013-01-08 16:37:49 -08:00
Melanie
f16c4a254c Revert "Prevent empty Anim Packs"
This reverts commit 5561333668.
2013-01-09 00:20:24 +00:00
Melanie
c1c540f454 Revert "Fix sequence id fr default anim"
This reverts commit a775931a0c.
2013-01-09 00:20:14 +00:00
Justin Clark-Casey (justincc)
3d5e3e35b7 minor: Fix command match of "debug script" command to "debug scripts" to match other scripts commands (and it's own short help text) 2013-01-09 00:08:08 +00:00
Justin Clark-Casey (justincc)
5fa4b8b144 minor: Allow "script *" console commands to take multiple script item ids 2013-01-09 00:01:48 +00:00
Melanie
a775931a0c Fix sequence id fr default anim 2013-01-08 23:36:05 +00:00
Melanie
5561333668 Prevent empty Anim Packs 2013-01-08 23:12:32 +00:00
Melanie
2ac96dd181 Add the new UpdateAgentInformation cap to make maturity on more recent viewers
work.
2013-01-08 22:52:14 +00:00
Robert Adams
1603606f1d BulletSim: improve vehicle angular banking and deflection computation. Rotate angular correction forces to be world relative rather than vehicle relative. 2013-01-07 22:00:50 -08:00
Robert Adams
8452c0a870 BulletSim: add function to push avatar up when hitting stairs.
It looks like BulletSim and ODE rely on penetration correction to cause
the avatar to move up and thus allowing walking up stairs. Object
penetration was minimized for walking and flying (so one doesn't go
through walls) and this stopped stairs from working. This commit
introduces avatar movement code to check for collisions at the
feet while walking and attempts to raise the avatar for the steps.
Not yet perfect but movement is better.
2013-01-07 16:05:02 -08:00
Robert Adams
599dbc3d95 BulletSim: fix exception when re-creating the terrain when loading an OAR file 2013-01-07 16:04:21 -08:00
Robert Adams
2e5222055f BulletSim: comments and removing small compile errors introduced in last commit. 2013-01-06 22:56:16 -08:00
Robert Adams
9393403253 BulletSim: update DLLs and SOs with better debugging output.
Add definition of hand crafted avatar mesh. Not used yet.
Comments and cleanup.
2013-01-06 14:01:15 -08:00
Robert Adams
2eba80a8cd BulletSim: fix problem where mesh shapes were physically just their bounding box and not the complete mesh. Fill mesh physical objects are back. 2013-01-04 17:06:52 -08:00
Robert Adams
48cfc6d089 BulletSim: implement llMoveToTarget by adding PIDActive, etc.
Implementation of non-vehicle hover but haven't tested it a lot.
Update TODO list.
2013-01-04 17:06:51 -08:00
Robert Adams
d0c7f7f050 BulletSim: add some features to the PID motor to make it more flexible. 2013-01-04 17:06:51 -08:00
Robert Adams
613f516007 BulletSim: convert avatar movement from a force to an impulse. Shouldn't
change functionality but removes an oddity in computing the force.
2013-01-04 17:06:50 -08:00
Robert Adams
2c6b269b6e BulletSim: add initial implementation of llMoveToTarget and hover height.
Not all there yet.
2013-01-04 17:06:50 -08:00
Robert Adams
5432180027 BulletSim: reorganize motor code a little to pull together common functions.
Add BSFMotor.
2013-01-04 17:06:50 -08:00
Robert Adams
44492b3a49 BulletSim: add comments to force and impulse setting functions
so it is clear what Bullet is actually doing with the set values.
2013-01-04 17:06:49 -08:00
Robert Adams
92a6958b6d BulletSim: fix problem where pre-step actions would not replaced
by new registrations thus causing multiple instances of an action.
2013-01-04 17:06:49 -08:00
Robert Adams
2eda385f5e BulletSim: add ResetBroadphasePool and ResetConstraintSolver diagnostic
functions. If values set from console, the functions are called. Looking
for why the collision pools fill up with unnecessary stuff.
2013-01-04 17:06:48 -08:00
Justin Clark-Casey (justincc)
5265415011 minor: Rename BUILDING.txt to BUILDING.md in distbin distribution nant target 2013-01-04 22:13:21 +00:00
Justin Clark-Casey (justincc)
7232cedd2b Set default particle burst count to 1 instead of 0 in any set particle system script call that does not have an empty list.
As per http://opensimulator.org/mantis/view.php?id=6353
2013-01-04 21:37:11 +00:00
Justin Clark-Casey (justincc)
7e45096314 Fix build break caused by missing ) from dce2809.
Was hand-typing in a line of code I had tested before but not retested this time
2013-01-04 21:22:51 +00:00
Justin Clark-Casey (justincc)
dce2809137 Automatically grant sit-related llRequestPermissions() for subsequent avatars sitting on the same scene obejct, instead of wrongly popping up request permissions dialog.
Resolves http://opensimulator.org/mantis/view.php?id=6478
2013-01-04 21:18:53 +00:00
Justin Clark-Casey (justincc)
a3bf3a2aa5 refactor: simplify llGetNumberOfPrims() to return prim count + sitting avatar count rather than independently inspecting every scene presence 2013-01-04 20:56:39 +00:00
Justin Clark-Casey (justincc)
9869ca83b4 Fix llGetLinkName() to return the name of the last avatar sat as the last link number.
As per http://wiki.secondlife.com/wiki/LlGetLinkName
2013-01-04 20:54:11 +00:00
Justin Clark-Casey (justincc)
9503383887 Fix llGetLinkKey() to return the last sat avatar as the last link number.
As per http://wiki.secondlife.com/wiki/LlGetLinkKey
This is done by keeping a scene-object wide list of sitters.
This also fixes bugs in this function where linknums 0 and 1 weren't treated properly if there were sitting avatars on a single prim.
This also fixes a minor race condition for multiple concurrent sitters on a prim with no current sitters by locking on the object-wide list rather than individual sop lists
Addresses http://opensimulator.org/mantis/view.php?id=6477
2013-01-04 20:34:39 +00:00
Justin Clark-Casey (justincc)
a75f24bb79 minor: Add some doc to the extremely unhelpful 'fudge....' comment as to why we're deselecting the prim in code before scheduling an update on attachment 2013-01-03 21:06:50 +00:00
Justin Clark-Casey (justincc)
7f195de303 Fix problem where object attached from ground often does not get attached properly.
It seems this is happening because we send a kill for objects that are selected when attached.
A code comment says that this is to get the client to deselect it, but v3 and v1 clients do this just fine without the kill.
Aims to address http://opensimulator.org/mantis/view.php?id=6456
2013-01-03 20:57:14 +00:00
SignpostMarv
aa78df4a79 Scipt modules get the OpenMetaverse types, so lists passed as arguments to script module functions which then later call LSL_Types.list.GetVector3Item() or LSL_Types.list.GetQuaternionItem() methods would then trigger an InvalidCastException, which is now avoided. 2013-01-03 00:18:33 +00:00
SignpostMarv
a5ac6af16a Improving documentation of AttachToAvatar and GetLine methods in LSL_Api.cs based on doxygen error output 2013-01-03 00:17:24 +00:00
SignpostMarv
79b7c571ff updating documentation in SampleMoneyModule based on doxygen error log output; changing an xml-style hint to a uri-style hint in the class summary, improving documentation of Initialise method and removing a superfluous parameter, improving documentating of ClientClosed method and documenting an omitted parameter 2013-01-03 00:17:24 +00:00
SignpostMarv
4364d48817 updating config properties added during upgrade process, adding error log file to doxygen config, adding doxygen output directory & error log to .gitignore 2013-01-03 00:17:24 +00:00
SignpostMarv
472bae38b7 ran doxygen -s -u to upgrade the doxygen config file 2013-01-03 00:17:23 +00:00
Justin Clark-Casey (justincc)
1945f0023a Change nant distbin target to also remove ThirdParty/ source code when making binary distribution 2013-01-03 00:09:40 +00:00
Justin Clark-Casey (justincc)
589e3e8686 minor: Change channel digger replacement message in TerrainModule to Info from Warn.
This is to stop this unnecessarily triggering log analysis code which reports warn and error level statements.
2013-01-03 00:03:29 +00:00
Oren Hurvitz
1b826b4877 Allow registering regions whose names are equivalent under LIKE but not truly equal 2013-01-02 23:31:19 +00:00
Oren Hurvitz
1a6694b264 Fixed several problems with the Sun: some settings didn't work, or were inconsistently used. - The sun position is always calculated by combining the sun settings in the Region and Estate. This fixes the problem that 'UseEstateSun' didn't work. - To remove ambiguity, the EstateToolsSunUpdate event no longer accepts the sun's position as parameters. That's because the position is always calculated from the Region and Estate settings. - Use only the 'FixedSun' flag to determine whether the sun is fixed; not the 'UseGlobalTime' flag. - Don't change the region's 'SunPosition' field according to the sun's position: this field is used only to set the position when using a FixedSun. (The 'SunVector' field does get updated according to the sun's position in the sky) 2013-01-02 23:16:24 +00:00
Oren Hurvitz
24e486e9df Fixed: the AvatarEnteringNewParcel event wasn't triggered in some cases
If an avatar moved between regions: A -> B -> A, then when returning to region A the AvatarEnteringNewParcel wasn't triggered. This happened because the ScenePresence in region A still remembered its previous 'currentParcelUUID', so it appeared as if the avatar didn't change parcels. Now, however, when a ScenePresence becomes a child presence we clear its 'currentParcelUUID'.
2013-01-02 23:00:23 +00:00
Oren Hurvitz
5097ba81d4 Added locking in NullRegionData.
This prevents errors when one thread iterates over the regions (e.g., from RegenerateMaptileAndReregister()) while another thread is adding a region.
2013-01-02 22:48:25 +00:00
Justin Clark-Casey (justincc)
8f31649fad Fix indenting on ConsoleDisplayTable, align indenting on "show animations" console command 2013-01-02 22:37:50 +00:00
Justin Clark-Casey (justincc)
2db1f22b89 minor: minor code and log formatting fixes to recent changes in LandManagementModule 2013-01-02 22:31:18 +00:00
Oren Hurvitz
9784e4e07d Changed locks to prevent deadlocks (especially during multi-region Load OAR) 2013-01-02 22:28:41 +00:00
Oren Hurvitz
d2f4ca0dfe If Save OAR/IAR times-out while waiting for assets then notify the caller that the operation failed 2013-01-02 22:15:00 +00:00
Justin Clark-Casey (justincc)
6b55f51837 minor: Allow objects to be added directly to a row on a ConsoleDisplayTable rather than having to ToString() them first 2013-01-02 22:11:13 +00:00
Oren Hurvitz
70695a6ed9 Implemented Return Objects when it's invoked from the Top Colliders or Top Scripts dialogs 2013-01-02 21:59:01 +00:00
Justin Clark-Casey (justincc)
addab1244e Add "show animations" console command for debug purposes.
This shows the current animation sequence and default anims for avatars.
2013-01-02 21:38:00 +00:00
Justin Clark-Casey (justincc)
30e5e5cce6 If an NPC is unowned, then always auto-grant permissions requested via llRequestPermissions()
This is consistent with all other OSSL NPC functions that allow unowned avatars to be manipulated.
Aims to address http://opensimulator.org/mantis/view.php?id=6483
2013-01-02 19:25:52 +00:00
Robert Adams
aa236b2020 BulletSim: add parameter to have Bullet output performance statistics
every so many frames. Default to off.
2013-01-01 17:27:34 -08:00
Robert Adams
b14b65ea95 BulletSim: move selection of the unmanaged Bullet DLL from BSPlugin
into the unmanaged Bullet interface class.
2013-01-01 17:27:33 -08:00
Robert Adams
9d840fd2ee BulletSim: move over and port the interface for BulletXNA.
Copied BulletSNPlugin.BulletSimAPI to a new
BulletSPlugin.BSAPIXNA.cs and then modifyed the latter to
comply with the BSAPITemplate definition. Not totally debugged
but the code is all there for an INI variable to select either
unmanaged C++ Bullet or the C# version of Bullet.
2013-01-01 17:27:33 -08:00
Robert Adams
0662d109c2 BulletSim: fix line endings. 2013-01-01 17:27:33 -08:00
Robert Adams
04132d3af4 BulletSim: subclass Bullet[World|Body|Shape|Constraint] for unmanaged
to have pointers and managed to have objects.
Initial paste of XNA code. Commented out.
2013-01-01 17:27:32 -08:00
Oren Hurvitz
a0739a80a8 Fixed bugs when getting the root folder.
1. The error checking for the case where there's no "My Inventory" folder was
incorrect: it checked the wrong variable.
2. If GetSystemFolderForType() is called to get AssetType.RootFolder then
it should return the root folder immediately; not look for another root
folder below it.
2013-01-02 00:04:14 +00:00
Justin Clark-Casey (justincc)
bc9a7ba0d6 minor: Assign names to the different SmartThreadPools for debugging purposes.
A different approach to the patch in http://opensimulator.org/mantis/view.php?id=6462
that doesn't involve further forking of SmartThreadPool
2013-01-01 23:57:20 +00:00
Justin Clark-Casey (justincc)
416244051d refactor: call Util.InitThreadPool() if we are initializing an uninitialized pool on first use rather than constructing it ourselves.
No functional change.
2013-01-01 23:50:38 +00:00
Justin Clark-Casey (justincc)
e8a3cc7019 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2013-01-01 23:27:10 +00:00
Justin Clark-Casey (justincc)
96e196a9dd Clarify that AllowLightShareFunctions setting is false, which is the default in OpenSimDefaults.ini and the code. 2013-01-01 23:23:08 +00:00
Robert Adams
db3b6e8921 BulletSim: remove unused unmanaged memory reference functions from BSAPITemplate. 2012-12-31 19:57:26 -08:00
Robert Adams
6988b5ceaf BulletSim: remove rigid body contruction functions from BSAPITemplate that relied on prebuilt construction info structures. 2012-12-31 19:57:25 -08:00
Robert Adams
9396ccc078 BulletSim: eliminate the use of the unmanaged HeightMapInfo structure.
Remove all related calls from the unmanaged and BSAPITemplate interfaces.
Update DLLs and SOs to include the version without HeightMapInfo structures.
2012-12-31 19:57:25 -08:00
Robert Adams
3d0fc70864 BulletSim: complete movement of BulletSimAPI functions to BSAPITemplate.
Update BulletSim DLLs and SOs with simplier step function interface.
2012-12-31 19:57:24 -08:00
Robert Adams
c2a7af18b6 BulletSim: nearly complete in conversion from BulletSimAPI to BSAPITemplate. Only initialization and debug fuctions left. 2012-12-31 19:57:23 -08:00
Robert Adams
5379d6d112 BulletSim: remove all the debug printing of pointer formatting (.ToString(X)) and replace it with a method on BulletBody, BulletShape, ... 2012-12-31 19:57:22 -08:00
Robert Adams
9218748321 BulletSim: another round of conversion: dynamics world and collision object functions. 2012-12-31 19:57:22 -08:00
Robert Adams
9fd0e1b080 BulletSim: add the implementation files for the two versions of Bullet:
unmanaged (C++) and managed (C#).
2012-12-31 19:57:21 -08:00
Robert Adams
48f718f39f BulletSim: first round of conversion from direct BulletSimAPI interfacing by BulletSim core to using the BulletSimAPITemplate. Physical object creation and destruction first. 2012-12-31 19:57:21 -08:00
Robert Adams
203588e3c0 BulletSim: change physical data structures to classes. Add default
instantiations for PhysBody and PhysShape when BSPhysObject is created
to account for them being classes and not structures.
Update TODO list.
2012-12-31 19:57:21 -08:00
Robert Adams
4914d6c0ea Resolve Mantis 6480 (http://opensimulator.org/mantis/view.php?id=6480)
by reversing the sign on the recoil computation and adding a
[XEngine]RecoilScaleFactor parameter which defaults to zero.
Testing in SL seems to show that there is not a recoil action there.
Or, at least, it is very small. If someone knows how small, the default
for the scale factor should be changed.
2012-12-31 19:57:20 -08:00
Robert Adams
26f364cc5d Comment out test messages that go directly to the console. 2012-12-31 19:57:20 -08:00
Justin Clark-Casey (justincc)
d698df1f37 Remove out-of-date and unused xsd schemas 2012-12-31 22:14:50 +00:00
Justin Clark-Casey (justincc)
c18e2e4545 Remove php dir which was only populated with a single file that generated a long out-of-date user profile array. 2012-12-31 22:12:20 +00:00
Justin Clark-Casey (justincc)
00874eb90e minor: Add README to doc/ to explain that all user-level doc is at http://opensimulator.org rather than here. 2012-12-31 21:42:00 +00:00
Robert Adams
28a8949b9f BulletSim: remove check for small motor movement because, while it
did the right thing for stopping (speed reducing to zero), it prevented
movement from starting (speed increasing from zero). Will revisit
when the generalize PID motor is debugged.
2012-12-29 10:19:47 -08:00
Robert Adams
0538096fa3 BulletSim: an 'if' to suppress multiple setting of avatar orientation.
Looks like the viewer bombards the server with avatar orientation
information (we're talking several hundred a second) when the avatar
is being turned or when walking. This change just reduces the number
of 'set' calls into unmanaged code.
2012-12-29 08:32:57 -08:00
Robert Adams
db6c0363f0 BulletSim: tweeking avatar capsule code in an attempt to have
asymmetrical avatar capsule work now that rotation is being passed
from the simulator. Turns out the Bullet capsule is just not very
functional: it doesn't scale properly, the implementation only half
does asymmetry and, in general, is hard to work with.
Avatar shape is about what it was before these changes.
Added initial data structures for avatar shape mesh.
2012-12-29 08:03:57 -08:00
Robert Adams
976023366f BulletSim: update values in OpenSimDefaults.ini to reflect the values really used by the code. 2012-12-28 16:31:45 -08:00
Robert Adams
fdf8732cd7 ScenePresence passes the avatar rotation down to the physics engine. This will be a no-op for ODE but enables asymmetrical avatars for BulletSim. 2012-12-28 16:29:16 -08:00
Robert Adams
7266eeca6e BulletSim: add 'AvatarAlwaysRunFactor' parameter and use in setTargetVelocity
to implement the 'always run' feature.
2012-12-28 12:01:57 -08:00
Robert Adams
70e0a86601 BulletSim: fix problem of avatars appearing to walk through walls
by moving the movement motor to a pre-step action and out of its
questionable previous home in UpdateProperties.
2012-12-28 11:56:07 -08:00
Robert Adams
1f6aaad0b5 BulletSim: correct collision mask definition for linkset children.
Remove unused code. Add comments and TODOs.
2012-12-27 22:12:28 -08:00
Robert Adams
422f0fd6ec BulletSim: fix physical object not interacting with static objects.
Another instance of the underlying Bullet doing, ah, helpful things
when items are added to the world.
2012-12-27 22:12:28 -08:00
Robert Adams
c1e7539c77 BulletSim: Parameterize nominal frame rate (55) and add parameters to dynamially turn on/off detailed, unmanaged data dumping of prims and vehicles. 2012-12-27 22:12:28 -08:00
Robert Adams
7a5f598399 BulletSim: move logic for IsColliding, CollidingGround and CollidingObj from individual sub-classes and up to parent BSPhysObject class. 2012-12-27 22:12:27 -08:00
Robert Adams
5afab9bcfe Add check to always push terse updates for presences that have new velocities of zero. 2012-12-27 22:12:27 -08:00
Robert Adams
e57c0e6731 BulletSim: fix buoyancy so it's properly set by a script when an
object is selected.
Update TODO list.
2012-12-27 22:12:26 -08:00
Robert Adams
7230990679 BulletSim: fix odd code that wasn't really recomputing the mass of a
rebuilt linkset. I was burnt by making get/set methods with side
effects. I should know better.
2012-12-27 22:12:26 -08:00
Robert Adams
f3baed5827 BulletSim: add physical parameter min/max constants in BSParam. I just don't like raw numbers scattered around the code. 2012-12-27 22:12:25 -08:00
Robert Adams
e98e223927 BulletSim: complete applyImpulse function in BSCharacter (like I said
I did last time).
2012-12-27 22:12:25 -08:00
teravus
29cdf0f3dd * Merges BulletSim Updates to BulletSimN(BulletSNPlugin) 2012-12-18 15:00:10 -05:00
Robert Adams
225b564573 BulletSim: scale the force for external AddForce by the simulation
step time so it will be applied completely the next step. The internal
AddForce routine does not scale the force.
2012-12-26 10:25:50 -08:00
Robert Adams
d1ede1df3a BulletSim: make llBuoyancy work. For some reason, Bullet resets an
object's individual gravity to the world gravity when the object
is added to the physical world.
2012-12-25 23:55:25 -08:00
Robert Adams
5f71ee57c4 BulletSim: stop avatar from sliding VERY slowly after walking by
only zeroing the movement motor in the UpdateProperties routine.
2012-12-25 23:54:10 -08:00
Robert Adams
bbc5a5089f BulletSim: Rename some of the interface structures (BulletWorld, ...)
to get ready for...
Start creation of BulletAPITemplate. This defines the abstract interface
functions. Following commits will move over to the new interface.
This will enable switching between the managed and unmanaged version of
Bullet.
2012-12-24 20:18:06 -08:00
Robert Adams
4759a8acee BulletSim: Default avatar density changed to 3.5 which is WAY closer
to the SL value.
Fixed frictin values for physical materials which were just wrong
which caused things that should have slipped to not.
2012-12-24 20:16:10 -08:00
Robert Adams
80cee1b85a BulletSim: Fix single physical prim reporting its mass as zero.
Properly return root mass as mass of just the root prim rather
than the mass of the linkset. SOG has the logic to add the masses
together to get the linkset mass.
Update TODO list.
2012-12-24 08:56:02 -08:00
teravus
9318870607 * Update BulletSimN terrain implementation to default to Heightfield, it's less CPU intensive. 2012-12-23 16:17:18 -05:00
teravus
1a841dfc59 * Update Example to include BulletSimN option and description. 2012-12-23 15:44:29 -05:00
teravus
cb4949fc15 * Added third party license for Bullet-xna. 2012-12-23 15:24:15 -05:00
teravus
92e4f9f412 * Initial commit of BulletSimN (BulletSNPlugin). Purely C# implementation of BulletSim. This is designed to be /as close as possible/ to the BulletSim plugin while still being entirely in the managed space to make keeping it up to date easy as possible (no thinking work). This implementation is /slower/ then the c++ version just because it's fully managed, so it's not appropriate for huge sims, but it will run small ones OK. At the moment, it supports all known features of BulletSim. Think of it like.. POS but everything works. To use this plugin, set the physics plugin to BulletSimN. 2012-12-23 15:21:25 -05:00
Melanie
50ee50bcd5 Revert "Whitespace change to trigger bot"
This reverts commit 7b0604dc49.
2012-12-23 19:23:20 +00:00
Melanie
aaf0ad5898 Revert "White space change to trigger bot"
This reverts commit bad9cb918a.
2012-12-23 19:22:15 +00:00
Melanie
bad9cb918a White space change to trigger bot 2012-12-23 19:21:20 +00:00
Melanie
7b0604dc49 Whitespace change to trigger bot 2012-12-23 19:19:46 +00:00
Robert Adams
30807b81cc BulletSim: modify avatar motor code to make falling movement better. Clean up some usages. Disable motor when done. 2012-12-22 17:09:40 -08:00
Robert Adams
144322a7c9 BulletSim: remove post step one-time taints (doesn't make any sense). Rename pre and post step event invocation routines to Trigger* to be consistant. Remove old, unused code. 2012-12-22 17:07:52 -08:00
Robert Adams
16e49035f7 BulletSim: add Enabled parameter and operation to motors. 2012-12-22 17:06:13 -08:00
Robert Adams
3e3c168987 Add helper routine Util.InRange() 2012-12-22 17:04:53 -08:00
Robert Adams
5b2cbc0ae6 BulletSim: remove all special vehicle code from BSScene. Replace per-frame updates for vehicles with per-frame action registration. One fewer special case. 2012-12-21 23:24:31 -08:00
Robert Adams
a54392d7cc BulletSim: remove the movement decay while flying. Made flying slow down over time. 2012-12-21 23:05:05 -08:00
Robert Adams
37fb691ba5 BulletSim: Fix llApplyImpulse so it works after the first impulse. The problem was Bullet deactivating the object between the pushes (when, as far as the physics engine is concerned, it isn't moving). 2012-12-21 23:03:27 -08:00
Robert Adams
3d659fe97d BulletSim: add BSPhysObject code to manage registrations of preStep events. Use same to implement setForce and setTorque so the values are restored at the beginning of each step (since Bullet zeros forces applied last step). Simplify implementation of AddForce and AddTorque by relying on the addition of forces in Bullet. 2012-12-21 17:27:53 -08:00
Robert Adams
6dbf9c8ed4 BulletSim: repair vehicle problems introduced in previous 'improvements'. Fix line endings in BSParams. 2012-12-21 15:21:32 -08:00
Robert Adams
ae4d932e7f BulletSim: Move all the parameter variables, tables and get and fetch logic to a separate, static class for easier addition and to remove all that bulk from the BSScene class. 2012-12-21 13:35:44 -08:00
Robert Adams
2e3e95e846 BulletSim: small fix to avatar movement motor use which keeps avatar from flying up forever. This doesn't fix the overall problem but keeps avatar flying from being totally unusable. 2012-12-21 10:04:12 -08:00
Robert Adams
8c99f63239 BulletSim: avatar movement smoothed with motor that modifies avatar velocity to target velocity. Fails in incorporating physical world effects (gravity) so avatar doesn't fly correctly. 2012-12-21 10:00:03 -08:00
Robert Adams
b4f8a05e9a BulletSim: Better detail logging of VMotor actions. 2012-12-21 09:56:31 -08:00
Robert Adams
750492796d BulletSim: begin movement of parameters from pinned memory block to variables all in managed code. Add note to TODO list to remember to do the rest. Other updates to TODO list. 2012-12-21 09:55:20 -08:00
Robert Adams
9d2f569d60 BulletSim: fix incorrectly defined property changed flag. 2012-12-20 16:06:52 -08:00
Robert Adams
e522bdb96a BulletSim: Check for unspecified TimeScale in BSVMotor and don't scale if not specified. Add test dump routine. Don'e zero current and target values when error goes to zero as the values could be used externally to store the actual target values, etc. 2012-12-20 16:05:33 -08:00
Robert Adams
a5b2539cf9 BulletSim: replace use of funky nullable values for vehicle property update control (m_known* stuff). Bitmaps will be quicker to test and to clear. 2012-12-20 10:32:33 -08:00
Robert Adams
e73dac4deb BulletSim: angularMotorUp working again (seems a little slow as it takes longer than timescale to correct, but getting better). Disabled angularDeflection (need to resolve interactions between angular corrections). Update TODO list. 2012-12-20 10:19:16 -08:00
Robert Adams
b7ad44e3a6 BulletSim: reorganize motor step code to separate error computation allowing subclass for PID error correction. 2012-12-20 08:35:36 -08:00
Robert Adams
a9b9c0f035 BulletSim: improve angularVerticalAttraction calculation to compute angular correction velocity rather than estimating correction (excuse to use trig functions). 2012-12-18 23:05:59 -08:00
Robert Adams
7b84bcfbb8 BulletSim: initial implementation of a PID motor. Not hooked up yet. 2012-12-18 22:59:59 -08:00
Robert Adams
cf89e29ac3 BulletSim: comments and TODO list update 2012-12-18 19:25:51 -08:00
Robert Adams
d15bfcf614 Replace axis rotation numeric constants (STATUS_ROTATE_XYZ) with symbols. Also made it so llSetStatus() can individually enable disable rotation axi using the bitmask of flags. 2012-12-18 19:25:40 -08:00
Justin Clark-Casey (justincc)
ae67435146 Disable UDPPacketBuffer pooling for now to resolve an issue on Windows of interference between incoming packets.
On Windows, concurrent multi-threaded processing of inbound UDP somehow allows different data input processing to interfere with each other.
Possibly the endpoint reference is being switched, though I don't yet know the mechanism.  Not seen on Mono.
Also resolveable by setting RecyclePackets = false or RecycleBaseUDPPackets = false in [PacketPool]
Or async_packet_handling = false in [ClientStack.LindenUDP]
For now, will simply disable this particular pooling though will revisit this issue.
In response to http://opensimulator.org/mantis/view.php?id=6468
2012-12-19 01:51:30 +00:00
Justin Clark-Casey (justincc)
235afebf03 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-17 22:19:42 +00:00
Robert Adams
8653ea93b2 BulletSim: apply friction to linear and angular motion before returning advanced motor value. This seems to be the problem with BulletSim vehicles turning too quickly. Also removed the configuration parameter that controlled the timestep scaling kludge for angular velocity that was added to research the question of quick turning. 2012-12-17 13:51:39 -08:00
Justin Clark-Casey (justincc)
e6fd8365af Extend default 1 second wait for event completion to other thread script reset (as called by llResetOtherScript()).
As with script stop (via llDie()) aborting other scripts event threads, llResetOtherScript() can also abort any current event thread on another script.
On mono 2.6, 2.10 and possibly later this may cause locking problems in certain code areas.
This commit reuses the recently introduced [XEngine] WaitForEventCompletionOnScriptStop to make this a 1 sec timeout, rather than 0 secs.
2012-12-17 21:37:02 +00:00
Robert Adams
11532a4390 BulletSim: fix vehicles going underground when unsat. Problem was that, when doing unsit, the order of operations on the prims and the vehicle is very chaotic and not in a good order so the root prim was being left physical and thus it fell for a bit. Also changed default of velocity scaling to be closer to the movement standard. 2012-12-17 13:22:04 -08:00
Robert Adams
021623a17d BulletSim: fix vehicles being shot in the air at border crossings because of mis-application of correction to postion for below groundness. 2012-12-16 22:31:22 -08:00
Robert Adams
2b8efa24dd BulletSim: add parameter to UpdateProperties call into the linkset so changes from the physics engine can be differentiated from changes made by the user. This eliminates a linkset rebuild loop. Also add logic to not rebuild or freak out when the object/linkset crosses a terrain boundry. 2012-12-16 21:19:13 -08:00
Robert Adams
3f2aaffd4d BulletSim: add even more to the TODO list. 2012-12-16 21:19:13 -08:00
Robert Adams
7ed860d3ac BulletSim: add check for border crossing in character position sanity check. 2012-12-16 21:19:12 -08:00
Robert Adams
4cbc5082ff BulletSim: refactor to combine common terrain height testing code. Add function to test if a position is over known terrain. 2012-12-16 21:19:12 -08:00
Robert Adams
8a95953bb7 BulletSim: experimentally remove unit displacement from prim border crossing test. This seems to cause border crossing to be sensed either a little early or a little late depending on which directin the object is moving. If border crossings become totally borked or someone remembers why this was displacement was done, revert this change. 2012-12-16 21:19:12 -08:00
Robert Adams
21dc5f4a1a Add stack dump function that takes an alternate printer outter. I've found that log4net can be slowish so, if one is generating A LOT of debug output, alternate printers are better 2012-12-16 21:19:11 -08:00
Robert Adams
f3b1efd889 BulletSim: remove some errors on shutdown by moving terrain destruction until after physical object destruction. TerrainManager also made disposable and that feature used. 2012-12-16 21:19:11 -08:00
Robert Adams
ace1f1e931 BulletSim: rip out old code for linkset child position fetching. BulletSim doesn't need to do that bookkeeping because SOG/SOP already does it. 2012-12-16 21:19:10 -08:00
Justin Clark-Casey (justincc)
1a262bdde7 Make WebStatsModule properly handle scenes added or removed after initial startup.
This may have been the cause of the DivByZero in http://opensimulator.org/mantis/view.php?id=6460
2012-12-15 00:45:27 +00:00
Justin Clark-Casey (justincc)
494e6a5f11 minor: If the physics module tells us that an object has gone out of bounds, more helpfully log the name, id, position and region of that object. 2012-12-15 00:30:17 +00:00
Justin Clark-Casey (justincc)
56ec177b3b minor: Add commented out log lines to ScenePresenceAnimator for future debug use (such as logging anim pack contents sent to clients) 2012-12-14 23:42:23 +00:00
Justin Clark-Casey (justincc)
2816551215 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-14 23:29:33 +00:00
Justin Clark-Casey (justincc)
750ad2d3af Fix issue where calling llVolumeDetect(FALSE) would not remove phantom flag, causing subsequent issues if physics was re-enabled.
Added regression tests
Addresses http://opensimulator.org/mantis/view.php?id=6365
2012-12-14 22:15:40 +00:00
Robert Adams
664dad53dd BulletSim: Add more to the TODO list. Clean up and improve some comments. 2012-12-13 23:08:01 -08:00
Robert Adams
469c6c000a Return the last set targetVelocity rather than the current velocity as the default action made available in PhysicsActor.TargetVelocity. Doesn't change any physics operation but makes DSG work better as the targetVelocity value does not keep moving around. 2012-12-13 16:32:25 -08:00
Robert Adams
31d3952477 BulletSim: fix problem with continuious rebuilding of physical linksets. This caused movement problems and large prim vehicles to take up a LOT of simulation time. 2012-12-13 16:32:19 -08:00
Robert Adams
60950bfab5 BulletSim: correct line endings in new BulletSimData.cs file. 2012-12-13 16:32:12 -08:00
Robert Adams
3b2b785a46 BulletSim: Add 'BulletSimData' which separates structures created
for the operation of BulletSim and those defintiions/structures defined
so they can be used in the unmanaged world.
Consolidate setting of collision flags so implementation is not scattered.
2012-12-13 16:32:06 -08:00
Robert Adams
9e0dd9952b BulletSim: remove extra linkset rebuilds. 2012-12-13 16:32:00 -08:00
Robert Adams
4a67b93618 Independently control logging for per region module loading. I just got sick of, when debugging, the zillions of log lines verifying that each module is being added to each region. 2012-12-13 16:31:53 -08:00
Justin Clark-Casey (justincc)
0b93a68030 minor: add some more detail to the logging if an LLClientView fails to process a packet 2012-12-13 23:32:28 +00:00
Justin Clark-Casey (justincc)
3c91d0e00d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-13 23:21:52 +00:00
Justin Clark-Casey (justincc)
523213060b Add WaitForEventCompletionOnScriptStop [XEngine] config param to OpenSimDefaults.ini to allow change of the wait time for an event to complete on script removal before aborting its thread
Default is 1000, as has previously been the case.
This parameter exists for further debug work concerning mono 2.10 crashes that may be related to locks not being removed on Thread.Abort
2012-12-13 23:21:25 +00:00
Dan Lake
88b094cbf7 Simplify sit code a bit by determining correct animation in HandleSit instead of HandleSitRequest. This eliminates m_nextSitAnimation, an unneeded state-saving variable in ScenePresence 2012-12-13 13:05:28 -08:00
BlueWall
6f002733b1 Fix formatting 2012-12-13 13:38:57 -05:00
BlueWall (James Hughes)
5f11b4658e Fix module pathname handling for Windows 2012-12-13 13:15:57 -05:00
BlueWall
203b492fce Update mono addins
Push a small fix for the mono addins
2012-12-13 00:05:34 -05:00
BlueWall
7a87c35f94 Merge branch 'master' of /home/opensim/var/repo/opensim 2012-12-12 23:34:20 -05:00
Justin Clark-Casey (justincc)
8e8da20af2 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-13 01:12:12 +00:00
Justin Clark-Casey (justincc)
6fca93f0b1 Fix sounds so that they play from inventory after teleport rather than only on initial login region.
Regression from commit ed162a10 (Fri Oct 5 13:50:12 2012)
We had started listening for the client login event for attaching the sound trigger event rather than OnNewClient
Addresses http://opensimulator.org/mantis/view.php?id=6453
Many thanks to danbanner for identifying the exact commit where this went wrong, which made identifying the fix easy.
2012-12-13 01:03:35 +00:00
Robert Adams
e1814aa827 BulletSim: fix problem of avatar's floating off the ground after unsitting. Reworked size/scale logic so physical scale is kept in Bullet and physObject scale is the preferred size -- usually same as size but avatars are computed differently. 2012-12-12 16:51:43 -08:00
Robert Adams
6f1f7f0206 BulletSim: non-functional commenting and reorganization of material attribute specifications. 2012-12-12 16:51:36 -08:00
Robert Adams
7bb5613dc6 BulletSim: updates and rearrangement of the TODO list. 2012-12-12 16:51:29 -08:00
Justin Clark-Casey (justincc)
512e4c9313 Log situations where workitem event threads are aborted on stop request because they failed to complete event processing within the given timeout.
This is for bug hunting purposes where thread aborts may be causing dangling lock issues and subsequent vm crashes on mono (with ReaderWriterLockSlim, etc.)
2012-12-12 23:30:26 +00:00
Justin Clark-Casey (justincc)
047270bdc8 Add "debug script log" command to allow setting a numeric debug level on individual IScriptInstances for debugging purposes.
Current, state changes and event fires can be logged for individual scripts.
See command help for more details.
2012-12-12 23:13:34 +00:00
BlueWall
7be13d16c8 Move setting to correct locations in ini 2012-12-12 17:11:30 -05:00
Justin Clark-Casey (justincc)
418c0cb01d Add asset id to "show script" and "show scripts" command output to make it easier to extract and inspect the script's asset via "dump asset" 2012-12-12 22:06:09 +00:00
BlueWall
c5d333c16c Merge branch 'master' of /home/opensim/var/repo/opensim 2012-12-12 16:15:32 -05:00
Robert Adams
bb6eeb5429 BulletSim: do not return the current velocity for targetVelocity. 2012-12-12 11:01:36 -08:00
BlueWall
d7c4f16928 Replace Mono.Addins libraries
Mono.Addins.Setup uses Ionic.Zip for compression. Libraries Compiled on Win32
2012-12-11 21:54:27 -05:00
Robert Adams
a082ce9da7 BulletSim: fix crash caused by the creation of a linkset child that is under the terrain. Users can sure find some interesting corner conditions. 2012-12-11 14:27:09 -08:00
BlueWall
b1849e7fde Hide some console output when initializing addin repository
We do this in OpenSim.exe to hide output when unmanaged dll are scanned by mono addins. Libomv has hard-coded path to "." for the openjpeg libraries, causing output to the console when they are scanned. We will cover this up for now, then look at getting libomv to look for the libs outside the "." later.
2012-12-11 17:03:42 -05:00
Robert Adams
d4e0e98c00 BulletSim: protect character property setting to remove crash from taints setting properties after the destroy character taint. 2012-12-11 13:54:26 -08:00
Robert Adams
63099184db BulletSim: protect prim property setting to remove crash from taints setting properties after the destroy object taint has happened. 2012-12-11 13:42:23 -08:00
Robert Adams
905d7c43ad BulletSim: modify LIMIT_MOTOR_UP to limit BOAT types to be at water rather than ground level. This makes boats float at water level better but not perfectly. There probably needs to be some interaction between HOVER and LIMIT_MOTOR_UP. 2012-12-11 00:35:16 -08:00
Robert Adams
8b861e880a BulletSim: add ini file and command line parameters to control
dumping of physical vehicle parameters (out of Bullet) on each
simulation step and to optionally scale vehicle angular velocity
by the time step. The latter looks to be part of a difference
between angular parameters for ODE and BulletSim. SL docs say
angular velocity is measured in radians/timeScale. Not sure if this
is different than what ODE does.
2012-12-11 00:13:13 -08:00
Robert Adams
ebf30e7ba6 BulletSim: set mass for single prim linksets when going physical. This fixes single prim vehicles not working (the surf board now zooms). 2012-12-11 00:02:20 -08:00
Robert Adams
93393fb975 BulletSim: comment out some chatty debug logging. Rearrange some code in BSDynamics to make velocity vs force calculation clearer. 2012-12-10 16:46:12 -08:00
Robert Adams
9df85eadf4 BulletSim: Fix crash on the destruction of physical linksets.
While fixing the above, add methods to physical body and shape pointer
wrapper so routines won't have to know that IntPtr.Zero means no
physical instance.
Fix problem with physical linksets failing after a few sits and
unsits by properly restoring child prom positions for compound
linksets after multiple selection and deselections.
2012-12-10 15:35:53 -08:00
Robert Adams
a19896cc56 BulletSim: some comments about rebuilding linksets (having to recompute and restore a child's position in the world based on its position in the moved linkset). 2012-12-09 22:32:46 -08:00
Robert Adams
ce5083a504 BulletSim: adjust friction and restitution based on material type. 2012-12-09 22:32:46 -08:00
Diva Canto
af8d53657d HGAssetMapper: Get wasn't really working. It's true that some assets are copied in the process of being gathered their UUID, but not all. Specifically, terminal assets like textures aren't copied. We have to go one more time through the ids. 2012-12-09 22:05:12 -08:00
Diva Canto
b8178f5a50 Switched the order by which foreign inventory and foreign assets are brought in, to avoid race conditions on the client. 2012-12-09 22:03:21 -08:00
Diva Canto
39b388a094 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-09 15:31:50 -08:00
Diva Canto
cb80d8a29c UserManagementModule: search the local cache for names too.
Inventory transfers: don't do async on asset transfers or now.
2012-12-09 15:31:11 -08:00
Diva Canto
5732ce9184 Replaced Mono.Addins dlls with ones compiled in Windows 64-bit. 2012-12-09 15:28:56 -08:00
BlueWall
8efae93b51 Restrict IPresenceData.VerifyAgent
Restrict IPresenceData.VerifyAgent to only return bool result
2012-12-09 15:08:32 -05:00
BlueWall
a37040d07a Merge branch 'master' of /home/opensim/var/repo/opensim 2012-12-08 17:34:08 -05:00
BlueWall
f85b23edea Add agent verification to Presence 2012-12-08 17:33:03 -05:00
BlueWall
bd14fa15e4 Add back openjpeg dll for Windows
May generate some error output during startup on Robust - ignore for now, will fix soon.
2012-12-08 17:15:35 -05:00
Robert Adams
04e64d73df BulletSim: set material properties for static objects. Move Linkset.MakeStatic() after call to ForceActivationState2() since linkset might change activation state. Make BSPrim.CreateGeomAndObject public as linkset rebuilding might need access to it. Only rebuild prim if selection state is actually changes -- OpenSimulator calls PhysObject.Selected() multiple times whenever a prim is selected or deselected. 2012-12-08 09:14:40 -08:00
Robert Adams
216c121935 BulletSim: fix small problem with setting size/scale of native shapes which caused the native shapes to be rebuilt when not necessary. 2012-12-08 09:14:34 -08:00
Robert Adams
addb791f3d BulletSim: update comments and add more to TODO list. 2012-12-08 09:14:28 -08:00
Justin Clark-Casey (justincc)
8de9f9dd4a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-08 01:37:10 +00:00
Justin Clark-Casey (justincc)
63cff49bce Re-enable code disabled in f605a62 to allow a TaskInventoryAccepted message to nominate a non-root destination folder.
This is in relation to http://opensimulator.org/mantis/view.php?id=6311
This is after further analysis which shows the viewer expects the server to move the folder for #RLV give but then should be renaming the folder itself.
For some reason this is not happening, possibly because we are not sending BulkUpdates or because we are not using transaction IDs properly.
This needs to be fixed in the future.
However, moving the folder even if the rename isn't correctly triggered in the viewer seems preferable to disabling this code altogether.
2012-12-08 01:29:58 +00:00
BlueWall
77e88fab06 Format change
Removed some white space in a line, looking to trigger a build
2012-12-07 20:19:16 -05:00
BlueWall
063f37cf73 One more time...
needed one more "../" in the path (copy paste): Thanks BrucePatton for catching that one
2012-12-07 20:03:15 -05:00
BlueWall
a6e5a2f4df Prebuild fix
Had moved the class to a different namespace but failed to add the reference
2012-12-07 19:41:07 -05:00
BlueWall
cba1390ffd Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-07 16:56:03 -05:00
Diva Canto
16d18afe21 Added missing config var in grided sims. 2012-12-07 12:38:19 -08:00
BlueWall
0b455d2882 Merge branch 'master' into connector_plugin 2012-12-07 15:36:43 -05:00
Diva Canto
3c9f8c9c46 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-06 20:04:59 -08:00
Diva Canto
8b29db98bd Trying to prevent old route of sending attachments, simulator version unknown maybe due to timeout. mantis #6450 2012-12-06 20:04:32 -08:00
Justin Clark-Casey (justincc)
4e622f6816 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-07 00:53:47 +00:00
Justin Clark-Casey (justincc)
0568c76a88 Use a thread abort safe version of OpenMetaverse.DoubleDictionary with the aim of avoiding OpenSimulator problems due to script thread aborts.
When an object is removed, its scripts are stopped and then the thread running them is aborted if stop takes too long.
However, it appears that aborting a thread at just the wrong moment when it is obtaining a ReaderWriterLockSlim lock can leave this lock in an inconsistent state.
One symptom of this is that mono leaps to 100% cpu and a vm thread dump reveals lots of threads waiting for a ReaderWriterLockSlim lock without any thread actually holding it.
This is probably the same problem as encountered originally in commit 12cebb12
This commit looks to plaster this problem by putting lock obtaining methods inside finally blocks which should be uninterruptible by thread aborts.
2012-12-07 00:47:04 +00:00
Robert Adams
707e186aa3 BulletSim: update DLLs and SOs with vehicle collision event check 2012-12-06 09:34:30 -08:00
Robert Adams
7fd8202ae3 BulletSim: rewrite and improve vehicle angularDeflection, verticalAttraction,
linearMotorUp and related vehicle forces.
Fixed problems with downward vehicle position correction forces being too large.
Add vehicle collision flag so can sense whether vehicle is on the ground.
2012-12-06 09:31:12 -08:00
Robert Adams
edd1b353a5 BulletSim: update and add to the TODO list. 2012-12-06 09:31:05 -08:00
Robert Adams
18fe35906d BulletSim: add detail logging detail flag so I don't have to comment and uncomment the detail logging when changing the depth of logged info. 2012-12-06 09:30:57 -08:00
Robert Adams
cc59e3cbdf BulletSim: only check position sanity if the prim is physical -- the user can do anything dumb they wish. 2012-12-06 09:30:50 -08:00
Robert Adams
2ecd8e6720 BulletSim: add values for material friction and restitution. Fix line endings in material definition file. 2012-12-06 09:30:42 -08:00
Robert Adams
6d7f66f781 BulletSim: Don't add gravity to down force -- let Bullet do that. Add VehicleAddForce to set of managed vehicle prim properties. 2012-12-06 09:30:35 -08:00
Robert Adams
e599a8b242 BulletSim: Vehicle angular vertical attraction works. Other vehicle angular forces commented out for the moment for debugging. 2012-12-06 09:30:28 -08:00
nebadon
f1d4e8f792 fix openjpeg on 64 bit OSX we were pointing to a file taht did not
exist.
2012-12-06 09:52:18 -07:00
Justin Clark-Casey (justincc)
68daeee434 minor: change method doc on GetTextureHandler.TryParseRange(), mainly to trigger another build 2012-12-06 01:36:30 +00:00
Justin Clark-Casey (justincc)
acc01bb85d Allow GetTexture calls with no second value in the range header (e.g. just 5333-)
It looks like the latest Kokua is doing this.
As per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, leaving off the second value is legal
This indicates the caller wants the rest of the entity.
2012-12-06 01:12:12 +00:00
Justin Clark-Casey (justincc)
1c9ecc55d3 Instead of printing script errors out to console, put to debug log so that we also get timestamps.
This commit also adds script name, part name, uuid, etc. for later identification.
This information has been sent to console since 2009 but may be turned down if it proves too noisy.
However, I still currently need it to investigate some region problems probably triggered by scripting.
2012-12-06 00:22:52 +00:00
Justin Clark-Casey (justincc)
e60fe958df minor: Fix more compiler warnings in CoreModules tests by properly overriding OpenSimTestCase.SetUp() 2012-12-05 23:44:12 +00:00
Justin Clark-Casey (justincc)
ec765de7e5 Add engine-wide events queued and events processed numbers to output of "xengine status" console command. For debugging purposes. 2012-12-05 23:41:50 +00:00
Justin Clark-Casey (justincc)
66982c8a59 Remove some mono warnings in script tests, chiefly where SetUp() wasn't properly calling to OpenSimTestCase.SetUp() 2012-12-05 23:36:15 +00:00
Justin Clark-Casey (justincc)
5ba99cbf55 Add IScriptInstance.EventsQueued to match EventsProcessed instead of asking callers to lock and directly inspect the EventQueue 2012-12-05 23:33:48 +00:00
Justin Clark-Casey (justincc)
652f4bcb42 For now, sort "show scripts" output in descending order sorted by events processed.
For debug purposes - should later add options to allow different sorting or show only highest 10, etc.
2012-12-05 23:27:50 +00:00
Justin Clark-Casey (justincc)
e8df0f1b4c Add IScriptInstance.EventsProcessed stat so that we can record this information and display in "show scripts" for debug purposes 2012-12-05 22:33:46 +00:00
Justin Clark-Casey (justincc)
0f3ebe0971 Remove very probably unused PrimitiveBaseShape(bool) constructor to reduce code complexity 2012-12-05 22:12:45 +00:00
Justin Clark-Casey (justincc)
b60c6bc3f8 Don't pointlessly set ExtraParams = byte[1] in PrimitiveBaseShape since this is ignored by the ExtraParams properly anyway 2012-12-05 22:01:47 +00:00
Justin Clark-Casey (justincc)
2342d20a7e minor: tidy up spacing at bottom of MundaneFrameworkTests 2012-12-05 21:53:25 +00:00
Justin Clark-Casey (justincc)
fdf8876e20 In BaseHttpServer.HandleRequest(), use Culture.SetCurrentCulture() rather than creating a new CultureInfo separately 2012-12-05 21:52:10 +00:00
Justin Clark-Casey (justincc)
ea786414c2 In XEngine.DoOnRezScript() use Culture.SetCurrentCulture() instead of constructing a new CultureInfo separately 2012-12-05 21:51:08 +00:00
Justin Clark-Casey (justincc)
d97440c7cf On XEngine.ProcessEventHandler(), instead of creating a new CultureInfo on every call use the single one set by Culture.SetCurrentCulture()
This is slightly different in that SetCurrentCulture() does not use overridden settings if the system culture matches en-US but some settings there have been changed.
This is what we want - we do not want to use any system overriden settings.
2012-12-05 21:40:28 +00:00
Justin Clark-Casey (justincc)
1b5f21f761 minor: also comment out the debug log message which reports searching for child agents in simulator scenes for now. 2012-12-04 23:07:26 +00:00
Justin Clark-Casey (justincc)
0d4047e641 minor: Comment out "Delivering IM to..." messages for now. 2012-12-04 23:06:02 +00:00
Justin Clark-Casey (justincc)
fb26d32a5c minor: Put Scene.PhysicsRequestAsset() into standard C# xml format. 2012-12-04 22:33:25 +00:00
Justin Clark-Casey (justincc)
7fdc251774 Add path references for Mono.Addins where they were missing for DataSnapshot and UserStatistics.
Should address http://opensimulator.org/mantis/view.php?id=6444
Appears that nant doesn't need these paths but building directly in monodevelop does.
2012-12-04 22:24:51 +00:00
Diva Canto
583e44103c Bug fix in OfflineMessageModule. Mantis #6446 2012-12-04 08:36:54 -08:00
Diva Canto
a4821c5e01 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-04 08:08:58 -08:00
Diva Canto
dc80c2afb3 Improvement in HGInstantMessageService: account for the existence of an offline IM service. 2012-12-04 08:08:34 -08:00
BlueWall
0c7d6adef1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-12-03 20:17:00 -05:00
BlueWall
ac65085cc3 XmlRpcGridRouter
Flesh out XmlRpcGridRouter to reap unused channels from gateway when scripts or objects are removed, or when the llCloseRemoteDataChannel is called.

  See: http://http://forge.opensimulator.org/gf/project/xmlrpcrouter/ or
       https://github.com/BlueWall/XmlRpcRouter

  for php gateway and test code.
2012-12-03 20:16:44 -05:00
Robert Adams
787636b97a BulletSim: Reduce idle region physics overhead where there are MANY
static objects by more restrictive selection of objects that collide
    with static objects.
Rename collision mask fuctions from 'filter' to 'group' so it is clear
    what is being set.
Rename BulletSimAPI.SetCollisionFilterMask() to SetCollisionGroupMask to match above.
Restore passing of time step to linear and angular motion component routines.
Use buffering vehicle physical parameter get/set routines consistantly.
Make range enforcement clearer by using ClampInRange() function for parameter setting.
Remove commented out experimental vehicle calculations.
2012-12-03 16:25:51 -08:00
Robert Adams
41f1c5b7f7 BulletSim: rework angular corrections to remove any hybrid code and compute absolute collections. 2012-12-03 07:59:56 -08:00
Robert Adams
2586bab2dd BulletSim: add stubs for generalization of preStep actions. Will eventually replace the specialized vehicle processing with preStep event processing. Add TODO comments about this feature. Redo line endings in TODO file to be all Linux. 2012-12-03 07:59:52 -08:00
Robert Adams
dc0497c1b8 BulletSim: begin tracking a TODO list. There just are so many things to remember to do. 2012-12-03 07:59:49 -08:00
Robert Adams
10fcc70b36 BulletSim: revert angular vertical attraction from motor to code. The motor code did not return the restoring difference but the current value. Remove unused commented out code. 2012-12-03 07:59:46 -08:00
Robert Adams
f9fed421fe BulletSim: format vehicle detail logging messages so vehicle changs are grouped better in the log output. 2012-12-03 07:59:42 -08:00
Robert Adams
20c3ec7d92 BulletSim: localize vehicle property setting so the vehicle prim is only updated at the end of the vehicle simulation step and the push of the physics property update event only happens if the properties are actually changed. 2012-12-03 07:59:39 -08:00
Robert Adams
b124aae05e BulletSim: Add DumpActivationInfo2 function. Change static objects from DISABLE_SIMULATION to ISLAND_SLEEPING. Update DLLs and SOs to add DumpActivationInfo2 function. 2012-12-01 15:39:13 -08:00
Robert Adams
ec63e4ff29 BulletSim: remove time scaling of computed vehicle absolute velocity since Bullet will scale the movement by the time slice. Restore LIMIT_MOTOR_UP to definitition of BOAT simce some vehicle engines use it even for land vehicles. Push vehicle parameter updates through the regular property update to solve vehicles floating off when they should be stopped. 2012-11-29 22:21:45 -08:00
Robert Adams
0bda35e18f BulletSim: add copyright header where it is missing. Remove some unnecessary 'using' requirements so testing framework is less complicated. 2012-11-29 09:53:59 -08:00
Robert Adams
0cd99c74a7 BulletSim: add expanded call to IMesher/Meshmerizer which enables/disables mesh caching. Since BulletSim caches and tracks the unmanaged memory version of meshes, the Meshmerizer itself does not need to cache built meshes once BulletSim has made the physical proxy mesh. 2012-11-29 09:24:53 -08:00
Robert Adams
b8a7cbb9e9 BulletSim: reverse direction of hover correction. Removes problem with vehicles being orbited. 2012-11-29 08:03:30 -08:00
Robert Adams
2ccd4c1302 BulletSim: fix boats floating low by removing LIMIT_MOTOR_UP flag from TYPE_BOAT definition. 2012-11-28 09:48:48 -08:00
Robert Adams
24b3b4df2e BulletSim: update DLLs and SOs to remove simulator crash when calling SetInterpolationAngularVelocity. 2012-11-28 09:48:41 -08:00
Robert Adams
0a66317fa6 BulletSim: move GetWaterLevelAtXYZ from BSScene to BSPhysTerrain. 2012-11-28 09:48:33 -08:00
Diva Canto
d656ec8f33 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-27 21:11:19 -08:00
Diva Canto
92a766e8cb Bug fix in Offline IM for inventory transfers. The items were being placed twice in the receiver's inventory. 2012-11-27 21:10:58 -08:00
Justin Clark-Casey (justincc)
aae76f7be4 Stop logging spurious asset data for {0} is zero length error for sculpts/mesh
ODEPrim, for instance, always hits this code path twice at the moment
Firstly before any sculpt data has been loaded (hence the spurious message)
Secondly when any sculpt data has been loaded or failed to load (when the message would be valid).
Hence comment this out and rely on the message in ODEPrim.MeshAssetReceived() instead
(though this is not ideal since it requires all physics plugins to copy/paste similar code).
2012-11-28 02:01:04 +00:00
Justin Clark-Casey (justincc)
8a1d3b322f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-28 02:00:34 +00:00
Justin Clark-Casey (justincc)
c17ea2049b Show many more primitive properties on console command "show part name/id/pos" 2012-11-28 01:42:58 +00:00
Diva Canto
a82f699f43 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-27 14:43:01 -08:00
Diva Canto
2cd88787af Prevent the core Groups module from being enabled when its name doesn't match the "default" ini choice 2012-11-27 14:42:28 -08:00
Robert Adams
8e459a0346 BulletSim: reorganize linear movement routine into separate subroutines enabling external calibration routines and unit tests. 2012-11-27 10:04:00 -08:00
Robert Adams
a5100cafee BulletSim: fix terrain mesh generation for problem with regions that have unequal edge heights. Thanks UBit. 2012-11-27 10:03:55 -08:00
Robert Adams
68fe7dff20 BulletSim: reorganize angular movement routine into separate subroutines enabling external calibration routines and unit testing. 2012-11-27 10:03:49 -08:00
Robert Adams
59554758b1 BulletSim: implementation of vertical attraction motor. 2012-11-27 10:03:44 -08:00
Robert Adams
9e0db36c82 BulletSim: add 'infinite' timescale that does not reduce motor target or friction. 2012-11-27 10:03:38 -08:00
Justin Clark-Casey (justincc)
16e4019eca Fix database service unit test failures by temporarily reverting BasicDataServiceTest extending OpenSimTestCase.
Mono 2.4.3 doesn't like this when running nunit, with nunit throwing
AssetTests`2 : System.MemberAccessException : Cannot create an instance of OpenSim.Data.Tests.AssetTests`2[TConn,TAssetData] because Type.ContainsGenericParameters is true.
and similar.  Mono 2.10.8.1 does not have this issue.
So will wait until min version of mono bumps before restoring.
2012-11-26 22:25:36 +00:00
Robert Adams
5685b33071 BulletSim: increase vehicle stability by suppressing Bullet's update to angular velocity. 2012-11-26 10:47:34 -08:00
BlueWall
88f2fbc8f1 Merge branch 'master' into connector_plugin 2012-11-26 06:55:03 -05:00
Robert Adams
084e3926ca BulletSim: use m_angularMotor to do the basic movement. Add the setting of same. Rename the angular forces and add comments to match MoveAngular to the form of MoveLinear. 2012-11-25 20:04:33 -08:00
Robert Adams
d7126a14e1 BulletSim: up the vehicle angular damping to 0.95. Still trying to overcome the movement added by Bullet. 2012-11-25 20:04:33 -08:00
Robert Adams
4c077a0694 BulletSim: organize MoveLinear code for understandability. Make LIMIT_MOTOR_UP contribution a velocity and not a force. 2012-11-25 20:04:32 -08:00
Robert Adams
f977131fe0 BulletSim: add ToString override to BSVMotor. 2012-11-25 20:04:32 -08:00
Robert Adams
319ec3235c BulletSim: add BSVMotor as BSDynamics linear motor.
Properly limit *_MOTOR_DECAY_TIMESCALE to 120 as per specs.
Invode BSDynamics.Refresh() when vehicle type is changed. Previously
   the vehicle properties weren't getting set because the physical
   properties were set before the vehicle type was set.
Add a "use name" to BSMotors for identification while debugging.
Correct current and target confusion in BSVMotor design.
Rename CurrentValueReductionTimescale to FrictionTimescale.
Event more detailed logging.
2012-11-25 20:04:31 -08:00
Robert Adams
bd635e264a BulletSim: update DLLs and SOs with new collision margin setting function. 2012-11-25 20:04:31 -08:00
Robert Adams
9b98011714 BulletSim: update OpenSimDefaults.ini with current default values for friction and collision margin. Remove some of the BulletSim parameters that are very esoteric and dangerous. Most of the remaining parameters are features one can 'see'. 2012-11-25 20:04:30 -08:00
Robert Adams
980edabc2e BulletSim: clean up TODO list. It is kept somewhere wlse that should be more public. Add error logging for the detail log writer so a message is output when it cannot write to the specified logging directory. Modify friction defaults to be closer to ODE's values. Add new collision margin and vehicle angular damping parameters. 2012-11-25 20:04:29 -08:00
Robert Adams
9a42405944 BulletSim: small change to add position correction force with AddForce rather than just storing it in the variable 2012-11-25 20:04:28 -08:00
Robert Adams
22d5bf8ff9 BulletSim: complete vector motor. Correct line endings. 2012-11-25 20:04:28 -08:00
Robert Adams
d1480ac7ee BulletSim: add terrain collision margin and vehicle angular damping
parameters to the parameter block.
New API call for setting collision margin.
2012-11-25 20:04:27 -08:00
Robert Adams
c3f30fef96 BulletSim: add parameter for terrain collision margin.
Add locking around unlikely but possible race conditions on terrain list.
2012-11-25 20:04:27 -08:00
Robert Adams
4ae30873ad BulletSim: Add tables and initialization for different attributes for different materials. For the moment, the per material tables are not used. 2012-11-25 20:04:26 -08:00
BlueWall
c754003944 Merge branch 'master' into connector_plugin
Conflicts:
	OpenSim/Server/Base/ServicesServerBase.cs
2012-11-25 17:03:14 -05:00
Justin Clark-Casey (justincc)
02db8b9adb Combine TestDeleteSceneObjectAsync() with TestDeRezSceneObject() as they are functionally identical.
Move TestDeleteSceneObjectAsync() and TestDeleteSceneObjectAsyncToUserInventory() from SceneObjectBasicTests -> SceneObjectDeRezTests
2012-11-24 03:49:23 +00:00
Justin Clark-Casey (justincc)
a4ce63d0cd Fix regression TestDeleteSceneObjectAsyncToUserInventory by adding a BasicInventoryAccessModule() and re-enable in test suite. 2012-11-24 03:38:15 +00:00
Justin Clark-Casey (justincc)
22d4c52ffc Consistenly make NUnit test cases inherit from OpenSimTestCase which automatically turns off any logging enabled between tests 2012-11-24 03:15:24 +00:00
Justin Clark-Casey (justincc)
e9be85442f In ArchiverTests, use the local instantiated SceneManager rather than potentially cross-contaminating tests by relying on the static SceneManager.Instance 2012-11-24 02:57:43 +00:00
Justin Clark-Casey (justincc)
82690e1384 Fix bug where loading an OAR with a deeded parcel would always set the parcel owner ID to the estate owner even if the group UUID was present.
Aims to address http://opensimulator.org/mantis/view.php?id=6355
As part of this work, an incomplete IXGroupsData was added which currently only allows store/fetch/delete of group records
(i.e. no membership data etc)
This is subject to change and currently only an in-memory storage implementation exists for regression test purposes.
2012-11-24 02:43:31 +00:00
Justin Clark-Casey (justincc)
cda531bc3c minor: Add some currently commented out debug log lines for investigating issues resolving group IDs for land parcels on OAR loading where groups do not exist 2012-11-23 05:44:31 +00:00
Justin Clark-Casey (justincc)
999cb4b20c Make "show threads" and "thread abort" console commands available on all servers 2012-11-23 04:40:49 +00:00
Justin Clark-Casey (justincc)
e0a3e01850 Make "force gc" console command available across all servers 2012-11-23 04:27:04 +00:00
Justin Clark-Casey (justincc)
4b46a0d536 Make "show version" console command available across all servers 2012-11-23 04:19:08 +00:00
Justin Clark-Casey (justincc)
065d6d6fe1 Delete unused BaseHttpServer.HandleAgentRequest() 2012-11-23 04:15:21 +00:00
Justin Clark-Casey (justincc)
edbdbd44b9 Enable further client stack packet pooling by default by setting RecycleBaseUDPPackets = true by default.
This reduces base memory churn of every client connection, improving the garbage collection situation.
The effect is a significant portion of base load (an avatar standing still on a completely blank island)
but will probably still be swallowed up by other memory use on active regions.
Tests have shown no noticeable impact on speed of processing incoming packets, though setting remains
in case a switch back is needed.
2012-11-23 04:09:45 +00:00
Justin Clark-Casey (justincc)
acc1810af2 minor: remove some mono compiler warnings 2012-11-23 04:08:17 +00:00
Justin Clark-Casey (justincc)
1f336579c8 minor: Make note in log if scene was restarted due to an unrecoverable physics error 2012-11-23 04:06:48 +00:00
Justin Clark-Casey (justincc)
f473252fa8 Add AllowRegionRestartFromClient setting to [EstateManagement] section of OpenSim.ini.
Setting this to false will block all restart requests from the viewer even if they are otherwise legitimate.
One use is to block region restarts if necessary whilst restart functionality remains buggy or triggers bugs in modules,
though these should be fixed as soon as practicable.
Default is true, as has been the case historically.
2012-11-23 03:56:53 +00:00
Justin Clark-Casey (justincc)
36c6edac69 Remove the redundant BypassPermissions() checks in EstateManagmentModule.
This is repeated in the PermissionsModule and checking it earlier does not allow a force override of the bypass value
2012-11-23 03:29:50 +00:00
Justin Clark-Casey (justincc)
9b60c14bb1 minor: Add some console feedback on region restart and log who requested a region restart if done from the viewer. 2012-11-23 03:05:30 +00:00
Justin Clark-Casey (justincc)
8c8c8a00a4 Fix problem where restarting the currently selected region would stop various console commands (e.g. "show users") from working.
This was because the "currently selected" scene reference was being left as the dead scene instead of the restarted Scene object.
2012-11-23 02:22:30 +00:00
Justin Clark-Casey (justincc)
049987925d Add regression test for checking scene close when SceneManager is asked to close 2012-11-23 02:05:30 +00:00
Justin Clark-Casey (justincc)
eb1921ff93 Add "help all" console command which will list all commands alphabetically in a single list 2012-11-23 01:52:48 +00:00
justincc
7133b6bb4f Fix recent windows build break.
Add missing OpenSim.Framework.Servers reference
2012-11-23 01:43:11 +00:00
Justin Clark-Casey (justincc)
61808d148e Fix regression where we stopped closing scenes on simulator exit.
If we don't do this, then these scenes don't get deregistered from the grid, amongst other things.
Regression was introduced in commit 8c130bc (Mon Nov 12 22:50:28 2012 +0000)
2012-11-23 01:01:39 +00:00
Melanie
3b2caa63b0 Rename BulletSim's PhysicsShapeType to BSPhysicsShapeType because it
conflicts with PhysicsShape type defined in later libOMV
2012-11-22 14:45:41 +00:00
Justin Clark-Casey (justincc)
3ce00e97cc Factor out command script code.
This also allows comments in command scripts (lines starting with ;, # or //) to be used across all servers
2012-11-22 05:57:20 +00:00
Justin Clark-Casey (justincc)
9fcf3f1a3f Make "config show/set/get/save" console commands available on all servers 2012-11-22 05:48:41 +00:00
Justin Clark-Casey (justincc)
8269d2b893 Factor out common pid file creation and removal code.
Log path at which pid file is created or reason for failure to create.
2012-11-22 05:14:43 +00:00
Justin Clark-Casey (justincc)
42e87a6582 Add "get log level" command - this returns the current server session console logging level.
This supersedes getting information by calling "set log level" without a 4th argument, which is confusing.
2012-11-22 04:57:45 +00:00
Justin Clark-Casey (justincc)
34ff96a119 Remove unused BaseOpenSimServer.ShowHelp() 2012-11-22 04:52:29 +00:00
Justin Clark-Casey (justincc)
4c4379b50f Make "set log level" command available across all servers 2012-11-22 04:50:09 +00:00
Justin Clark-Casey (justincc)
45d1e6ab09 Make "show info" command available across all servers
This helpfully lists version information, startup location and console log level
2012-11-22 04:45:53 +00:00
Justin Clark-Casey (justincc)
cf03d6ea92 Factor out common registration of "show uptime" command 2012-11-22 04:11:03 +00:00
Justin Clark-Casey (justincc)
5c48d7a378 factor out common HandleShow code for "show uptime" 2012-11-22 04:05:09 +00:00
Justin Clark-Casey (justincc)
74a20a62ee refactor: Factor out copy/pasted server uptime report code 2012-11-22 03:43:21 +00:00
Justin Clark-Casey (justincc)
448811ccdd If an asset POST does not contain well-formed XML, return a 400 (Bad Request) HTTP status rather than simply dropping the request. 2012-11-22 03:03:37 +00:00
Justin Clark-Casey (justincc)
33a4f07c4e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-22 03:01:26 +00:00
Robert Adams
56ef180c92 BulletSim: update DLLs and SOs. No functional changes. Only the parameter block format changed. 2012-11-21 16:44:02 -08:00
Robert Adams
cbc7e7bf85 BulletSim: Make avatar capsule so it is not circular.
Simple attempt to make avatars better shaped.
Replace parameter 'avatarCapsuleRadius' with 'avatarCapsuleWidth'
and 'avatarCapsuleDepth'.
More tweeking to avatar height calculation. A little better but
short avatar's feet are above the terrain and tall avatar's feet
are a little below the ground.
2012-11-21 16:43:53 -08:00
Robert Adams
4a0de01704 BulletSim: Properly position mesh terrain on creation (fixes terrain not appearing to be working). Centralize terrain shape creation logic. Remove very chatty detail log messages. 2012-11-21 16:43:45 -08:00
Robert Adams
a59368c4a1 BulletSim: add terrainImplementation parameter with default to Mesh. 2012-11-21 16:43:37 -08:00
Robert Adams
2dc7e9d3fa BulletSim: fix line endings to be all Linux style (windows style keeps creeping in) 2012-11-21 16:43:29 -08:00
Robert Adams
34cbc738a8 BulletSim: enablement and debugging of mesh terrain. 2012-11-21 16:43:21 -08:00
Robert Adams
71b9640dfa BulletSim: pull heightmap implementation out of the terrain manager so a mesh terrain can be implemented. 2012-11-21 16:43:14 -08:00
Robert Adams
8dd5813889 BulletSim: rename SHAPE_AVATAR to SHAPE_CAPSULE with the eye to eventually having mesh avatars. 2012-11-21 16:43:06 -08:00
Robert Adams
65e55ada87 BulletSim: uplevel FixedShapeKey out of ShapeData structure (since it is getting simplified out of existance someday) and update all the references to same. 2012-11-21 16:42:58 -08:00
Robert Adams
d6db0d5740 BulletSim: uplevel PhysicsShapeType out of ShapeData structure (since it is getting simplified out of existance someday) and update all the references to that enum. 2012-11-21 16:42:50 -08:00
Robert Adams
4d29488216 BulletSim: change PositionSanityCheck to apply a force to correct position corrections (below ground and floating). 2012-11-21 16:42:42 -08:00
Robert Adams
2f5fe4b88e BulletSim: tweek avatar capsule parameters so avatar feet don't go below ground. This solves the bouncing, short avatar problem (Mantis 6403). 2012-11-21 16:42:34 -08:00
Justin Clark-Casey (justincc)
bac8ac32da Add regression test for a good request made to the asset service post handler.
Adds new OpenSim.Server.Handlers.Tests.dll to test suite
2012-11-21 23:42:34 +00:00
Justin Clark-Casey (justincc)
f656adee31 If GetAgents() is called with an empty userIDs array then don't bother with a useless potentially network call on the scene presence service connector.
This also eliminates the "[PRESENCE HANDLER]: GetAgents called without required uuids argument"
which has started to pop up in the logs when a call is made with an empty uuid array as occasionally happens.
2012-11-20 10:22:49 +00:00
Justin Clark-Casey (justincc)
ea65a64f7b refactor: Move common presence connector code into BasePresenceServiceConnector 2012-11-20 10:11:57 +00:00
Justin Clark-Casey (justincc)
5aec4f6dd0 Add Iain Oliver to CONTRIBUTORS.txt 2012-11-20 05:15:04 +00:00
Justin Clark-Casey (justincc)
597a101b9f Minor formatting for 0962a35d and a few one-line comments as to why that code is there 2012-11-20 05:09:44 +00:00
Iain Oliver
0962a35d2f Fix movetotarget on mega regions. 2012-11-20 04:54:13 +00:00
Justin Clark-Casey (justincc)
dc5711ad62 minor: If logging full incoming HTTP data, don't deceptively print ... at the end of the body. 2012-11-20 04:10:03 +00:00
BlueWall
665f79e15c Expose configuration options for the XmlRpcGridRouter
Expose configuration options for the XmlRpcGridRouter to allow simulators to register llRemoteData channels with an external routing service
2012-11-19 21:51:37 -05:00
Robert Adams
6c961d8add BulletSim: Use base class constructors for initialization of BSShape and other classes. 2012-11-18 22:58:36 -08:00
Robert Adams
22be36be69 BulletSim: fix the problem with flying being disabled when crossing region boundries. 2012-11-18 22:57:26 -08:00
Robert Adams
079a1e704f BulletSim: remove the obsolete interface to the Bullet code. Update BulletSim libraries with code stripped of the obsolete code. 2012-11-18 18:17:30 -08:00
Justin Clark-Casey (justincc)
5b79bfc4df Remove old InventoryService, which has for a long time been replaced by XInventoryService. 2012-11-17 01:32:01 +00:00
Justin Clark-Casey (justincc)
392e84e554 Remove unnecessary ability to directly set InventoryItemBase.CreatorIdAsUuid
This was necessary historically but hasn't been for many years.
Can still get CreatorIdAsUuid, which is really just a UUID cached version of the string CreatorId
2012-11-17 01:23:29 +00:00
Justin Clark-Casey (justincc)
2aa58c5843 Do not allow invariants to change on calls to XInventoryService.UpdateItem()
This is to help track down http://opensimulator.org/mantis/view.php?id=6359 where creator IDs on items and rezzed objects have been reported to sometimes change.
This should never happen - a particular item should never change creators (if an item is given then a new item (with new id) is created).
Invariants are inventory type, asset type, folder (changed only on MoveItems()), CreatorIdentification and Owner.
If caller attempts to change an invariant, warning is logged but other properties are still changed.
If you see this warning, reporting on Mantis 6359 would be very welcome with the exact operation being done at the time.
2012-11-17 01:01:14 +00:00
Justin Clark-Casey (justincc)
e25c51330a Add basic XInventoryServicesTests.TestAddItem() regression test. 2012-11-17 00:12:25 +00:00
Justin Clark-Casey (justincc)
55f889cc66 refactor: Move stat classes out of StatManager and into their own files for clarity. 2012-11-16 05:02:06 +00:00
Justin Clark-Casey (justincc)
cbc635a9c6 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-16 04:48:55 +00:00
Justin Clark-Casey (justincc)
cd088757e9 Add a first draft mechanism for the IncomingPacketsProcessedStat to show the delta over time.
The chief motivation for this is to be able to tell whether there's any impact on incoming packet processing from enabling extra packet pooling.
2012-11-16 04:36:22 +00:00
Diva Canto
df62d113ab The last few AssemblyInfos. Finished! 2012-11-14 21:18:18 -08:00
Justin Clark-Casey (justincc)
350cd58e5e refactor: move common inventory folder version update code to parent class in mysql, mssql and sqlite database plugins 2012-11-15 04:01:30 +00:00
Justin Clark-Casey (justincc)
16dd94b956 Improve inventory folder version updating for mssql database plugin.
I am not in a position to test this so the updates have been done blind.
If it needs any fixing will probably require patches.
2012-11-15 03:39:17 +00:00
Justin Clark-Casey (justincc)
0c4efdc6a8 Fix build break from 1aa0271 by adding System.Core to prebuild.xml 2012-11-15 03:32:03 +00:00
Justin Clark-Casey (justincc)
1aa0271239 Implement folder version updating for the sqlite inventory plugin 2012-11-15 03:29:55 +00:00
Justin Clark-Casey (justincc)
daf03bfb56 Handle Map block requests on a separate thread rather than the main packet handling thread.
This prevents a slow grid information network call from holding up the main packet handling thread.
There's no obvious race condition reason for not doing this asynchronously.
2012-11-15 03:09:20 +00:00
Justin Clark-Casey (justincc)
57273ef7b2 Do HandleMapLayerRequest on its own thread rather than on the main inbound udp packet handling thread.
There's no obvious race condition reason for doing this on the main packet handling thread.
2012-11-15 03:07:45 +00:00
Justin Clark-Casey (justincc)
df4da51f04 Following on from 4f982596, launch map name requests on an async thread from LLClientView directly.
This releases the inbound packet handling thread marginally quicker and is more consistent with the other async packet handling
2012-11-15 03:04:46 +00:00
Justin Clark-Casey (justincc)
038528dc80 Make PacketPool class stats pull stats instead of push stats so they can be lifted up into LLUDPServer and be distiguished by scene name 2012-11-15 02:02:59 +00:00
Justin Clark-Casey (justincc)
2c36106675 Add IncomingPacketsProcessedCount stat for diagnostics.
Also puts some packet processing counts in a container named after the scene so that stats can be collected from more than one scene.
2012-11-15 01:14:18 +00:00
Diva Canto
35fd4474b2 Added AssemblyInfos in the OpenSim.Server namespace dlls. 2012-11-14 11:20:55 -08:00
Diva Canto
aeeaa3a0a9 Added AssemblyInfos to every dll in the OpenSim.Region namespace. 2012-11-14 11:09:43 -08:00
Diva Canto
27b12cebbb A few more AssemblyInfos in a few more dlls. 2012-11-14 08:10:15 -08:00
Diva Canto
fcaddd901c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-14 07:50:58 -08:00
Diva Canto
c88e6fb445 Possibly fixes mantis #6429 (Flotsam cache having a null ref to the asset service) 2012-11-14 07:50:19 -08:00
Justin Clark-Casey (justincc)
94da908813 More consistently dispose of SqliteCommand in OpenSim.Data.SQLite where possible.
Not doing SQLiteInventoryStore since this is no longer used and should disappear in the future.
2012-11-14 04:45:59 +00:00
Justin Clark-Casey (justincc)
2ccb53b42d If no ISimulationDataStore or IEstateDataStore implementations could be loaded then halt with informative message rather than a later NRE.
Halt already occurs if the relevant config sections are not present.
So it also makes sense to halt if the implementations themselves cannot be loaded.
2012-11-14 04:17:39 +00:00
Diva Canto
790b595aa0 Added a few more AssemblyInfos. (Plus added the one in OptionalModules, which had been forgotten.) 2012-11-13 19:50:19 -08:00
Diva Canto
f3e90cbffc Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-13 19:27:02 -08:00
Diva Canto
e4cb7af98a Updated all existing AssemblyVersions's to 0.7.5.*. Many DLLs still don't have an AssemblyInfo file. 2012-11-13 19:26:43 -08:00
Justin Clark-Casey (justincc)
7861090a17 Replace old Prebuild.exe accidentally added back in f977291 with one built without <copy> nant target generation and on mono 2.4.3 2012-11-14 02:44:10 +00:00
Justin Clark-Casey (justincc)
f977291a44 Replace previously updated Prebuild.exe with one built directly with mono 2.4.3 2012-11-14 02:40:37 +00:00
Justin Clark-Casey (justincc)
564fe35d4d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-14 02:30:12 +00:00
Justin Clark-Casey (justincc)
90c6d2e50c Stop Prebuild from generating <copy> statements which unnecessarily copy files into bin/Debug or bin/Release
nant_0.91~alpha2+dfsg-3_all.deb in Ubuntu 12.04 and earlier actually ignored these due to a bug
However, nant 0.92~rc1+dfsg-2 in Ubuntu 12.10 fixes this bug (possibly https://github.com/nant/nant/pull/39).
Which makes nant time-consumingly copy these files when the aren't actually used.
Tested removal of <copy> on both nant 0.91 and nant 0.92
Will be submitting this patch to prebuild project for comment though I suspect there's nobody there to pay attention.
2012-11-14 02:25:07 +00:00
Diva Canto
1f9d39c15d Deleted OptionalModules.addin.xml. Added AssemblyInfo.cs for that dll. 2012-11-13 09:54:52 -08:00
Diva Canto
18c5d33f0a All optional modules' directives moved out of addin.xml 2012-11-13 09:48:56 -08:00
Diva Canto
89a1388857 Deleted .addin.xml. Added AssemblyInfo.cs 2012-11-13 09:04:32 -08:00
Diva Canto
922425a205 Last 27 modules' directives (service connectors out). 2012-11-13 08:49:52 -08:00
Diva Canto
457395d9c1 Another 11 modules' directions moved out of .addin.xml 2012-11-13 08:36:44 -08:00
Diva Canto
608444c9f7 Another 21 modules' directives moved out of .addin.xml 2012-11-13 08:27:51 -08:00
Diva Canto
d73aa8c1a6 Moved the WindModule and its own plugins out of .addin.xml 2012-11-12 21:27:23 -08:00
Diva Canto
99ccd4ea44 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-12 21:15:35 -08:00
Diva Canto
31177d9259 Another 10 modules' directives moved from .addin.xml 2012-11-12 21:14:58 -08:00
Justin Clark-Casey (justincc)
2fd36653b9 minor: Add some explanative method doc to SceneHelpers.SetupSceneModules() 2012-11-13 04:34:03 +00:00
Justin Clark-Casey (justincc)
f605a62427 Disable code to get server-side to move given items to a destination folder on TaskInventoryAccepted.
This is because the fixes to inventory versioning (so that they better match viewer expections)
now appear to allow the viewer to execute #RLV moves, as happens on the LL grid.
Doing it again server-side now wrongly creates another child #RLV folder underneath the root one.
As per http://opensimulator.org/mantis/view.php?id=6311
2012-11-13 04:15:21 +00:00
Diva Canto
48577af325 More module cleanup: removed the CoreModules.Framework modules directives out of .addin.xml. 2012-11-12 18:23:20 -08:00
Diva Canto
335ff4359c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-12 18:08:27 -08:00
Diva Canto
86903f23dd Cleanup on region modules: gave short node id's to all of them. 2012-11-12 18:08:02 -08:00
Melanie
40d5148bbc Update ScriptModuleComms name space to CoreModules 2012-11-13 01:56:32 +00:00
Melanie
4edaa4e41a Completely remove the IRegionModule interface 2012-11-12 22:56:59 +00:00
Melanie
faca755995 Stop closing old style modules 2012-11-12 22:51:24 +00:00
Melanie
8c130bcaf5 Remove the old style module loader and all references to it 2012-11-12 22:50:28 +00:00
Melanie
e41374dd01 Remove IRegionModule support from the test setup helper 2012-11-12 22:25:35 +00:00
Melanie
0d15a6a01f Remove any mention of IRegionModule from region names and comments to aid
grepping for remaining uses
2012-11-12 19:18:20 +00:00
Diva Canto
152d5dc2a7 Fix mantis #6425 2012-11-11 21:13:14 -08:00
Diva Canto
db418bff2b Fix issues with the DynamicTextureModule and corresponding unit tests. 2012-11-11 19:39:21 -08:00
Diva Canto
113a9704f2 One more module converted: WebStatsModule. 2012-11-11 17:02:22 -08:00
Diva Canto
64fad2f80e Two more modules converted: XmlRpcGridRouterModule and XmlRpcRouterModule. 2012-11-11 16:44:59 -08:00
Diva Canto
4e8c8b2cd8 One more module converted: MRMModule. 2012-11-11 16:18:47 -08:00
Diva Canto
abef034d1b One more module converted: IRCStackModule. 2012-11-11 16:10:47 -08:00
Diva Canto
ba2318bd61 One more module converted: PermissionsModule. 2012-11-11 15:59:09 -08:00
Diva Canto
571f6a0300 One more module converted: XMLRPCModule. Removed it from the special loading at start. 2012-11-11 15:29:25 -08:00
Diva Canto
4de8915ddd One more module converted: VectorRenderModule. 2012-11-11 15:04:02 -08:00
Diva Canto
9f45198516 One more module: DynamicTextureModule. Removed it from the special load in the beginning. 2012-11-11 14:54:40 -08:00
Diva Canto
6759ed1013 One more module converted: LoadImageURLModule. Also removed it from its hard-coded instantiation (I think I understood what the problem was, and that I've done it right). 2012-11-11 14:46:22 -08:00
Diva Canto
963b1e861c One more module converted: ScriptsHttpRequests. 2012-11-11 14:22:06 -08:00
Diva Canto
84be90e5f8 One more module converted: EmailModule. 2012-11-11 14:00:58 -08:00
SignpostMarv
f560d581bb document & 80-character width terminal formatting
Signed-off-by: Diva Canto <diva@metaverseink.com>
2012-11-11 13:50:38 -08:00
SignpostMarv
23605cf93d converting NPC module to ISharedRegionModule
Signed-off-by: Diva Canto <diva@metaverseink.com>
2012-11-11 13:50:38 -08:00
Diva Canto
c60e1a1ae6 J2KDecoderModule: move the code out of PostInitialise() 2012-11-11 13:49:07 -08:00
Melanie
3c48b44b68 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-11-11 21:16:29 +00:00
Melanie
b9f602cc77 Prevent datasnapshot from crashing the simulator 2012-11-11 21:16:07 +00:00
PixelTomsen
37c9700904 moving windlight-sources to correct namespace-named folder (world); add LightShare as Interface
Signed-off-by: Diva Canto <diva@metaverseink.com>
2012-11-11 11:17:40 -08:00
PixelTomsen
a180fef99e remove entry OpenGridProtocol in OpenSimDefaults.ini - module was deleted
Signed-off-by: Diva Canto <diva@metaverseink.com>
2012-11-11 11:16:52 -08:00
Diva Canto
6cf90e5516 One more module converted: LightShareModule. 2012-11-11 08:38:39 -08:00
Diva Canto
d589a8bc04 Deleted 2 obsolete modules: OGSRadmin and OpenGridProtocol. They were still IRegionModule's and they have been dead for a very long time, so no need to drag them along in this revamping of region modules. 2012-11-11 08:14:58 -08:00
Diva Canto
f85d054bc6 One more module converted: MonitorModule. 2012-11-11 07:46:12 -08:00
Diva Canto
79d51c27bb One more module converted: InventoryArchiverModule. 2012-11-11 07:31:25 -08:00
Diva Canto
09deaa890d One more module converted: GroupsModule. 2012-11-10 17:56:25 -08:00
Diva Canto
2ef0062664 One more module converted: XferModule. 2012-11-10 17:48:04 -08:00
Diva Canto
562c585bc6 One more module converted: GodsModule. 2012-11-10 17:34:42 -08:00
Diva Canto
cdcb67a952 One more module converted: GesturesModule. 2012-11-10 17:21:09 -08:00
SignpostMarv
d5f9f5c9c3 document, 80-character width terminal formatting converting comments to documentation for IDE & doxygen goodness
Signed-off-by: Diva Canto <diva@metaverseink.com>
2012-11-10 17:09:47 -08:00
SignpostMarv
b3dddd7447 document & 80-character width terminal formatting
Signed-off-by: Diva Canto <diva@metaverseink.com>
2012-11-10 17:09:47 -08:00
SignpostMarv
a87c4c7d89 Converting WorldCommModule to INonSharedRegionModule
Signed-off-by: Diva Canto <diva@metaverseink.com>
2012-11-10 17:09:46 -08:00
Diva Canto
fe2fa70c74 One more module converted: Combat/CombatModule. 2012-11-10 16:42:52 -08:00
Diva Canto
74dd38db70 One more module converted: AvatarFactoryModule. 2012-11-10 16:24:15 -08:00
Diva Canto
5fb5758103 Cleaning up some confusion with Addin names introduced in a prior commit. Also the Flotsam cache module was being given a different Addin name, I removed that. 2012-11-10 15:54:11 -08:00
Diva Canto
e10d61ea8c One more module converted: CloudModule. 2012-11-10 11:59:08 -08:00
Diva Canto
b3574d23e4 One more module converted: DataSnapshot. 2012-11-10 11:26:03 -08:00
Diva Canto
3a5e317f65 One more module converted: ObjectAdd. 2012-11-10 10:35:27 -08:00
Diva Canto
26a94610fc Fix Unit tests -- the module contract was not being honored in the set up of scenes. 2012-11-10 10:21:37 -08:00
Diva Canto
4ac857f902 One more module: EventQueueGetModule. Also making it non-optional for this dll. 2012-11-10 08:48:31 -08:00
SignpostMarv
fb7bbe167a formatting DialogModule for 80-character width terminal 2012-11-10 08:12:31 -08:00
SignpostMarv
5cba04e2d6 Converting DialogModule to INonSharedRegionModule 2012-11-10 08:12:31 -08:00
SignpostMarv
d0742cea3e 80 character-width terminal formatting of IDialogModule interface, removing superfluous whitespace & line-endings. 2012-11-10 08:12:30 -08:00
SignpostMarv
ee3d06220e Documenting parameters of methods on the IDialogModule interface 2012-11-10 08:12:30 -08:00
Diva Canto
791c4d5b9f One more module converted: J2KDecoderModule. 2012-11-10 08:10:43 -08:00
Diva Canto
86b22604fa One more more converted: IPBanModule. 2012-11-09 22:21:11 -08:00
Diva Canto
a4fee98352 One more module converted: TreePopulator. 2012-11-09 22:09:08 -08:00
Diva Canto
bbff036944 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-09 21:59:01 -08:00
Diva Canto
492515cf3f One more module converted: Vegetation. 2012-11-09 21:58:39 -08:00
Justin Clark-Casey (justincc)
12c62d30e1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-10 05:44:50 +00:00
Justin Clark-Casey (justincc)
c94240ba5b Uncomment SceneObjectBasicTests.TestDeleteSceneObjectAsyncToUserInventory() and make it compile again
Not currently in test suite since not yet working.
Also add method doc to Scene.DeRezObjects()
2012-11-10 05:43:57 +00:00
Diva Canto
4f98259617 Minor improvement in the MapSearchModule. Stop blocking the client thread if the search takes too long. 2012-11-09 20:39:55 -08:00
Diva Canto
2540132a54 MapSearchModule also converted to new region module interface (37 to go). 2012-11-09 16:40:55 -08:00
Diva Canto
19aab3e6fe Converted the WindModule to the new region module interface (38 to go). Also added both the WindModule and the SunModule to the Plugin manifest. 2012-11-09 16:28:30 -08:00
Diva Canto
7dfd1468cc Converted the SunModule to the new region module interface. (39 to go...) 2012-11-09 15:38:10 -08:00
PixelTomsen
64c80aec64 llSetLinkCamera implementation
wiki: http://wiki.secondlife.com/wiki/LlSetLinkCamera

mantis: http://opensimulator.org/mantis/view.php?id=6397
2012-11-09 14:31:56 -08:00
SignpostMarv
5bff741544 marking IRegionModule interface as obsolete via System.ObsoleteAttribute, intentionally triggering a bunch of warnings in compiler output in hopes of encouraging other developers to refactor built-in modules when they have free time. 2012-11-09 14:20:24 -08:00
Justin Clark-Casey (justincc)
61b816ebba minor: Adjust method doc on IXInventoryData MoveItem() and MoveFolder() to make it clear we're moving to an existing folder. 2012-11-09 01:18:11 +00:00
Justin Clark-Casey (justincc)
75c880a6f3 Update parent inventory folder version numbers when folders are moved/created/deleted to match version numbers cached by viewers.
This is done in the way that one would expect (e.g. moving a folder increments version number on both source and destination parent folders).
This should hopefully improve viewer reuse of its cached inventory information.
Currently MySQL only but will be implement for SQLite/MSSQL if there are no issues.
2012-11-09 01:13:19 +00:00
Dan Lake
9bc0419679 ODECharacter overrides TargetVelocity. No change to existing behavior 2012-11-08 01:18:25 -08:00
Diva Canto
a407eb287f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-07 20:05:30 -08:00
Diva Canto
eb273b808e HG: Hopefully this fixes the issues with port 80 once and for all. 2012-11-07 19:59:54 -08:00
Robert Adams
3666518319 BulletSim: add skeleton classes for shape objectification. This will eventually replace all the if's and switches in ShapeCollection with polymorphism. 2012-11-07 15:29:51 -08:00
Robert Adams
67d5dbbb49 BulletSim: add classes for physics motors. Eventually these will replace the manual code for vehicles and add PID functionality to avatar movement. 2012-11-07 15:28:06 -08:00
Robert Adams
6df9d40d99 BulletSim: update the DLLs and SOs 2012-11-06 18:17:00 -08:00
Robert Adams
ee00c5c885 BulletSim: many changes to tune vehicles for BulletSim.
The problem left is that the vehicle sitting on something needs
to press down for gravity and what its sitting on pushes up
so the vehicle does not penetrate. The effect is Bullet calculates
a lot of random angular motion for the vehicle. Various schemes
of damping and zeroing has not resolved the problem.
2012-11-06 18:16:47 -08:00
Robert Adams
76cc303031 BulletSim: Add ZeroAngularMotion method to physical objects. Add inTaint flag to ZeroMotion method. Update the references to those functions. 2012-11-06 18:16:35 -08:00
Robert Adams
e2130817e5 BulletSim: remove limit on taints that can happen before a step. Remove some debugging code (detail log flushing). 2012-11-06 18:16:23 -08:00
Robert Adams
f70a3099b5 BulletSim: recalculate the compound shape bounding box when built. 2012-11-06 18:16:12 -08:00
Robert Adams
702fd1e094 BulletSim: only compute linkset mass when membership changes rather than everytime someone asks for it. 2012-11-06 18:16:00 -08:00
Robert Adams
36d77fe27c BulletSim: Add separate linear and angular damping function calls. Add function for recalculating compound shape bounding box. 2012-11-06 18:15:48 -08:00
teravus
b2dfa6f022 To keep things consistent allowing an UnregisterModuleInterface... Force the GodModule to request the dialog module interface on a kickuser call and not to use the 'in memory cached one'. Thanks Ar3s for locating the offending inconsistency. 2012-11-06 19:03:41 -05:00
Justin Clark-Casey (justincc)
bf469819a6 Update folder version numbers when moving items and making the Delete(string[], string[]) call (not just string, string).
This is to stop viewer inventory cache version numbers becoming out of sync with grid stored numbers when viewer performs these actions.
If there are no problems with these changes, they will be propogated to SQLite (and MSSQL if that's simple enough).
May also need to do the same on folder store/create/delete and maybe propogate version increments up the folder hierarchy, but that requires investigation.
2012-11-06 23:44:52 +00:00
Justin Clark-Casey (justincc)
a8424490ae Increment version number of a folder when an object it contains is deleted.
Not doing this was allowing the viewer inventory cache to become out of sync if an item was directly deleted.
2012-11-06 23:40:33 +00:00
Melanie
236cc1f268 Change user message on TeskInventoryAccepted to let the viewer format it
properly
2012-11-05 00:05:01 +00:00
Diva Canto
89322aaf94 Prevent IMs being sent to prims when avies decline inventory offers from them. 2012-11-04 15:17:47 -08:00
Melanie
f391d028de Add a method to query all registered script constants to allow non-XEngine
script engines to use them.
2012-11-04 22:39:15 +00:00
Robert Adams
895d28f14d BulletSim: update the DLLs and SOs 2012-11-03 21:28:23 -07:00
Robert Adams
79f7c466a1 BulletSim: fix compound linkset crash by not freeing shape of child prims.
Remove all compilation warnings (mostly 'protected' in sealed classes.)
Add the dynamicAabbEnable parameter to creation of compound shapes.
2012-11-03 21:16:02 -07:00
Robert Adams
894bb4893b BulletSim: search the mesh and hull lists to find shapes if type is not known. This makes sure the correct accounting is done for the particular shape. 2012-11-03 21:15:54 -07:00
Robert Adams
498ea76e63 BulletSim: Move construction of compound linkset from ShapeCollection
into LinksetCompound where it should be.
Create meshes for native shapes when part of a compound linkset because
    scale is currently per object and not per collision shape.
Don't schedule a LinksetCompound refresh if just changing properties.
2012-11-03 21:15:46 -07:00
Robert Adams
1dc23b2b97 BulletSim: parameterize selection of linkset implementation 2012-11-03 21:15:39 -07:00
Robert Adams
b0eccd5044 BulletSim: debugging of compound shape implementation of linksets.
Add compound shape creation and freeing in shape manager.
Add optional taint-time execution method and update code to use it.
Add API2 linkage for more compound shape methods (get num, get/remove by index, ...)
Modify perferred shape return so linkset children can have differet shapes than root.
Add Position and Orientation calls to linksets so children can be moved around by
    the linkset by its own calculation. Allows for very general linkset implementations.
2012-11-03 21:15:30 -07:00
Robert Adams
f53b4e7a21 BulletSim: Add RawPosition and RawOrientation to BSPhysObject and rename MassRaw to RawMass. Fix BSShapeCollection to use Raw* for creating the body to eliminate exception from referencing the physical body before it has been created. 2012-11-03 21:15:22 -07:00
Robert Adams
39c02dcc8c BulletSim: Remove use of shapeData in ShapeCollection and rely on the available BSPhysObject varaiables. Fix line endings in BSLinksetCompound. 2012-11-03 21:15:14 -07:00
Robert Adams
364a7c3088 BulletSim: rename BSBody and BSShape to PhysBody and PhysShape. Add skeleton of BSLinksetCompound. 2012-11-03 21:15:06 -07:00
Robert Adams
28e2cd3fa2 BulletSim: vehicle tweeking.
Add AddTorque() method to BSPrim. Remove some manual motor actions
in computing angular force (will eventually be replaced with motor class).
Remove some experimental changes.
2012-11-03 21:14:58 -07:00
Robert Adams
52be581f71 BulletSim: remove center-of-mass setting for linksets because it causes the constraint calculation to pull the objects together. 2012-11-03 21:14:49 -07:00
Robert Adams
93fe384cce BulletSim: Use the PostTaints operation to build the linkset once before the next simulation step. This eliminates the management of children vs taintChildren and simplifies the constratin creation code. 2012-11-03 21:14:41 -07:00
Robert Adams
42d65840c8 BulletSim: Add gravity force to vehicle. Some debugging additions. 2012-11-03 21:14:33 -07:00
Robert Adams
dae038a117 BulletSim: fix problem with multiple linksets stepping on each other if they are built at the same time. 2012-11-03 21:14:25 -07:00
Robert Adams
4cfa3be4ef BulletSim: add definitions for linkset collision mask 2012-11-03 21:14:16 -07:00
Robert Adams
bc43c7007d BulletSim: code rearrangement 2012-11-03 21:14:08 -07:00
Robert Adams
8c9e4c1f7b BulletSim: Use Refresh/PostTaints to cause recomputing of constraint variables before the simulation step. Update logging and messages to properly name LinksetConstraints. Use UpdatePhysicalMassProperties to put the whole linkset mass into all the physical linkset members so they have the inertia to move the whole linkset. 2012-11-03 21:14:00 -07:00
Robert Adams
9568f24c26 BulletSim: add post taint taints and post step taints. The post taints operation is most useful and is used by linksets to build and rebuild only once before the simulation step. 2012-11-03 21:13:52 -07:00
Robert Adams
2f25f70316 BulletSim: remove unneeded parameter from Refresh(). 2012-11-03 21:13:44 -07:00
Robert Adams
e20bad12cc BulletSim: centralize mass/inertia computation with UpdatePhysicalMassProperties() function. Didn't add setMassRaw because assignment with side effect is dirty. 2012-11-03 21:13:35 -07:00
Robert Adams
7af28724ac BulletSim: rename constraint classes so they show up together alphabetically. 2012-11-03 21:13:27 -07:00
Robert Adams
92d3c611e5 BulletSim: many small changes for vehicles simulation. 2012-11-03 21:13:19 -07:00
Robert Adams
2b75035aef BulletSim: add ForEachMember(action) call for linkset. 2012-11-03 21:13:11 -07:00
Robert Adams
8fa83cf430 BulletSim: Add activations after vehicle properties change. Problem was the vehicle was going to sleep while waiting for commands. Make AddAngularForce work the same way as AddForce -- accumulates values and pushes them once into Bullet. 2012-11-03 21:13:03 -07:00
Robert Adams
b83449ae9a BulletSim: correct spelling of Bullet call. It's 'swept' not 'sweep'. 2012-11-03 21:12:54 -07:00
Robert Adams
804b332d45 BulletSim: Add banking and other new code to vechile dynamics. Add third party license and contributor in for for Aurora-Sim project for physics code. 2012-11-03 21:12:46 -07:00
Diva Canto
783443705d HG Suitcase Inventory: if RootFolder type doesn't work, look for any folder with parentID=UUID.Zero 2012-11-03 12:03:47 -07:00
Diva Canto
7412795a0b HG: flip all configs to HG2.0. PLEASE CHECK YOUR EXISTING HG CONFIGS AGAINST THESE. 2012-11-02 08:05:56 -07:00
Dan Lake
2e106cd5de Change to earlier commit for TargetVelocity to support distributed physics. 2012-11-02 03:09:04 -07:00
Justin Clark-Casey (justincc)
ce7beb6f20 Add [AssetService] AllowRemoteDeleteAllTypes (default false).
This allows a closed grid to delete asset types other than maptile remotely.
Only operational if AllowRemoteDelete = true also.
Defaults to false - do not enable if anybody other than you can make asset service requests.
2012-11-02 01:41:38 +00:00
Justin Clark-Casey (justincc)
462ad336dc Move check to allow only deletion of maptiles up to AssetServerDeleteHandler from AssetService.
This allows us to use a common check for both AssetService and XAssetService.
It also allows future console commands to delete an asset.
As before, deletion of maptile assets is not allowed remotely unless this is explicitly configured.
2012-11-02 00:02:10 +00:00
Justin Clark-Casey (justincc)
8dfe59d7b8 Comment out checks not to overwrite existing IAR/OAR files for now on "save iar/oar" since this causes problems for some backup systems.
Needs more thought, maybe an explicit --force/--overwrite switch
Comments on http://opensimulator.org/mantis/view.php?id=6389
2012-11-01 03:42:15 +00:00
Justin Clark-Casey (justincc)
a7d9f5598f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-11-01 03:34:11 +00:00
Justin Clark-Casey (justincc)
ccb17eab71 Replace the 64 bit macosx version of libopenjpeg-dotnet.dylib with a 32-bit version from libopenmetaverse commit 3731ee4
This is because macosx mono is 32-bit and this can't p/invoke 64-bit binaries.
However, the reverse is also true.
If OpenSimulator stops working for you then please complain!  Long term alternative is probably to build a fat binary with both architectures.
2012-11-01 03:31:30 +00:00
Dan Lake
ffe4d738fb Add TargetVelocity to PhysicsActor interface to support distributed physics. No change to existing functions. 2012-10-31 17:13:18 -07:00
Justin Clark-Casey (justincc)
566aaef1f4 Also add the additional ScriptException constructor necessary to get [Serializable] to work. 2012-10-31 00:56:41 +00:00
Justin Clark-Casey (justincc)
b3072cf343 Mark ScriptException as [Serializable] for when it has to cross AppDomains 2012-10-31 00:46:07 +00:00
Justin Clark-Casey (justincc)
4ba48151b2 Handle UUIDGroupName and ObjectGroup viewer UDP requests asynchronously rather than synchronously.
This is to avoid the entire scene loop being held up when the group service is slow to respond.
There's no obvious reason for these queries to be sync rather than async.
2012-10-31 00:39:45 +00:00
Justin Clark-Casey (justincc)
6235d16c31 Make "show object part" command correctly display script status.
Uses new IEntityInventory.TryGetScriptInstanceRunning()
Makes it clearer that TaskInventoryItem.ScriptRunning cannot be used as it is temporary and not updated.
2012-10-31 00:31:18 +00:00
Melanie
3388534ff5 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-10-30 23:14:06 +00:00
Melanie
fd9cb3cb68 Store and send the current movement animation state to a new sim on crossing 2012-10-30 23:08:22 +00:00
Melanie
9e05067a4f Add AnimState to CADU 2012-10-30 22:11:02 +00:00
Justin Clark-Casey (justincc)
984faf24df Only create a new list to check if objects have reached targets if there actually are any targets. 2012-10-30 01:48:05 +00:00
Justin Clark-Casey (justincc)
ff6c69000e Log warning if mesh/sculpt asset couldn't be found by ODEPrim.MeshAssetReceived() callback.
Presumably this is now more useful if the false positive from the old method of loading mesh assets have been eliminated.
2012-10-30 01:40:59 +00:00
Justin Clark-Casey (justincc)
9bc4dc6c5f Add method doc to IAssetService.Get(string, object, AssetRetrieved) outlining the situations in which AssetRetrieved may be called back with a null AssetBase.
These situations include asset not found and remote service not responding.
2012-10-30 01:19:32 +00:00
Justin Clark-Casey (justincc)
cccf695327 Add asset != null check to ODEPrim.MeshAssetReceived instead of throwing exception.
In some cases (such as failure to receive response from asset service), it is possible for a null to be returned from IAssetService.Get(string, object, AssetRetrieved).
2012-10-30 01:14:48 +00:00
Justin Clark-Casey (justincc)
37de965233 Make MeshAssetReceived private.
Keep methods private unless they need to be opened up to external callers.  Reduces analysis complexity.
2012-10-30 01:08:00 +00:00
Justin Clark-Casey (justincc)
aeeed29d62 correct ODEPrim.MeshAssetReveived -> MeshAssetReceived 2012-10-30 01:07:14 +00:00
SignpostMarv
a09cba6da3 refactoring to use assembly:classname style of configuration 2012-10-29 23:39:01 +00:00
SignpostMarv
a16ddbee41 Renaming module back to SoundModule as the hypothetical plan was to make another module using the shared region module interface, but this was pointed out by Melanie_T to be mostly pointless. 2012-10-29 23:39:01 +00:00
SignpostMarv
e308841de9 SianaGearz notes stop sound flag is 1 << 5, so using that for ISoundModule.StopSound rather than setting gain to zero 2012-10-29 23:39:01 +00:00
SignpostMarv
e0b5a3cd90 tweaking configuration logic so that the INonSharedRegionModule will load by default 2012-10-29 23:39:01 +00:00
SignpostMarv
2bb0419251 documenting some params on ISoundModule methods 2012-10-29 23:39:01 +00:00
SignpostMarv
dcac2a7f71 refactoring llCollisionSound to use new KeyOrName method 2012-10-29 23:39:01 +00:00
SignpostMarv
a9999a9676 Refactoring llTriggerSoundLimited with a new method on ISoundModule, as the LL Wiki spec for llTriggerSoundLimited states an axis-aligned bounding box, not radial constraint 2012-10-29 23:39:01 +00:00
SignpostMarv
56965dd959 fixing poorly-formatted xml doc string for Util.IsInsideBox 2012-10-29 23:39:00 +00:00
SignpostMarv
ef15711089 refactoring llTriggerSoundLimited to not use the LSL methods, since that will cause unnecessary calls to m_host.AddScriptLPS(1) 2012-10-29 23:39:00 +00:00
SignpostMarv
af9dc483e9 refactoring llGetPos() to take advantage of implicit converter 2012-10-29 23:39:00 +00:00
SignpostMarv
f9923d4423 shifting from two instances of typecasting to one instance of typecasting in llTriggerSoundLimited 2012-10-29 23:39:00 +00:00
SignpostMarv
c796f7861e 80-character width terminal formatting of recent commits to llPlaySound, llPlaySoundSlave, llTriggerSound and llTriggerSoundLimited 2012-10-29 23:39:00 +00:00
SignpostMarv
c5af16aef8 shuffling code around so that the interface for ISoundModule.SendSound() specifies a UUID rather than a string 2012-10-29 23:39:00 +00:00
SignpostMarv
5abcecc735 moving SendSound from SceneObjectPart to ISoundModule 2012-10-29 23:39:00 +00:00
SignpostMarv
af39af1cc4 fixing a bug in SceneObjectPart.SendSound where sounds would always come from the root prim rather than the source prim 2012-10-29 23:39:00 +00:00
SignpostMarv
57940087d1 Factoring out a superfluous local variable & repeated assignment in SceneObjectPart.SendSound as linksets are only meant to have a single owner 2012-10-29 23:38:59 +00:00
SignpostMarv
e75596524a Formatting SoundModuleNonShared.LoopSound, consistent indentation 2012-10-29 23:38:59 +00:00
SignpostMarv
9df510157e deduplicating code into a single LoopSound method 2012-10-29 23:38:59 +00:00
SignpostMarv
22693304fb removing superfluous lines from SceneObjectPart.SendSound 2012-10-29 23:38:59 +00:00
SignpostMarv
3d8f59aac3 refactoring StopSound into a private static method to skip repeating m_scene.TryGetSceneObjectPart 2012-10-29 23:38:59 +00:00
SignpostMarv
e5df8cafb8 Removing a locked iteration over SceneObjectGroup.LoopSoundSlavePrims as the SL Wiki spec does not state that slaves are set to match master values 2012-10-29 23:38:59 +00:00
SignpostMarv
d7ffcace8f adjusting parameter order of PreloadSound to be more logical 2012-10-29 23:38:59 +00:00
SignpostMarv
29a8ae48b5 transposing LoopSoundMaster to Sound Module 2012-10-29 23:38:59 +00:00
SignpostMarv
a68e2fe169 transposing preload sound onto sound module 2012-10-29 23:38:58 +00:00
SignpostMarv
8763a637b5 transposing stop sound into sound module 2012-10-29 23:38:58 +00:00
SignpostMarv
206a694c6b moving comment for llStopSound inside the method block prior to transposition to sound module 2012-10-29 23:38:58 +00:00
SignpostMarv
b9e0f1cd2b documenting ISoundModule methods & fields 2012-10-29 23:38:58 +00:00
SignpostMarv
d4034271eb formatting ISoundModule prior to documentation 2012-10-29 23:38:58 +00:00
SignpostMarv
1c618843b8 formatting changes to SceneObjectPart.SendSound; consistent indentation 2012-10-29 23:38:58 +00:00
SignpostMarv
32db725dd7 SceneObjectPart.SendSound can exit early if a sound module was not found. 2012-10-29 23:38:58 +00:00
SignpostMarv
f4fe8763ad Changing the logic order in the TaskInventory iterator of ScenObjectPart.SendSound, since we can currently have non-unique object inventory names so we should check the asset type first. 2012-10-29 23:38:58 +00:00
SignpostMarv
b42cfe49a2 Replacing double-if block in SceneObjectPart.SendSound with Util.Clip 2012-10-29 23:38:57 +00:00
SignpostMarv
6440892788 TryGetScenePresence in TriggerSound is probably meant to be using the ownerID, not the objectID 2012-10-29 23:38:57 +00:00
SignpostMarv
516ee244b4 swapping GetSceneObjectPart for TryGetSceneObjectPart in PlayAttachedSound to imply why we're doing an early return. 2012-10-29 23:38:57 +00:00
SignpostMarv
1d47bcb6b6 stripping whitespace from ISoundModule, formatting SoundModuleNonShared.cs 2012-10-29 23:38:57 +00:00
SignpostMarv
20be6a4b48 refactoring thisSpGain in PlayAttachedSound as it was previously using two typecasts in the assignment and had the assignment on a separate line to the declaration 2012-10-29 23:38:57 +00:00
SignpostMarv
6bd1f0f209 Factoring out an if-else block in PlayAttachedSound as it was using the previously hard-coded max distance value. 2012-10-29 23:38:57 +00:00
SignpostMarv
375fb66589 making the max distance for sounds to be heard from their origin a configurable option exposed via a public field on ISoundModule (with private setter in the implementation) 2012-10-29 23:38:57 +00:00
SignpostMarv
ed162a10be Converting the ISoundModule implementation from an IRegionModule to an INonSharedRegionModule 2012-10-29 23:38:57 +00:00
SignpostMarv
7560010f34 Immediately setting gain to zero as a workaround for code not stopping sound started by llPlaySound 2012-10-29 23:38:56 +00:00
Justin Clark-Casey (justincc)
09f4e72d6a Fix memory leak where removing an NPC did not remove its circuits.
This was because we were removing by circuitcode where NPCs have no code.
Now removing by agent ID instead.
This commit also fixes the "show circuits" console command to work properly where the circuit has no associated IP address.
2012-10-29 23:22:40 +00:00
Justin Clark-Casey (justincc)
5681e812a5 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-29 23:19:06 +00:00
Justin Clark-Casey (justincc)
c97890ca69 Add "force gc" region console command which manually invokes garbage collection.
For debugging purposes.
2012-10-29 22:53:06 +00:00
Melanie
5a96ef52cb Deep copy the collection of at_target objects so it can't be modified while
it's being iterated
2012-10-28 18:41:47 +00:00
Justin Clark-Casey (justincc)
3531f29a6a minor: Fix verbose IAR save message to make it a bit clearer that item data is being saved at that point, not asset data. 2012-10-27 00:24:25 +01:00
Justin Clark-Casey (justincc)
cc204497e0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-26 23:10:52 +01:00
Justin Clark-Casey (justincc)
67432fcbf2 Fix "save iar" hanging permanently if the asset request phase times out.
Unlike "save oar", this was happening on the same thread as the original request.
The timeout happens on another so the original thread is never aborted.
On "save oar" this leaves the thread hanging (still bad) but on "save iar" it left the console thread hanging.
Temporary fix is to make "save iar" do asset request on a separate thread, like "save oar".
Longer term fix will be to restructure asset save to use a ManualResetEvent rather than a separate timeout timer.
2012-10-26 23:08:59 +01:00
Melanie
1c5f6e48b8 Separate LSL's notion of the default anim from the actually playing anims. 2012-10-26 21:23:20 +01:00
Melanie
de6f147d3c Revert "Fix for Mantis 0006376: Avatar no longer show Walking animation when any AO hud is"
This reverts commit fa484c3494.
2012-10-26 21:16:27 +01:00
Justin Clark-Casey (justincc)
16809bd0ea minor: Make the error thrown logged when a simulator in grid mode is trying to set estate owner to a user that doesn't exist a little more obvious. 2012-10-26 02:36:58 +01:00
SignpostMarv
80dcc13af2 refactoring IWorldCommListenerInfo.GetRegexBitfield() method to be a field with a private setter 2012-10-26 02:08:00 +01:00
SignpostMarv
e977761071 adding ability for listeners to be filtered by regular expressions and a general-purpose function to see if a given string matches a given regex 2012-10-26 02:08:00 +01:00
SignpostMarv
18b1ee6f37 Formatting and casing correction in WorldCommModule, trailing new line in OSSL to get git diff to not complain 2012-10-26 02:08:00 +01:00
Justin Clark-Casey (justincc)
1b3b7a61ac minor: Add comment as to why we are pulcking plain old ints out of the LSL_List when converting values from LSL for modInvoke() 2012-10-26 01:50:46 +01:00
SignpostMarv
ecdb88679e Removing the apparently superfluous explicit namespace reference so that the if-else-if-else block in ConvertFromLSL can have a consistent appearance 2012-10-26 01:43:54 +01:00
SignpostMarv
01972cc9e8 system ints can end up in LSL lists, which can cause counter-intuitive unknown list element type errors in ConvertFromLSL (via modInvoke) 2012-10-26 01:43:53 +01:00
Justin Clark-Casey (justincc)
2fb89b5aac Comment out InventoryTransferModule.NeedSceneCacheClear() and invocations since the call itself does nothing and the return value is ignored by all callers.
This is a very old method (+4 years) so is probably confusing code cruft.
2012-10-26 01:15:16 +01:00
Oren Hurvitz
85c909c0b5 Fixed saving non-square multi-region OARs 2012-10-26 00:06:44 +01:00
Justin Clark-Casey (justincc)
dc17cee044 minor: if a scene is already shutting down on Scene.Close(), warn and exit instead of attempting to run another shutdown concurrently.
Thanks to Oren Hurvitz for this change.
2012-10-25 23:47:55 +01:00
Oren Hurvitz
b4923da334 Changed "course" to "coarse" in several places 2012-10-25 23:32:37 +01:00
Oren Hurvitz
424f68b64b Changed duplicate Asset ID's to unique ID's in CollisionSoundsAssetSet.xml 2012-10-25 23:30:48 +01:00
Justin Clark-Casey (justincc)
0482758e96 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-25 23:17:07 +01:00
Justin Clark-Casey (justincc)
22e216fd12 In Scene.Close(), dispose of the physics scene after base.Close() since script events can still access Physics scene until the script engine shuts down (triggered off base.Close())
XEngine listeners to EventManager.OnShutdown which is triggered from base.Close().
Possibly it could listen for the earlier OnSceneShuttingDown instead, but the easier solution right now is to relocate disposal of the physics scene.
This bug has existed since c150320 (Thu Jul 26 15:27:18 2012) and was in 0.7.4
2012-10-25 22:55:29 +01:00
nebadon
fa484c3494 Fix for Mantis 0006376: Avatar no longer show Walking animation when any AO hud is
loaded.  Thank you tglion
2012-10-25 11:31:25 -07:00
Justin Clark-Casey (justincc)
c13a99dc5c Fix script error messages not showing up in viewer 3 and associated viewers.
Viewer 3 will discard such a message if the chat message owner does not match the avatar.
We were filling the ownerID with the primID, so this never matched, hence viewer 3 did not see any script error messages.
This commit fills the ownerID in with the prim ownerID so the script owner will receive script error messages.
This does not affect viewer 1 and associated viewers which continue to process script errors as normal.
2012-10-25 03:26:12 +01:00
Justin Clark-Casey (justincc)
8af8319b95 Get osNpcCreate() and osNpcLoadAppearance() to generate a script error if appearance notecard does not exist, rather than returning UUID.Zero or silently failing. 2012-10-25 03:02:00 +01:00
Justin Clark-Casey (justincc)
d9aaf51561 When scripts generate expected exceptions (e.g. due to checked bad parameter) throw ScriptException instead of just a plain old exception.
This is to make it easier to distinguish these exceptions from unexpected OpenSimulator problems internally and in regression tests.
No functional changes.
2012-10-25 02:52:20 +01:00
Justin Clark-Casey (justincc)
ae662b54ea Make osNpcCreate() return UUID.Zero instead of throwing an exception if notecard name is invalid. Make osNpcLoadAppearance() fail silently in same circumstance rather than throwing exception. 2012-10-25 01:07:06 +01:00
Justin Clark-Casey (justincc)
5d4ac5a90f Add TestOsNpcLoadAppearance() 2012-10-25 00:59:27 +01:00
Justin Clark-Casey (justincc)
1743fe5d62 Move npc creation tests involving appearance from OSSL_ApiAppearanceTest to OSSL_ApiNpcTests
This is a more intuitive location.
2012-10-25 00:29:50 +01:00
Justin Clark-Casey (justincc)
81aeecc907 Allow "show object", "show part", "dump object" and "delete object" to accept a local ID as well as a UUID.
This means that the sub-commands are now id rather than uuid, e.g. show object id
2012-10-24 04:10:22 +01:00
Justin Clark-Casey (justincc)
f76dceb90b Get "save oar" and "save iar" to tell you in a more friendly manner if the filename to save already exists, rather than exception throwing.
Also changes ConsoleUtil.CheckFileExists to CheckFileDoesNotExist() since this is more meaningful in the context, even though it does result in double negatives.
2012-10-24 03:08:58 +01:00
Justin Clark-Casey (justincc)
73db057fa1 Add "dump object uuid" console command. This allows any object in the scene to be serialized and dumped to XML for debug purposes. 2012-10-24 02:05:28 +01:00
Justin Clark-Casey (justincc)
326f1507fa Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-24 02:04:26 +01:00
Robert Adams
de47646c3d BulletSim: update binaries with small change that insures that manual position/rotation setting results in an update event. 2012-10-23 17:34:14 -07:00
Justin Clark-Casey (justincc)
938fa96b9f minor: Move co-ordinate related help to object commands to common ConsoleUtil.CoordHelp 2012-10-24 01:33:21 +01:00
Robert Adams
b6fc5bad00 BulletSim: fix problem with avatars sinking into the ground.
Change terrain activation state to DISABLE_SIMULATION for better performance.
2012-10-23 17:30:43 -07:00
Robert Adams
b49f8a377b BulletSim: minor change to insure avatar body recreation when shape changes. 2012-10-23 08:02:26 -07:00
Robert Adams
36bfd3667c BulletSim: remove chatty debug message. 2012-10-22 22:25:06 -07:00
Robert Adams
14eeb8b31b BulletSim: fix bug that caused error (and a crash on 32 bit Linux) when mesh assets weren't already in the cache. Comment cleanups. 2012-10-22 22:24:59 -07:00
Robert Adams
7272a4cae8 BulletSim: fix problem of not rebuilding shape by clearing last rebuild failed flag in BSPrim.ForceBodyShapeRebuild() 2012-10-22 22:24:51 -07:00
Robert Adams
65c131c4a3 BulletSim: remove trailing spaces to make git happy. 2012-10-22 22:24:44 -07:00
Robert Adams
c245178eee BulletSim: encorporate UBit's suggestion to save a copy of mesh raw data. 2012-10-22 22:24:37 -07:00
Robert Adams
a61f20ac74 BulletSim: Create LinkSet abstract class and sparate constraint based linksets into own subclass. Will eventually add manual movement linkset subclass. 2012-10-22 22:24:30 -07:00
Justin Clark-Casey (justincc)
319ebaca06 Make it possible to turn the base UDP object packet pools on and off whilst running via the "debug lludp pool <on|off>" console command. For debug purposes.
This does not currently apply to the higher LLUDP packetpool.
2012-10-23 02:44:15 +01:00
Justin Clark-Casey (justincc)
4578ff74fe Add object count stats for new IncomingPacket and UDPPacketBuffer pools if they are enabled. Add count stats for existing LLUDP pool.
This introduces a pull stat type in addition to the push stat type.
A pull stat takes a method on construction which knows how to update the stat on request.
In this way, special interfaces for pull stat collection are not necessary.
2012-10-23 01:52:10 +01:00
Justin Clark-Casey (justincc)
2206132ab9 minor: Get content type handler logger to log "unset" for the content type instead of blank if no content type was set. 2012-10-23 00:44:47 +01:00
Justin Clark-Casey (justincc)
542d075376 minor: Use LogIncomingToContentTypeHandler() method for incoming HTTP data where this wasn't already used.
This allows log level 5 (log sample or large part of incoming post data) to operate and removes copy/paste.
2012-10-23 00:39:59 +01:00
Melanie
efae7c6fc2 Refactor: Move Dwell reply to a module that can be disabled. The prior,
hardcoded approach disabled the use of non-core dwell tracking modules.
2012-10-21 21:12:34 +01:00
PixelTomsen
20eac8d6d0 SQLite DB: some values of land data will be not saved / loaded
http://opensimulator.org/mantis/view.php?id=6370

Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-10-21 10:41:23 -04:00
BlueWall
07f1d44174 Merge branch 'master' into connector_plugin 2012-10-20 05:25:58 -04:00
PixelTomsen
d7fa4cacb3 Fix: invinite loading for Viewer3 : parcelinfo request of traffic-value (implementation of dwell-value in LandData + eventhandler, return always 0); source-formatting of LandData
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-10-20 05:06:46 -04:00
BlueWall
af9cd7d30c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-20 04:32:45 -04:00
BlueWall
2aac113ac1 Add CLICK_ACTION_ZOOM
Add support for V2/3 CLICK_ACTION_ZOOM to llSetClickAction
2012-10-20 04:32:04 -04:00
Justin Clark-Casey (justincc)
5bc07a15f5 minor: remove unnecessary bit of method doc from OdePrim.BadMeshAssetCollideBits that monodevelop inserted automatically 2012-10-20 02:52:38 +01:00
Justin Clark-Casey (justincc)
d2b19f00da Fix minor issues from commit 28483150
Fix spelling of collide, change to more self-documenting property BadMeshAssetCollideBits, add method doc, change to private to reduce code analysis complexity
2012-10-20 02:49:16 +01:00
Justin Clark-Casey (justincc)
d55f72f3df minor: Rename assetCache constructor param in UUIDGatherer to assetService which is what it is. 2012-10-20 02:35:39 +01:00
Justin Clark-Casey (justincc)
ac037dfe21 Add method doc for IPresenceService 2012-10-20 02:26:08 +01:00
Justin Clark-Casey (justincc)
1937e5f1ec Relocate temporary debug message for sending group IMs to online members only so that we can add ms it takes to send.
This is chiefly to assess how long it may still take to send messages to such filtered groups.
2012-10-20 02:13:00 +01:00
Justin Clark-Casey (justincc)
da2b23f18d Improve efficiency of friends notification by only make one PresenceService call for all friends rather than one for each friend.
However, large groups could still take a very long time since we still need to message each avatar on different simulators.
2012-10-20 02:02:13 +01:00
Justin Clark-Casey (justincc)
cd3762ca9f Add experimental [Groups] MessageOnlineUsersOnly option for Flotsam XmlRpc groups.
This retrieves and caches information from the PresenceService to only send messages to online users.
This is reported to much improve performance for large groups where most users are offline.
Cache is 20 seconds to balance requests against users not receiving messages until cache updates.
This is an alternative to an approach where login/logout notification is sent directly from simulator to groups service.
However, I'm not convinced that this PresenceService approach is actually better.  Needs more thought.
2012-10-20 01:26:04 +01:00
Justin Clark-Casey (justincc)
6cca713679 Fix build break from commit e469879 2012-10-20 01:08:52 +01:00
Justin Clark-Casey (justincc)
de869028cb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-20 01:04:08 +01:00
Robert Adams
45df324ab3 Bulletsim: update DLLs and SOs. Brings C++ routine in sync with C# sources and fixes problem where BulletSim would crash on startup on 32 bit Linux. 2012-10-19 15:47:51 -07:00
Justin Clark-Casey (justincc)
e469879725 Add "debug groups verbose <true|false>" region console command
This allows one to turn on super-verbose groups debug logging on and off whilst the region is in operation.
2012-10-19 23:45:55 +01:00
Robert Adams
d94c4646cc BulletSim: add asset fetching so BulletSim works with new physics asset handling.
Refactor some names to make them available for the asset tracking and fetching.
2012-10-19 15:43:31 -07:00
Robert Adams
f422b9b388 BulletSim: reorder avatar collision checking to eliminate double collision_end.
Various tweekings to avatar shape/mass/inertia/etc.
Remove change from avatar radius to diameter. But still the avatar sinks.
Collision_end now happens immediately rather than at the next subscription time.
2012-10-19 10:52:31 -07:00
Robert Adams
e87a179c89 BulletSim: change nonimal physics frame rate to 55 to give same numbers as ODE.
Change character scaling to represent size of capsule (diameter rather than radius)
Modify create capsule call to pass radius and height.
Eliminate errors when calculating shape inertia (should have some type checking).
2012-10-19 10:52:23 -07:00
Robert Adams
fc33afddd3 BulletSim: remove code in ShapeCollection that hinted at shape sharing.
Add new function to ParameterDefn for calling BulletSimAPI to set values.
Tweaking to BSCharacter parameter setting to try and have avatars stand.
2012-10-19 10:52:14 -07:00
Robert Adams
eaccfa6d99 BulletSim: Fix small problems with last patch: BSScene.World properly initialized and setting of C++ parameters commented out. Comments and logging added. 2012-10-19 10:52:06 -07:00
Robert Adams
fd7a097849 BulletSim: Update BSCharacter to use API2 interface.
Add capsule shape to BSShapeCollection().
Remember last updated values so inter frame diffs can be computed.
Parameterize avatarStandingFriction and reduce to 10 from 999.
    The latter high value made avatars very hard to push.
Set CCD parameters for prims and characters of specified.
2012-10-19 10:51:58 -07:00
BlueWall
276600ab71 Merge branch 'master' into connector_plugin 2012-10-19 07:46:00 -04:00
BlueWall
99bb6c9304 Move PluginManager
Move PluginManager out to OpenSimFramework for general use
2012-10-19 07:38:36 -04:00
Justin Clark-Casey (justincc)
f7dcd33008 minor: Increase attachment name field from 36 to 50 chars in "attachments show" report 2012-10-19 03:12:58 +01:00
Justin Clark-Casey (justincc)
6ba42e9e75 Fix a few minor issues in ArchiveReadRequest logging. 2012-10-19 02:54:13 +01:00
Justin Clark-Casey (justincc)
71b73d6dc3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-19 02:52:12 +01:00
SignpostMarv
af5383e479 altering documentation for llGetLinkName, as the current documentation is rather lengthy for a "summary". 2012-10-19 02:48:59 +01:00
SignpostMarv
645e3171b4 since llGetLinkName has a "simplest case", it should be the first check made. 2012-10-19 02:48:59 +01:00
SignpostMarv
597df51f91 the simplest case for llGetLinkName also applies to the LINK_THIS constant 2012-10-19 02:48:59 +01:00
SignpostMarv
ec044537d5 ensuring that operand order in llGetLinkName is internally consistent 2012-10-19 02:48:59 +01:00
UbitUmarov
32171708c3 normalize quaternion.Slerp outputs
Signed-off-by: Melanie <melanie@t-data.com>
2012-10-19 01:37:46 +01:00
UbitUmarov
28483150e2 [UNTESTED] core Ode: let broken mesh physical prims collide with land as
the defaul basic box so they don't go off world.
2012-10-19 01:19:48 +01:00
Justin Clark-Casey (justincc)
0f70460a32 minor: comment out currently unused logger in DynamicTextureModule 2012-10-19 00:39:18 +01:00
Justin Clark-Casey (justincc)
9417176389 Make "show part" console commands print out information about each item the part contains 2012-10-19 00:37:25 +01:00
Melanie
38e96afa38 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-10-19 00:31:30 +01:00
UbitUmarov
b058ba5859 [UNTESTED] core Ode: stop trying to load a broken asset. Make broken
assets behave like phantom by Nebadon request
2012-10-19 00:30:48 +01:00
Justin Clark-Casey (justincc)
845228b35e minor: Convert ad-hoc list building in ObjectCommandsModule to use ConsoleDisplayList 2012-10-18 23:58:29 +01:00
Justin Clark-Casey (justincc)
75f5e66d1c Add local and UUID to information output of "show object" and "show part" region console commands 2012-10-18 23:45:07 +01:00
Justin Clark-Casey (justincc)
1f3c9db2b9 Add --full option to "show object name/uuid/pos" to show info on all parts of an object, not just whole object summary information. 2012-10-18 23:41:18 +01:00
Justin Clark-Casey (justincc)
8aa43e72e5 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-18 23:32:40 +01:00
Justin Clark-Casey (justincc)
a960273e91 Add number of inventory items to information displayed via "show part" console command 2012-10-18 23:02:57 +01:00
Melanie
a2c93133be Remove extraneous calls to the now commented CheckSculptAndLoad 2012-10-18 21:23:57 +01:00
UbitUmarov
afab5f5cd1 extend coment to include all unused SOG CheckSculptAndLoad() 2012-10-18 21:13:25 +01:00
UbitUmarov
7ab83f9eb2 [DANGER UNTESTED] ODE mesh assets. Other plugins will not do meshs/sculpts
now

Signed-off-by: Melanie <melanie@t-data.com>
2012-10-18 21:13:02 +01:00
UbitUmarov
de44e93aa2 missing changed file
Signed-off-by: Melanie <melanie@t-data.com>
2012-10-18 20:58:34 +01:00
UbitUmarov
1e7fb2dc36 i update core ode plugin and make it load is meshs (i hope)
Signed-off-by: Melanie <melanie@t-data.com>
2012-10-18 20:58:12 +01:00
Justin Clark-Casey (justincc)
991151250d If we're avoiding printing a long request warning for a GetTexture CAP call, check we received a request handler first since this is not guaranteed.
Resolves harmless logged exception when content type and generic xml rpc requests take more than 3 seconds.
2012-10-18 00:39:43 +01:00
Justin Clark-Casey (justincc)
0811f3d28d minor: Remove event method doc from LLClientView that I forgot in the last commit (1de80c) 2012-10-18 00:34:10 +01:00
Justin Clark-Casey (justincc)
1de80cdafe minor: move recent OnAgentUpdate/OnPreAgentUpdate event doc up into IClientAPI from LLClientView 2012-10-18 00:04:23 +01:00
Justin Clark-Casey (justincc)
3ec2923022 Reuse the same AgentUpdateArgs object for each AgentUpdate UDP packet (of which there are 10 a second) rather than constructing a new one every time.
We can do this because AgentUpdate packets are handled synchronously.
2012-10-17 23:54:05 +01:00
Justin Clark-Casey (justincc)
faf6b56839 Explicitly return only the incoming AgentUpdate packet as this is the only one we pool atm, rather than attempting to return all incoming packets. 2012-10-17 23:08:14 +01:00
Justin Clark-Casey (justincc)
2ed59ad8ac If RecycleBaseUDPPackets = true, also pool IncomingPackets to reduce memory churn 2012-10-17 21:08:15 +01:00
Justin Clark-Casey (justincc)
f35826eb31 minor: Make BasicCircuitTests.SetUp() call overriden base method instead of ignoring it. 2012-10-16 23:50:45 +01:00
Justin Clark-Casey (justincc)
4e5b2346a5 Add LastMemoryChurn stat using existing data so we can more quickly tell how memory churn changes rather than waiting for the average to move. 2012-10-16 23:44:52 +01:00
Justin Clark-Casey (justincc)
fc861c7904 Add optional pool for the UDPPacketBuffer objects that handle all incoming UDP data.
Even when an avatar is standing still, it's sending in a constant stream of AgentUpdate packets that the client creates new UDPPacketBuffer objects to handle.
This option pools those objects.  This reduces memory churn.
Currently off by default.  Works but the scope can be expanded.
2012-10-16 23:35:05 +01:00
Justin Clark-Casey (justincc)
db4ca57590 Make it possible to separate start and stop lludp packet processing from the console for debug processes.
This is controlled via the "debug lludp start <in|out|all>" and "debug lludp stop <in|out|all>" region console commands.
The command "debug lludp status" will show current status.
2012-10-16 21:55:00 +01:00
Justin Clark-Casey (justincc)
8459b98f68 minor: Comment out log message on every FRIENDS SIM CONNECTOR request for now. 2012-10-16 01:40:25 +01:00
Justin Clark-Casey (justincc)
ab0294f010 Add missing category paremeter to llGiveInventoryList grid IM construction.
This was a regression from 16c9c1df Sat Oct 6 02:34:49 2012 +0100.
Should resolve http://opensimulator.org/mantis/view.php?id=6360
2012-10-16 01:33:35 +01:00
Justin Clark-Casey (justincc)
0eb457442d minor: Add missing newlines and spacing to help for "debug eq" console command 2012-10-16 01:31:51 +01:00
Justin Clark-Casey (justincc)
d469bde849 minor: Add/correct some doc messages associated with entity teleport.
I believe UseCircuitCode is sent on EnableSimulator EQ message, rather than EstablishAgentCommunication
At least with LL 3.3.4, EstablishAgentCommunication appears unnecessary in the teleport context -
viewer still requests it though possibly only after TeleportFinish().  However, we will continue to send it.
2012-10-16 01:20:41 +01:00
Justin Clark-Casey (justincc)
3ac6a423f7 minor: comment out "Registered seed capability" message for "Received SEED caps request" message for now.
I think this is more useful right now since it tells us if the viewer requested a seed caps at all in various scenarios (such as when teleporting to a new region).
2012-10-16 00:54:25 +01:00
Justin Clark-Casey (justincc)
8c2564c05c minor: Comment out the region console caps message for now. 2012-10-16 00:40:28 +01:00
Justin Clark-Casey (justincc)
dc460579fd minor: Fix and elaborate on log information printed when an unrecognized estate method is received from the client. 2012-10-13 01:47:10 +01:00
Justin Clark-Casey (justincc)
946c2e7e7c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-13 01:05:28 +01:00
Justin Clark-Casey (justincc)
330b976a62 Improve on TBG Renfold's fix to llRequestSimulatorData DATA_SIM_POS by only performing HG regionflags service check if the region secret is not empty.
An empty RegionSecret is never HG, whilst a non-empty one may be HG or being genuinely used as a RegionSecret.
2012-10-13 01:03:09 +01:00
TBG Renfold
f6e166cd0b Now using region flags for llRequestSimulatorData DATA_SIM_POS.
If the region is not classed a hypergrid region, then the region secret is checked to make sure that it is a valid UUID.

Just a temporary fix at this time.
2012-10-13 00:50:34 +01:00
Robert Adams
8c40215834 BulletSim: only use native sphere shape if it is a sphere. 2012-10-12 07:41:31 -07:00
Justin Clark-Casey (justincc)
fba59d905c Get rid of accidental scene start left in ScenePresenceAutopilotTests 2012-10-12 03:20:27 +01:00
Justin Clark-Casey (justincc)
b9c2a1508e Fix problems with regression tests by allowing invoke of Update() with a finite number of frames even if the scene isn't active. 2012-10-12 03:19:12 +01:00
Justin Clark-Casey (justincc)
ab7b7c5d3d Get Watchdog to log thread removal 2012-10-12 02:59:28 +01:00
Justin Clark-Casey (justincc)
b5a3c74a5c Add "active true|false" to "debug scene" console command.
This allows the scene update and maintenance loops to be started and stopped for debug purposes.
2012-10-12 02:52:08 +01:00
Justin Clark-Casey (justincc)
b7e75d467c minor: Use && instead of & when deciding whether to print Improve/ObjectUpdate packet out messages when debug is turned on.
Practical effect is probably none.
2012-10-12 02:10:30 +01:00
Justin Clark-Casey (justincc)
8873a4a8fc minor: Fix bug in categorization of blocks reused stat from packetpool 2012-10-12 01:59:47 +01:00
Justin Clark-Casey (justincc)
1e86c58822 Remove now unnecessary OpenSim.Framework.Console reference from Monitoring.
Properly resolve circular reference which no longer appeared in Mono build as there were no using statements for it.
2012-10-12 01:58:46 +01:00
Justin Clark-Casey (justincc)
21d0cbf703 Add AgentUpdate to PacketPool. This is the most common inbound packet from viewers. 2012-10-12 01:39:37 +01:00
Robert Adams
87a87ebb9a BulletSim: fix problem with some shapes (like cylinders) being implemented as cubes. 2012-10-11 17:37:27 -07:00
Justin Clark-Casey (justincc)
3af2095cbc minor: Comment out "Client requested range for texture ... but" message. This is not useful during normal operation. 2012-10-12 00:27:12 +01:00
Justin Clark-Casey (justincc)
59a17ad676 Fix percentage stats to multiply by 100. Adjust container name for packetpool stats. 2012-10-12 00:26:15 +01:00
Justin Clark-Casey (justincc)
8a402850dd Enable reuse of data blocks for ImprovedTerseObjectUpdate using existing Packetpool code. 2012-10-12 00:21:45 +01:00
Justin Clark-Casey (justincc)
387ce8ef35 Fix build break by moving OpenSim.Framework.Console back below HttpServer in the build order.
Luckily, it turns out Framework.Monitoring doesn't need to reference Console directly.
2012-10-12 00:10:51 +01:00
Justin Clark-Casey (justincc)
2e9ef015f7 Fix packetpool for ImprovedTerseObjectUpdate packets.
These were neither being returned or in many places reused.
Getting packets from a pool rather than deallocating and reallocating reduces memory churn which in turn reduces garbage collection time and frequency.
2012-10-11 23:58:37 +01:00
Justin Clark-Casey (justincc)
f5f5f2e3fb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-11 23:56:03 +01:00
Justin Clark-Casey (justincc)
1f2472d0fc Extend "show stats" command to "show stats [list|all|<category name>]"
This allows different categories of stats to be shown, with options to list categories or show all stats.
Currently categories are scene and simulator and only a very few stats are currently registered via this mechanism.
This commit also adds percentage stats for packets and blocks reused from the packet pool.
2012-10-11 23:28:53 +01:00
Robert Adams
b63134764f BulletSim: update the DLLs and SOs 2012-10-11 14:01:35 -07:00
Robert Adams
b24190ec98 BulletSim: remove some unused API2 calls because they were removed from Bullet 2.81 2012-10-11 14:01:29 -07:00
Robert Adams
5b82f18d64 BulletSim: normalize physics FPS to 45 (for real this time). 2012-10-11 14:01:25 -07:00
Robert Adams
a86fedd25f BulletSim: normalize physics FPS to 45. 2012-10-11 14:01:22 -07:00
Robert Adams
3a458e2a36 BulletSim: Use full linkset mass when computing vehicle gravity force. Add taint-time specification to new AddForce(). 2012-10-11 14:01:18 -07:00
Robert Adams
919569f6ec BulletSim: Change defaults for constraint CFM and ERP to make large linksets more rigid. Remove mass calculation for terrain (it should stay a static object). 2012-10-11 14:01:14 -07:00
Robert Adams
a791620622 BulletSim: cosmetic changes (comments and renaming). Give mass to terrain to improve interactions. 2012-10-11 14:01:10 -07:00
Robert Adams
68698975f1 BulletSim: Add Force* operations to objects to allow direct push to engine.
Update BSDynamics to use same (don't want to delay updates til next taint-time.
Suppress queuing a taint update for position and orientation calls if value
    does not change.
Move Bullet timing statistics call from C# back to C++ code.
Throttle taints per simulation step and add parameter to set.
By default, don't create hulls for physical objects. Add a
    parameter to turn on and off.
2012-10-11 14:01:07 -07:00
Robert Adams
87825b0abe BulletSim: Fix crash when linking large physical linksets.
Properly remove and restore linkage constraints when upgrading
    a prim's mesh to a hull.
Lots more debug logging.
Definitions and use of Bullet structure dumping.
Centralize detail logging so a Flush() can be added for debugging.
2012-10-11 14:01:03 -07:00
Diva Canto
311a03befa Updated Robust.HG.ini.example. Thanks Austin Tate. 2012-10-11 13:57:29 -07:00
BlueWall
c8393dd0be Add logging to help track sequence of events 2012-10-11 07:38:15 -04:00
Justin Clark-Casey (justincc)
b768c35f6f Assign endVector before control leaves ObjectCommandsModule.TryParseVectorRange() in order to fix mono 2.4.3 compile failure.
This doesn't fail the compile on mono 2.10.8.
2012-10-11 00:05:34 +01:00
Justin Clark-Casey (justincc)
efd9791506 Add "delete object pos <start-coord> to <end-coord>" console command.
This allows one to delete objects within a certain volume.
See help on console for more details.
2012-10-10 23:30:48 +01:00
BlueWall
83073ebd03 Implement plugin unloading
Plugin may be enabled and disabled on the fly.
2012-10-10 09:35:08 -04:00
BlueWall
08f6c8065e Add System.Core to references 2012-10-10 09:32:31 -04:00
Justin Clark-Casey (justincc)
756ac4f321 Correct osSetContentType() threat check to query osSetContentType rather than osSetResponseType 2012-10-10 01:39:47 +01:00
Justin Clark-Casey (justincc)
11d8119a21 Remove osDropAttachment threat level check wrongly placed in OSSL_Api.ShoutErrorOnLackingOwnerPerms. 2012-10-10 01:37:57 +01:00
Justin Clark-Casey (justincc)
528085adef minor: Add method doc to EventManager.OnNewClient, OnClientLogin, ClientClosed, OnRemovePresence that any long-running operations should be launched on a thread separate to the event thread. 2012-10-10 00:48:20 +01:00
Justin Clark-Casey (justincc)
e76b01a201 Lock on AgentCircuitData during Scene.AddClient() and RemoveClient() to prevent an inactive connection being left behind if the user closes the viewer whilst the connection is being established.
This should remove the need to run the console command "kick user --force" when these connections are left around.
2012-10-10 00:26:43 +01:00
Justin Clark-Casey (justincc)
a3c0e3ed26 minor: elaborate method doc on Scene.NewUserConnection() 2012-10-09 22:19:47 +01:00
Justin Clark-Casey (justincc)
785671e242 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-09 17:29:44 +01:00
Justin Clark-Casey (justincc)
40bf789ad7 Disambiguate use of RegionFlags in NullRegionData
This was not necessary with the nant build but is for xbuild, since xbuild includes associated project DLLs
And so picks up OpenMetaverse.dll even though it isn't referenced by OpenSim.Data.Null.dll
2012-10-09 17:20:01 +01:00
teravus
7e90ea3551 av_av_collisions_off = false OdePhysics Settings in OpenSimDefaults.ini - No Avatar Avatar Collisions. This causes avatar to be able to walk through each other as if they're ghosts but still interact with the environment. 2012-10-09 10:41:16 -04:00
teravus
764270a0d8 Add config option to plant avatar where they are reducing avatar avatar 'pushability' av_planted see OpenSimDefaults.ini. Use when you have unruly visitors that rudely push each other around. Still allows a small amount of movement based on the avatar movement PID controller settings. You can increase the spring tension in the PID controller and really prevent any movement if you would like. 2012-10-09 09:26:11 -04:00
BlueWall
a960efeaba Fix registry issue
Rebuild registry if loading from a local dll to give access to the addin data for it on the first pass.
2012-10-09 08:00:02 -04:00
BlueWall
92849c5cc3 missed some conflict markup 2012-10-09 07:59:44 -04:00
BlueWall
252af020b0 Merge branch 'master' into connector_plugin
Conflicts:
	OpenSim/Server/ServerMain.cs
2012-10-09 06:44:14 -04:00
Justin Clark-Casey (justincc)
ef3cc2e507 minor: Add documentation to IGridService.GetRegionFlags() 2012-10-09 01:40:55 +01:00
Justin Clark-Casey (justincc)
a0d047413b Once again, forgot to add a file. 2012-10-09 01:37:02 +01:00
Justin Clark-Casey (justincc)
73c9abf5f2 Move OpenSim.Data.RegionFlags -> OpenSim.Framework.RegionFlags to make it easier for other code to use (e.g. LSL_Api) without having to reference OpenSim.Data just for this. 2012-10-09 01:35:27 +01:00
Dan Lake
d342adaa87 Merge branch 'master' of git://opensimulator.org/git/opensim 2012-10-08 15:25:26 -07:00
Melanie
f65218f826 Fix build break 2012-10-08 19:02:21 +01:00
Melanie
839aa57b42 Update the example 2012-10-08 18:01:56 +01:00
Melanie
ff92330523 Add a ServiceList section to Robust .ini to get rid of the long string 2012-10-08 17:57:22 +01:00
Melanie
90a39379f0 Allow other whitespace characters than spaces in Robust connection string 2012-10-08 17:36:40 +01:00
BlueWall
440726250c Added parts to manage repositories and plugin management
This is working - more testing to follow, then soem documentation
2012-10-06 11:48:21 -04:00
Justin Clark-Casey (justincc)
13c4fd7271 refactor: Rename UserSessioNID -> UserSession in WebStatsModule since this is what it actually represents 2012-10-06 04:06:27 +01:00
Justin Clark-Casey (justincc)
9de991301c Make UserSessionID a class rather than a struct, so that later updates to value suceed (rather than having to pull the data out and reinsert back into the Dictionary).
Fixes http://opensimulator.org/mantis/view.php?id=6338
2012-10-06 04:04:50 +01:00
Justin Clark-Casey (justincc)
16c9c1dff7 On receiving TaskInventoryAccepted with a destination folder in the binary bucket slot for RLV, notify the viewer about inventory folder updates.
The viewer would not see the folder move without this, either on accept or decline.
This commit also updates the TaskInventoryOffered message to better conform with the data LL uses
Changes are, agentID is prim owner rather than prim id, agent name is now simply object name rather than name with owner detail,
message is just folder name in single quotes, message is not timestamped.
However, folder is not renamed "still #RLV/~<name>".  Long term solution is probably not to do these operations server-side.
Notes will be added to http://opensimulator.org/mantis/view.php?id=6311
2012-10-06 02:34:49 +01:00
Dan Lake
91ca3117cb Add bool to TriggerSceneObjectPartUpdated where full = true indicates a full update. There should be a better way to indicate which properties have changed that is non LLUDP-centric 2012-10-05 17:32:07 -07:00
Dan Lake
6f220a8679 Trigger ObjectAddedToScene when loading objects from oarfile. Already triggers when creating, duplicating or loading from database, incoming attachments, etc 2012-10-05 17:30:27 -07:00
Justin Clark-Casey (justincc)
1fb53e7103 Fix bug in implementation of "show part pos" that would not filter probably.
Also refactors more of ObjectCommandsModule to remove duplicate code
2012-10-05 04:31:43 +01:00
Justin Clark-Casey (justincc)
22f6fa49e3 Add "show part pos" console command to match "show object pos" 2012-10-05 04:22:08 +01:00
Justin Clark-Casey (justincc)
16feed456a refactor: eliminate some now duplicate code in ObjectCommandsModule 2012-10-05 04:16:38 +01:00
Justin Clark-Casey (justincc)
68859af3f8 Add Vector3.Zero return on TryParseConsoleVector() which fails on mono 2.4.3 but not mono 2.10.9 2012-10-05 03:58:52 +01:00
Justin Clark-Casey (justincc)
633e1ed62c Add missing ConsoleUtil from last commit 2012-10-05 03:57:35 +01:00
Justin Clark-Casey (justincc)
130768b16a Add "show object pos <start-coord> to <end-coord>" command to simulator console.
This allows you to display details of all objects in a given bounding box.
Values parts of the co-ord can be left out as appropriate (e.g. to get all objects between the ground and z=30.
See "help show object pos" for more details.
2012-10-05 03:52:42 +01:00
Justin Clark-Casey (justincc)
8cd1dc8d60 minor: Add missing license information from the top of IUserManagement 2012-10-05 02:07:28 +01:00
Justin Clark-Casey (justincc)
d87813a194 Finally fix build break by allowing UserManagementModule (which constructs a packet directly) to reference OpenSim.Region.ClientStack.LindenUDP.
This time I actually properly did a clean build
2012-10-05 02:02:19 +01:00
Justin Clark-Casey (justincc)
046113c137 Print number of objects found with "show object name" and "show part name" simulator console commands 2012-10-05 01:46:28 +01:00
Justin Clark-Casey (justincc)
03136df1a7 Forgot to actually remove the packetpool set code from scene. 2012-10-05 01:45:49 +01:00
Justin Clark-Casey (justincc)
7c7cdf3431 Read PacketPool config in LLUDPServer with other config params rather than in Scene.
This is to resolve previous build break.
This unnecessarily but harmlessly reads and sets the parameter multiple times - scene was doing the same thing.
2012-10-05 01:43:29 +01:00
Justin Clark-Casey (justincc)
4832ed6960 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-05 01:32:02 +01:00
Justin Clark-Casey (justincc)
f0178a6a41 refactor: Move OpenSim.Framework.PacketPool to OpenSim.Region.Clientstack.Linden.UDP
This is to allow it to use OpenSim.Framework.Monitoring in the future.
This is also a better location since the packet pool is linden udp specific
2012-10-05 01:12:56 +01:00
Diva Canto
276fdbc1b3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-10-04 15:33:17 -07:00
Diva Canto
5b90f5bb17 One more abstraction for GridUser so that it can be overridden in a sub-class. 2012-10-04 15:32:49 -07:00
Mic Bowman
d98af79f77 Make the asset retrieval concurrency a config switch. The current value
of 30 is still hanging badly on some mono versions. The switch defaults to
30 to preserve current behavior.
2012-10-04 08:41:06 -07:00
Melanie
b977f962fa Allow default animation to be stopped to be replaced with another one.
Fixes Mantis #6327
2012-10-04 15:42:52 +01:00
BlueWall
741471e02c Remove duplicate files
We are keeping these in bin/lib(32/64) now
2012-10-03 21:49:58 -04:00
Justin Clark-Casey (justincc)
aa52c8b20f Output monitor data in response to console command on MainConsole.Instance rather than m_log
This should really be happening for all console commands (though many don't).
However, things might get difficult if both a console command and other code invoke the same paths.
2012-10-04 02:17:57 +01:00
Justin Clark-Casey (justincc)
3d36a6d55c Add generic PercentageStat.
Not yet used.
2012-10-04 01:27:40 +01:00
BlueWall
227cfbdc67 Update Mono.Addins
Update Mono.Addins to latest - 3177b22e958c82bf2c5655ac3d4ef7ad25cc2588
2012-10-03 19:48:54 -04:00
Justin Clark-Casey (justincc)
e717398f6c Add experimental "slow frames" stat, available in "show stats" and via the monitoring module.
This increments a SlowFrames counter if a frame takes over 120% of maximum time.
This commit also introduces a generic OpenSim.Framework.Monitoring.Stat which is available to any code that wants to register a statistic.
This is more granualar than asking objects to create their own reports.
At some point this will supersede earlier IMonitor and IAlert facilities in MonitoringModule which are only available to scene code.
2012-10-04 00:32:42 +01:00
BlueWall
e6c9b09006 Merge branch 'master' of /home/opensim/var/repo/opensim into modular_config 2012-10-03 19:14:40 -04:00
teravus
a2ab3b88de Soliciting for comments on smoothness of physics objects for this build.
This introduces expected contact point hints to the ODE Collider to better determine when to throttle updates as excessive.   This /should/ smooth physics objects out again, however, I cannot know every configuration of OpenSimulator, so I'm requesting that testers please examine this change on their build.
Thanks!
2012-10-03 18:30:44 -04:00
BlueWall
3e71c71cbf Add modular configuration for Robust connectors
We can provide modular ini for connectors...

    look for our configuration in the following places...
      1) in the default ini/-inifile
      2) in the named file (ConfigName) located in the configured directory
            (see Robust[.HG].ini [Start] section for ConfigDirectory)
      3) in the repository named in the connector (ConfigURL)
           In this case, the file will be written into the configured
           directory with the specified

  See example connector/service @ https://github.com/BlueWall/SlipStream
  for testing.
2012-10-03 16:07:11 -04:00
Mic Bowman
b9baab5521 Fix the use of the wrong index when locating the assets associated
with wearables. The fact that this hasn't caused problems earlier
suggests either that no one is using multiple layers of wearables or
that this code is useless because the assets are coming in with the
wearables request.
2012-10-03 10:45:57 -07:00
Melanie
653a98e891 Fix a viewer crash issue
Conflicts:

	OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
2012-10-03 17:39:13 +01:00
teravus
e56ef2720e I propose that 0.5m/step change for linear velocity is too big of a change to control the reporting of a new angular velocity. I think that this could be here for one of two reasons, 1. vehicles and llMoveToTarget with axis lock, or 2. To attempt to make things look more stable in the physics scene then they really are, however, this also really affects the angular velocity reporting negatively causing things to spin wildly and jump back into place repeatedly. To compromise, if the prim is a vehicle or is being used as a motor target, the original functionality is still applied. If that's not the case, angular velocity is reported with a linear velocity of 0.02m/step. To be clear on the effect of the physical world... When you push things, there's still a lag time where you walk into the object but once the object is in motion, it begins to move as you would expect so results in slightly more realistic motion. 2012-10-03 02:30:23 -04:00
teravus
df3d1d1301 Minor Modification, switch /2 to 0.5f in ODEPrim.Velocity 2012-10-02 23:14:35 -04:00
Robert Adams
a5b8359b8e BulletSim: fix crash on load that showed up on 32bit Linux. 2012-10-02 17:04:33 -07:00
Melanie
ca5c0814f4 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-10-02 23:02:53 +01:00
Melanie
f1886c449c Attempt to fix Mantis #6311. Honor a destination folder if one is given 2012-10-02 23:02:01 +01:00
SignpostMarv
a1679517d3 correcting typo 2012-10-02 22:14:47 +01:00
SignpostMarv
f555febdb7 taking into account the recent introduction of implicit operators 2012-10-02 22:14:46 +01:00
SignpostMarv
ce7694c108 added perms checking, duplicated functionality to methods that do not require perms and have higher threat level 2012-10-02 22:14:46 +01:00
SignpostMarv
c677c04f10 fixing copypasta 2012-10-02 22:14:46 +01:00
SignpostMarv
35b7c80e0b implementing osDropAttachment & osDropAttachmentAt 2012-10-02 22:14:46 +01:00
SignpostMarv
e81e19a3b4 string format arguments in wrong order 2012-10-02 22:11:40 +01:00
Robert Adams
210f227fe6 BulletSim: Make parameter value defaults match what should be the default and what is in OpenSimDefaults.ini. Comment and debug printout changes. 2012-10-02 11:14:15 -07:00
Robert Adams
ce47d0c454 BulletSim: Add ForcePosition and ForceOrientation to BSPhysObject and to its children of BSPrim and BSCharacter. 2012-10-02 11:14:09 -07:00
Robert Adams
d8a786870b BulletSim: Fix problem where box shapes were not being rebuilt if the shape type changed. 2012-10-02 11:14:03 -07:00
Robert Adams
ce97ebdc88 BulletSim: Fix linkset problem where delayed manipulations of child objects was using the child shape address at call time rather than the one created at taint time. 2012-10-02 11:13:57 -07:00
Robert Adams
b6b505163c BulletSim: call ForcePosition and ForceOrientation in BSDynamics so there is no lag between what the vehicle code sees and what the physics engine is using. 2012-10-02 11:13:51 -07:00
Robert Adams
1e5869dcf6 Add Flush() method to LogWriter. Also correct line endings to Linux form. 2012-10-02 11:13:45 -07:00
Robert Adams
f2c78281ce BulletSim: fix the FloatOnWater code so avatars can normally go underwater. 2012-10-02 11:13:39 -07:00
Robert Adams
33617e09a1 BulletSim: impliment FloatOnWater OS function. 2012-10-02 11:13:32 -07:00
Robert Adams
c1740a2903 Correct my name in CONTRIBUTORS.txt 2012-10-02 11:13:26 -07:00
Robert Adams
5221f2421e BulletSim: remove warnings for unused variables. 2012-10-02 11:13:20 -07:00
Melanie
54ec8b197b Add money event routing to the script engine. 2012-10-02 01:25:55 +01:00
Melanie
14b659e550 Send money() events to the clicked prim. Reverting a change I made over a year ago. 2012-10-02 01:17:46 +01:00
Melanie
402128bb53 Prevent the ExtraSettings code from crashing SQLite driven sims. 2012-10-02 00:51:38 +01:00
Diva Canto
0b9bf236dd On more virtual method 2012-10-01 15:55:24 -07:00
Melanie
503ce70f74 Allow setting connection limits, part 2 2012-09-30 16:31:23 +01:00
Melanie
060d6fe8f4 Allow setting max connections for an endpoint 2012-09-30 16:30:16 +01:00
Melanie
7cc89cdadc Add using clause I missed 2012-09-30 15:57:49 +01:00
Melanie
f8a4b61954 Allow up to 12 simultaneous connections to a given endpoint rather than 2 2012-09-30 15:49:51 +01:00
Diva Canto
91a5c602e3 Revert "Added request.Proxy=null everywhere, as discussed in http://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow."
But the patch is here, in case anyone wants to try it.

This reverts commit 531edd51d8.
2012-09-30 07:48:03 -07:00
Diva Canto
531edd51d8 Added request.Proxy=null everywhere, as discussed in http://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow.
Thanks R.Gunther (rigun@rigutech.nl) https://lists.berlios.de/pipermail/opensim-users/2012-September/010986.html
2012-09-30 07:22:55 -07:00
Diva Canto
14a4b146bf Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-30 06:52:19 -07:00
Diva Canto
5b69872655 Made a method of GridUserService virtual so it can be overridden. 2012-09-30 06:51:49 -07:00
Justin Clark-Casey (justincc)
4e9509dafa Get rid of some unnecessary casts in RemoteAdminPlugin.
This was stopping http://code.google.com/p/opensimtools/wiki/RemoteAdminPHPClass from working with some methods (e.g. create_user).
However, this casting has been around for at least 2 years so I'm puzzled that it worked in the first place, though it probably is extremely old sample code.
2012-09-29 02:57:28 +01:00
Justin Clark-Casey (justincc)
f457952755 Fix bug where debug http level 6 could not be specified. Also converts newlines at this level to '\n' to enable them to be logged. 2012-09-29 02:38:21 +01:00
Justin Clark-Casey (justincc)
818379ba14 Fire EventManager.TriggerOnAttach (and hence LSL attach event) when an object is attached from the scene.
Enables previously disabled regression test.
Based on SingpostMarv's patch in http://opensimulator.org/mantis/view.php?id=6302 but I prefer a simpler approach that does not expose a resume scripts option right now.
2012-09-29 01:14:23 +01:00
Justin Clark-Casey (justincc)
fae869c4ca Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-29 00:09:12 +01:00
Justin Clark-Casey (justincc)
d588467d5b Extend attachment regression test to check for appropriate attach event firing.
This reveals that the event is not being fired when an object is attached from ground, which is incorrect.
This check is temporairly disabled.
2012-09-29 00:07:11 +01:00
nebadon
e3d6d36c72 testing for xml-rpc errors in git repo. 2012-09-28 13:00:08 -07:00
Robert Adams
7f96bb601a BulletSim: update SOs and DLLs 2012-09-28 12:51:47 -07:00
Robert Adams
76e9cc41bd BulletSim: remember to release the physical body and shape when a prim is destroyed. This fixes many problems with physical linksets. 2012-09-28 12:34:50 -07:00
Robert Adams
6f89975526 BulletSim: add separate runtime and taint-time linkset children lists to keep the creation of constraints separate from runtime. 2012-09-27 22:02:13 -07:00
Robert Adams
74dea4cfd5 BulletSim: rename some constraint variables to be consistant with other name use.
Added callbacks for shape and body changes in GetBodyAndShape() so the linkset
    constraints can be picked up and restored. A better design might be to have
    a "prim shape changed" event. Think about that.
Added constraint types to general constraint class.
2012-09-27 22:02:08 -07:00
Robert Adams
7b65985047 BulletSim: remove the trailing spaces from lines to make git happier 2012-09-27 22:02:03 -07:00
Robert Adams
5781d4d52d BulletSim: remove the unused body management code from BSPrim. There is no going back now. 2012-09-27 22:01:57 -07:00
Robert Adams
f82b903dee BulletSim: Fix linkset crash. Caused by the different body and shape
pointers at runtime and at taint-time. Now passes the body into the
    taint.
Vehicles zero inertia when active to eliminate Bullet's contribution
    to vehicle motion.
2012-09-27 22:01:52 -07:00
Robert Adams
4589bc84a3 BulletSim: Terrain sets proper collision flags on creation.
Static objects are set to ISLAND_SLEEPING rather than DISABLE_SIMULATION.
    Might reconsider this and, alternatively, have dynamic objects force activation.
Clean up use of DetailLog().
2012-09-27 22:01:47 -07:00
Robert Adams
735d89e369 BulletSim: btGhostObjects working to make 'volume detect' work.
Rearrangement and cleanup of shape collection code. Much more readable.
Enabling and use of collision filters and masks.
Addition of ID to body creation BulletSimAPI calls so always set in
    shape for collision reporting.
Change default of ShouldSplitSimulationIslands and ShouldRandomizeSolverOrder
    from 'false' to 'true'. When 'false', this suppresses NO_CONTACT_RESPONSE
    which makes volume detect fail.
2012-09-27 22:01:42 -07:00
Robert Adams
d016051fa0 BulletSim: renamed members of BulletShape, BulletSim and BulletBody
so the members case is consistant. Caused modifications everywhere.
New logic in BSShapeCollection to track use and sharing of shapes.
    I just reslized, though, that shapes cannot be shared because the
    shape's UserPointer is the localID of the prim and is required
    for tracking collisions. More changes coming.
Added DuplicateCollisionShape2() to API and changed BuildNativeShape2
    to take a ShapeData structure so don't have to pass so many parameters.
    This matches the latest version of BulletSim.dll.
Additions and removal of DetailLog() statements for debugging.
2012-09-27 22:01:37 -07:00
Robert Adams
42802669dd BulletSim: fix regression that caused cylindar shapes to have a box collision shape 2012-09-27 22:01:31 -07:00
Robert Adams
22290ef35a BulletSim: complete code for managed code shape and body tracking. Not debugged.
Eliminate some null exceptions created adding the above code.
Add and remove some detailed logging statements.
2012-09-27 22:01:26 -07:00
Robert Adams
a27e4ce6cb BulletSim: add class and infrastructure for shape and object
tracking in the C# code. Needed for the changing body type
    (to and from GhostObjects) for volumeDetect.
2012-09-27 22:01:21 -07:00
Robert Adams
91efccabdc BulletSim: Convert BSCharacter to use common BSPhysObject code and variables.
Fix avatar height calculation to properly account for the capsule ends.
Rearrange some locking in TerrainManager to eliminate possible race conditions.
Move DetailLog() definition into common BSPhysObject class.
Some variable renaming to make usage clearer (refactor.rename makes this so easy).
2012-09-27 22:01:16 -07:00
Robert Adams
ee7cda261c BulletSim: move a bunch of common logic out of BSPrim and BSCharacter
and into the parent class BSPhysObject.
Rework collision logic to enable extra collision after done colliding.
Rename 'Scene' to 'PhysicsScene' to differentiate it from the simulator 'Scene'.
2012-09-27 22:01:11 -07:00
Justin Clark-Casey (justincc)
d26fbf727a Comment out unused RestPlugins text in OpenSimDefaults.ini 2012-09-28 02:19:15 +01:00
Justin Clark-Casey (justincc)
b5af17c8e3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-28 01:54:39 +01:00
Justin Clark-Casey (justincc)
3db10fdbef Lock GDI+ portion og VectorRenderModule.GetDrawStringSize() to prevent concurrent thread use provoking mono crashes.
Same rationale as commit 13690582.
2012-09-28 01:50:21 +01:00
Diva Canto
6511c3b5c6 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-27 16:43:38 -07:00
Diva Canto
7a50705188 Removed the bits about the TOSModule. That module doesn't go into core. WARNING: migration on GridUser withdrawn too, but left the migration number there. 2012-09-27 16:43:18 -07:00
nebadon
0e5d3d051b another osgitbot test from github.. mistakes were made! 2012-09-27 06:51:14 -07:00
nebadon
f5fac2c916 another test to see if gitbot is alive yet 2012-09-27 06:37:43 -07:00
nebadon
581e76942f just testing to see if pcampbot is alive yet 2012-09-26 17:49:48 -07:00
Justin Clark-Casey (justincc)
2bf42f30af Add MaxPrimsUndo config setting to [Startup] section of OpenSim.ini.
This controls how many undo steps the simulator will store for each prim.
Default is now 20 rather than 5 as it briefly was.
The default number could be increased through this is a memory tradeoff which will scale with the number of prims in the sim and level of activity.
2012-09-27 00:12:34 +01:00
Justin Clark-Casey (justincc)
b9934fc4db Don't store undo states if a scene object is manipulated when it is not in a scene.
Adds regression test for this.
2012-09-26 23:31:10 +01:00
Justin Clark-Casey (justincc)
31c636f1e4 refactor: Change control structures in SOP.StoreUndoState() to reduce nesting. 2012-09-26 23:25:50 +01:00
Justin Clark-Casey (justincc)
36e3123069 Make it possible to rescale SOGs when they are not in a scene. 2012-09-26 23:17:21 +01:00
Justin Clark-Casey (justincc)
327320d1a7 Enforce existing 5 action hardcoded undo limit.
This was present in the code but not enforced, which led to a memory leak over time as part properties were changed, whether by viewer, script or another source.
This commit enforces that limit, which will soon become configurable.
Regression test for undo limit added
Should help with http://opensimulator.org/mantis/view.php?id=6279
2012-09-26 22:49:44 +01:00
Justin Clark-Casey (justincc)
21f30a1b5f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-26 22:49:05 +01:00
Justin Clark-Casey (justincc)
90dd5844d6 Add basic undo/redo regression tests. 2012-09-26 21:28:43 +01:00
Diva Canto
3c77b8f463 Use GridUser properly for foreign users. 2012-09-26 12:40:41 -07:00
Diva Canto
80133f9ebe Show the user's home url too on the console command. 2012-09-26 11:27:31 -07:00
Diva Canto
2f61763923 Not really a change, just added a reminder to fix something here. 2012-09-26 11:26:51 -07:00
Diva Canto
7d2cd0d935 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-25 20:04:10 -07:00
Diva Canto
ae58cf4224 TOS module. WARNING: migration in GridUser table. 2012-09-25 20:03:49 -07:00
Diva Canto
495a3e7daf Oops, that should be inside the curly bracket. 2012-09-25 19:54:42 -07:00
Justin Clark-Casey (justincc)
92afa6aa44 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-25 23:32:52 +01:00
Justin Clark-Casey (justincc)
ddd9384b39 Fix very recently introduced race condition where a CreateNewItem outracing an UploadAsset request could throw an exception because m_asset did not yet exist.
This was accidentally introduced in 4fc0cfb
This commit also consistently removes the AssetXferUploader when the transaction completes, no matter if it completed on asset upload or item operation.
The amount of data being retained was small, since this was clothing/bodypart metadata in the asset rather than textures themselves.
2012-09-25 23:30:25 +01:00
BlueWall
4dc27aa91f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-25 18:14:06 -04:00
Justin Clark-Casey (justincc)
b96a53962b Comment out old m_storeLocal from AssetXferUploader.
This was only used if none of new item, update item or update task item had been set.
But since all transactions go through these paths this old code is redundant.
2012-09-25 23:13:45 +01:00
BlueWall
3c2fb77133 Format OpenSim.ini.example
Make lines fint in 80x24 terminal for easier reading
2012-09-25 18:13:32 -04:00
Justin Clark-Casey (justincc)
eb5bec96e4 Insert transaction ID into AssetXferUploader constructor rather than at UploadAsset() to prevent item creation failure when NewInventoryItem thread reachs the object first.
This was preventing the previous race condition fix in 4fc0cfb from actually working.
This commit also removes some of the pointless transaction id checks - these conditions are already being enforced in AgentAssetsTransactions.
2012-09-25 22:54:20 +01:00
Justin Clark-Casey (justincc)
2f795e4fa6 Move UDP update task item code to AssetXferUploader to match existing create user item and update user item mechanisms
This is done for consistency and to allow removal or some access methods that increase code complexity.
However, this path has not been used for a long time, not even by LL 1.23 - viewers use caps http upload for this instead
2012-09-25 22:08:11 +01:00
Justin Clark-Casey (justincc)
4fc0cfba3c Fix occasional race condition failure when creating new clothing/body parts in the viewer or updating existing assets.
On creating these items, the viewer sends a UDP AssetUploadRequest followed by a CreateInventoryItem.
It was possible for the CreateInventoryItem/UpdateInventoryItem to occasionally outrace the AssetUploadRequest and fail to find an initialized Xfer object, at which point the item create would fail.
So instead we always set up a Xfer object on either the asset or inventory item update request.
This does not introduce a new race because code already exists to delay the item operation until the asset is uploaded if necessary (but this only worked if the xfer object already existed)
2012-09-25 21:35:39 +01:00
Diva Canto
77355295da Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-25 10:46:42 -07:00
Diva Canto
4ec2fc4cc2 Deleted extraneous debug message 2012-09-25 10:46:21 -07:00
SignpostMarv
020103c51e Documenting object-related events 2012-09-24 22:59:02 +01:00
Justin Clark-Casey (justincc)
ac02cadbdb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-24 22:52:33 +01:00
SignpostMarv
1cfd63d0b4 Documenting LSL script-related events 2012-09-24 22:44:37 +01:00
Diva Canto
1c42337381 HG Rez object: warn the user if the item or asset cannot be found. 2012-09-22 14:41:19 -07:00
Diva Canto
87d810217e Guard against inventory get failures. 2012-09-22 14:01:51 -07:00
Diva Canto
772aedc731 Make BaseHttpServer throws say something useful. 2012-09-22 14:01:07 -07:00
Diva Canto
fb6d6e5cca HG 2.0: User Agent Service now can also control where the local users can go. Domain-name and user-level based. \o/ 2012-09-22 11:11:48 -07:00
Diva Canto
48f4b32d7f More HG 2.0: access control at the Gatekeeper. \o/ 2012-09-21 21:03:14 -07:00
Diva Canto
ebd99c9e3e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-21 17:59:42 -07:00
Diva Canto
21a6ef5bb6 This fixes HG attachments' missing assets (textures, etc).
Also, further improvements on HGUuidGatherer: if the assets are already in this grid don't fetch them again.
2012-09-21 17:58:44 -07:00
Michelle Argus
a6f7328216 Remove deprecated parameters for region_id.
Remove deprecated parameters for region_id as anounced in january 2012.
2012-09-22 01:30:38 +01:00
Justin Clark-Casey (justincc)
b36ef60aca Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-22 01:05:33 +01:00
SignpostMarv
8d7b1f8aa0 Documenting non-LSL script-related events 2012-09-22 00:57:29 +01:00
Diva Canto
b0da4b8d13 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-21 16:45:35 -07:00
Diva Canto
cfa022700d Moved the small HGUuidGatherer class to the file where its parent class is. No need to keep 2 separate files. 2012-09-21 16:45:16 -07:00
Justin Clark-Casey (justincc)
9ab5c5040d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-22 00:26:32 +01:00
Justin Clark-Casey (justincc)
5df3944607 Fix llListFindList() returning no match when there is a match with a script constant component in the source list.
Adds regression test for this case.
Based on http://opensimulator.org/mantis/view.php?id=6156
Thanks SignpostMarv.
2012-09-22 00:23:25 +01:00
Diva Canto
fb2ace6fff Removed redundant asset fetches on HGAssetMapper. The UuidGatherer already downloads the assets, so we don't need to do it again... 2012-09-21 15:55:58 -07:00
Diva Canto
f931c0a868 Minor: may avoid crashes of sims that still don't have this configuration section. 2012-09-21 15:04:41 -07:00
Diva Canto
f4cc19968c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-21 07:45:26 -07:00
Diva Canto
b542622b3a HG 2.0: added asset import/export policies at the sim too. 2012-09-21 07:44:18 -07:00
Diva Canto
5f97b3e1d9 Minor: change the return value of unsuccessful posts to string.Empty. 2012-09-21 06:41:32 -07:00
Diva Canto
e379566e6e Improvement over last commit: refactor the asset permissions code, so that it can be used by both the HG Asset Service and the simulator. Also renamed the config vars to something more intuitive 2012-09-20 19:50:57 -07:00
Justin Clark-Casey (justincc)
80f486c778 minor: Make slow outgoing request log messages consistent with other log messages 2012-09-21 01:59:28 +01:00
Justin Clark-Casey (justincc)
632a42e2b1 Rename UuidGather.m_assetCache to m_assetService. If HGUuidGatherer hasn't been instantiated with an assetServerURL then call down to overriden UuidGatherer.GetAsset() instead of calling m_assetService.GetAsset() itself - these two codepaths are now identical. 2012-09-21 01:57:13 +01:00
Justin Clark-Casey (justincc)
bceef401fa Simplify UuidGatherer by performing asset fetch synchronously rather than using the async call but waiting for completion anyway! 2012-09-21 01:36:23 +01:00
Justin Clark-Casey (justincc)
1b0abf8f0c Comment out the long unused afaik HTTP agent handlers.
As far as I know, this was only used by the IBM Rest modules, much of which has been commented out for a very long time now.  Other similar code uses HTTP or stream handlers instead.
So commenting this out to reduce code complexity and the need to make this facility consistent with the others where it may not be used anyway.
If this facility is actually being used then please notify me or uncomment it if you are core.
2012-09-21 00:29:13 +01:00
Justin Clark-Casey (justincc)
e29d563557 Add request number counting to incoming HTTP requests in the same way that this was already being done for outgoing HTTP requests.
This allows us to associate debug logging messages with the right request.
It also allows us to put a request number on 'long request' logging even if other debug logging is not enabled, which gives us some idea of whether every request is suffering this problem or only some.
This is a separate internal number not associated with any incoming number in the opensim-request-id header, this will be clarified when logging of this incoming request number is re-enabled.
This commit also adds port number to HTTP IN logging to allow us to distinguish between different request numbers on different ports.
2012-09-21 00:09:17 +01:00
Diva Canto
33aa6d172f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-20 15:51:27 -07:00
Diva Canto
3089b6d824 More HG2.0: Added permission policies in HGAsset Service based on asset types. The policies are given in the config. This is only half of the story. The other half, pertaining to exports/imports made by the sim, will be done next. 2012-09-20 15:49:22 -07:00
Justin Clark-Casey (justincc)
a5b3989e5d Insert a new log level 4 for HTTP IN and HTTP OUT that will log how long the request took.
This is only printed if debug http level >= 4 and the request didn't take more than the time considered 'long', in which case the existing log message is printed.
This displaces the previous log levels 4 and 5 which are now 5 and 6 respectively.
2012-09-20 23:18:19 +01:00
Justin Clark-Casey (justincc)
387a1bb283 Add ability to turn on/off logging of outgoing HTTP requests flowing through WebUtil.
This is for debugging purposes.
This is controlled via the "debug http" command which can already log incoming requests.
This now gains a mandatory parameter of in, out or all to control what is logged.
Log messages are also shortened and labelled and HTTP IN or HTTP OUT to be consistent with existing UDP PACKET IN and PACKET OUT messages.
2012-09-20 23:17:44 +01:00
Justin Clark-Casey (justincc)
b481a78234 Don't fail to create an IRC nick if nick randomization is disabled in the IRC module.
Patch from http://opensimulator.org/mantis/view.php?id=6293
Thanks Starflower.
2012-09-20 02:01:01 +01:00
SignpostMarv
d667f9d260 Documentation of teleport-related events 2012-09-20 01:56:18 +01:00
SignpostMarv
696b3f66c4 minor tweaks to existing comments for IDE goodness 2012-09-20 01:50:40 +01:00
SignpostMarv
49e2872f9e Documentation of agent-related events 2012-09-20 01:50:40 +01:00
SignpostMarv
61f4523e01 Documentation of object-related events 2012-09-20 01:48:50 +01:00
SignpostMarv
a74167bb06 Documentation of OnPluginConsole 2012-09-20 01:47:03 +01:00
Justin Clark-Casey (justincc)
f2a9d26118 Make ResendAppearanceUpdates = true by default in [Appearance] in OpenSimDefaults.ini.
This resends appearance uuids to avatars in the scene once a minute.
I have seen this help in the past resolve grey appearance problems where viewers have for unknown reasons sometimes ignored the packet.
The overhead is very small since only the UUIDs are sent - the viewer then requests the texture only if it does not have it cached.
This setting will not help with cloudy avatars which are usually due to the viewer not uploading baked texture data or uploading something that isn't valid JPEG2000
2012-09-20 01:40:05 +01:00
Justin Clark-Casey (justincc)
e50b6b5334 Update libopenjpeg libraries used by libopenmetaverse back up to 1.5, this time using lkalif's linux libraries built against a much earlier libc (2.7) 2012-09-20 01:26:35 +01:00
Justin Clark-Casey (justincc)
967d42d393 Correctly override and call base OpenSimTestCase.SetUp() method in GridConnectorsTests and ArchiverTests.
Remove unrelated compile warning from AttachmentsModuleTests.
2012-09-19 01:06:42 +01:00
Justin Clark-Casey (justincc)
e50155ebca Downgrade libopenjpeg back to 1.3 from 1.5.
This is because libopenjpeg 1.5 appears to require a minimum of glibc 2.14, whereas at least one fairly recent distro (openSUSE 11.4 from 2011-03-10) only has glibc
Further investigation pending.
2012-09-19 00:35:06 +01:00
Justin Clark-Casey (justincc)
f99278c956 Add openmetaverse_data from libopenmetaverse to allow testing of texture baking via bot rather than just throwing out errors 2012-09-18 23:57:00 +01:00
justincc
95809cabd9 Update libopenmetaverse components to commit f5cecaa
Among other things this allows pCampbot to work under Windows since libopenmateverse now ships the same log4net.dll (publicly signed) as OpenSimulator
This also updates the libopenmetaverse embedded libopenjpeg from 1.3 to 1.5.
DLL naming and mapping for non-Windows libopenjpeg changes to remove version number to make future udpates easier and bring it into line with names of other shipped DLLs.
libopenjpeg updates have been made for OSX, Windows (32 and 64 bit) and Linux (32 and 64 bit).  Please report any issues.
2012-09-18 23:45:06 +01:00
BlueWall
9d973ec3b3 Cleanup from prev. commit
Make correct defaults to Phys/nonPhys prims to fix errors in prev. commit
2012-09-18 10:12:32 -04:00
BlueWall
d29fc53052 Fix some inconsistencies in configurartion: NonPhys prims
Fix inconsistencies between configuration parameter names and their description names. Changing the configuration parameters for non physical prim size min-max from Nonphys* to NonPhys*.

  Please update your OpenSim.ini and Regions.ini to reflect these changes.
2012-09-18 09:53:45 -04:00
Mic Bowman
91312daeb2 Moving ScriptModuleComms into the CoreModules tree. 2012-09-17 09:04:54 -07:00
SignpostMarv
0e5f5538bc Documentation of IScriptModuleComms.RegisterConstant and IScriptModuleComms.LookupModConstant
Signed-off-by: Melanie <melanie@t-data.com>
2012-09-17 14:15:52 +01:00
SignpostMarv
f9721573d9 Implementing ability to register script constants and invocations on a region module automatically 2012-09-17 14:15:47 +01:00
SignpostMarv
c7948a669a preventing a null reference exception from being thrown
Signed-off-by: Melanie <melanie@t-data.com>
2012-09-17 13:29:15 +01:00
SignpostMarv
5e626ce55d script invocations cannot have void return type 2012-09-17 13:29:01 +01:00
Diva Canto
380962d359 HG2.0: Generalized the allowed HG appearances to be more than 1. 2012-09-16 16:45:57 -07:00
Diva Canto
daa4745fb7 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-15 19:35:33 -07:00
Diva Canto
de69a24574 More on HG2.0: added the possibility of controlling the appearance that avies use to visit other grids. Not as good as I wanted, but good enough. Unfortunately we can't switch the appearance from under the avie without getting into a lot of weirdnesses because appearance is viewer-controlled. So instead, when this control is on, I'm disallowing HG-TP unless the user is wearing an allowed HG appearance -- the user gets a warning and needs to switch appearance. WARNING: I'm still not committing the config vars because this is still not ready for ppl to test. 2012-09-15 19:33:51 -07:00
Robert Adams
b602b476ad BulletSim: update DLLs and SOs and remove some debugging code. 2012-09-15 15:36:13 -07:00
Robert Adams
c77be802d2 BulletSim: some debugging prints in BSPrim for tracking changes in linkset children. 2012-09-15 15:32:16 -07:00
Robert Adams
1826b2b18e BulletSim: add the debugging routine DumpRigidBody2() to API2. 2012-09-15 15:32:11 -07:00
Robert Adams
f35bd6eb7d BulletSim: another attempt at computing physics FPS correctly. 2012-09-15 15:32:05 -07:00
Robert Adams
dcb94b8a24 BulletSim: remove timeStep parameter from calls for vehicle parameter setting. There is no reason these should be using the simulation time interval for parameter calculation. 2012-09-15 15:31:59 -07:00
Robert Adams
6632eb7c05 BulletSim: Remove calculation and passing of unused collied object type.
Fix collision code to properly sense mega-region children regions as terrain.
When setting an object physical, reset all the physical properties (friction, ...).
2012-09-15 15:31:54 -07:00
Robert Adams
f0a098924e BulletSim: set all linkset objects center of mass to the whole linkset's center of mass 2012-09-15 15:31:49 -07:00
Robert Adams
7c347f4c5c BulletSim: Add calls to linkset class when object going static or dynamic.
Reset center of mass on an object when going dynamic.
2012-09-15 15:31:44 -07:00
Robert Adams
d86cbe6379 BulletSim: remove unused NeedsMeshing() code from BSScene. 2012-09-15 15:31:39 -07:00
Robert Adams
c0fec70b1a BulletSim: Add 'IsNativeShape2' call 2012-09-15 15:31:34 -07:00
Robert Adams
2c5ff93990 BulletSim: Way too many changes in one commit.
Many changes to BSDynamic for readability and commentary.
Linkset hacking for vehicles: don't over mass the root prim.
Add parameter for link constraint solver iterations.
Correct uses of timestep in timescale calculations for vehicles.
Reorganize code/logic for making objects static and dynamic for readability
    and use of API2.
Changed most calls in BSPrim to use API2 calls (the new way).
Avatars do not generate default Bullet collision events but do call up
    to the simulator for every avatar. Reduces overhead.
Objects added to collision list only if they are processing collisions.
    Reduces overhead especially for large numbers of avatars.
Generalize call for water height to GetWaterHeightAtXYZ().
Catch and correct exception getting terrain height when out of bounds.
Correct race condition in Terrain Manager where creation wasn't at taint-time.
Add API calls for constructing compound shapes.
Move NeedsMeshing() logic into object class.
Reorganize logic for object meshing to reduce rebuilding of meshs/hulls.
2012-09-15 15:31:29 -07:00
Justin Clark-Casey (justincc)
1ec84ac8b1 Add basic asset connector tests to check behaviour for normal, local and temporary assets.
Make AssetServiceConnector return more useful data on failure, such as what DLL it was trying to load
Allow LocalAssetServiceConnector.GetData() to work without a cache present, as works for the other lasc Get* methods.
2012-09-15 02:12:26 +01:00
Justin Clark-Casey (justincc)
d5c8c6bc12 For FlotsamAssetCache, always update access times of cached scene assets before looking for files to expire.
This is to resolve a problem where an asset marked as local but not temporary but still used in the scene would be removed.
The timed expiry scan no longer tries to refetch assets from the scene that are not currently in the cache - this is not helpful since it just drags a lot of data into the cache that may never be referenced.
This removes the DeepScanBeforePurge option since setting this to false will introduce the above problem.  This previously had a default of true.
2012-09-15 01:08:15 +01:00
Oren Hurvitz
5dd2569bf7 Added unit tests for multi-region OARs 2012-09-14 20:32:25 +01:00
Justin Clark-Casey (justincc)
d7e6fe488d Rename ArchiveWriteRequestPreparatio nto ArchiveWriteRequest since after the multi-OAR patch there is now only one class that handles this operation.
Adapation of 0004-Renamed-ArchiveWriteRequestPreparation-to-ArchiveWri.patch in http://opensimulator.org/mantis/view.php?id=6105
since that did not directly apply
2012-09-14 20:25:44 +01:00
Oren Hurvitz
ce468215d5 Support multi-region OAR files
Merged ArchiveWriteRequestPreparation.cs and ArchiveWriteRequestExecution.cs. This simplifies the code, and it's faster to write each scene to the archive as it's found rather than all at once at the end.
2012-09-14 20:25:03 +01:00
Justin Clark-Casey (justincc)
6f7825e310 Don't store the unnecessary VERSIONMIN. VERSIONMAX, METHOD or UserID (present as column PrincipalID) parameters in the Avatars table.
These are used to invoke avatar service calls but are not in themselves persistable avatar data.
2012-09-14 00:07:39 +01:00
Diva Canto
dd0a89a0e6 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-13 10:00:52 -07:00
Diva Canto
190f9c258b Restarting to work on HGSuitcaseInventoryService: added the ability for the outside world to retrieve appearance items. Not ACLed yet. 2012-09-13 10:00:29 -07:00
SignpostMarv
46d8405229 Documentation of parcel-related events
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-09-13 09:59:25 -04:00
SignpostMarv
9598c1af9e correcting a typo that causes c# express to complain about xml comment containing invalid xml
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-09-13 09:59:25 -04:00
Justin Clark-Casey (justincc)
82487549f7 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-12 23:47:09 +01:00
Justin Clark-Casey (justincc)
cdc3781f42 Fix usage statement on "debug http" console command since max level is now 5 rather than 3 2012-09-12 23:02:25 +01:00
Justin Clark-Casey (justincc)
7df7b86ec5 Fix bug in logging sample input at debug http level 4.
Also converts newlines to "\n" text.
2012-09-12 23:01:07 +01:00
BlueWall
81fda6f947 Revert "Fix prebuild.xml format for reference"
This reverts commit 96f889b20e.
2012-09-11 23:43:37 -04:00
BlueWall
e9322b0bf7 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-11 22:58:21 -04:00
BlueWall
96f889b20e Fix prebuild.xml format for reference
Mono.Data.SQL entry was bad
2012-09-11 22:56:29 -04:00
Justin Clark-Casey (justincc)
224efe7b76 minor: Comment out friends notification log spam for now. 2012-09-12 01:58:01 +01:00
Justin Clark-Casey (justincc)
ebb394bbda Fix indentation and issues where tabs were used instead of spaces in commit 783ee949 2012-09-12 01:45:34 +01:00
SignpostMarv
c17965eec4 mathematically & hypothetically speaking we want to avoid negative values being written 2012-09-12 01:26:22 +01:00
Justin Clark-Casey (justincc)
4ead48f09f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-12 01:24:17 +01:00
SignpostMarv
41f3f2400e Documentation of economy-related EventManager events 2012-09-12 01:23:47 +01:00
Mic Bowman
f06394f195 Allow an incoming identifier to be specified for a JsonStore. 2012-09-11 16:42:07 -07:00
Justin Clark-Casey (justincc)
d53a53d4c5 Make "show http-handlers" command available for ROBUST instances as well as the simulator executable. 2012-09-12 00:10:48 +01:00
Justin Clark-Casey (justincc)
757d9163fa Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-12 00:07:56 +01:00
Justin Clark-Casey (justincc)
25111e703f Add levels 4 and 5 to "debug http" console command that will log a sample of incoming request data and the entire incoming data respectively.
See "help debug http" for more details.
2012-09-11 21:48:51 +01:00
SignpostMarv
ad1b9bbba6 documentation (OnSceneObjectPartCopy) 2012-09-11 20:12:45 +01:00
SignpostMarv
97b8739c1d documentation (OnRemovePresence) 2012-09-11 20:12:45 +01:00
SignpostMarv
0760121eb9 documentation (OnNewPresence) 2012-09-11 20:12:44 +01:00
SignpostMarv
0a22e78f59 documentation (OnClientConnect) 2012-09-11 20:12:44 +01:00
SignpostMarv
5e51f16ceb documentation (OnBackup) 2012-09-11 20:12:44 +01:00
SignpostMarv
fd8a7e64b9 documentation (OnTerrainTick) 2012-09-11 20:12:44 +01:00
SignpostMarv
ed5f574356 documentation (OnTerrainTainted) 2012-09-11 20:12:44 +01:00
SignpostMarv
44349f742e documentation (OnClientMovement) 2012-09-11 20:12:43 +01:00
SignpostMarv
e3993eefa5 Documenting some of the events on OpenSim.Region.Framework.Scenes.EventManager (OnFrame) 2012-09-11 20:12:43 +01:00
SignpostMarv
8db5d79f4b passing in the function name to MOD_Api.ConvertFromLSL for more user-friendly error messages 2012-09-10 13:15:32 +01:00
BlueWall
bf56b30024 Adjust namespce of FlotsamCache
Place FloatsamCache in the same namespace as our other core asset caches
2012-09-09 14:35:48 -04:00
BlueWall
8321ecb7a2 Revert "Move addin information to CoreModulePlugin.addin.xml"
This reverts commit 2ec34580ce.

  Moving the attributes for mono addins back to the source file - this also fixes http://opensimulator.org/mantis/view.php?id=6278.
2012-09-09 13:50:44 -04:00
SignpostMarv
783ee949ea implementing per-region configuration of limits on the number of prims one can have in a linkset
Applied with changes - patch was based on a repo different from core

Signed-off-by: Melanie <melanie@t-data.com>
2012-09-09 12:59:25 +01:00
SignpostMarv
e041f09750 refactoring to allow Scene.GetLandData to accept Vector3 as an argument. Note that the prior work on LSL_Vector implicit operators means one does not need to explicitly cast a LSL_Vector to Vector3 2012-09-08 00:44:27 +01:00
Justin Clark-Casey (justincc)
fa3edcf55c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-08 00:17:57 +01:00
SignpostMarv
874bde366a 4096 is used in various places as the maximum height of a region, refactoring to be a constant 2012-09-08 00:14:39 +01:00
Robert Adams
d8df2d6bed BulletSim: update the DLLs and SOs 2012-09-07 16:05:34 -07:00
Robert Adams
126eae7100 BulletSim: Add Bullet body and shape to BSPhysObject and rename
'Body' to 'BSBody' for disambiguation when reading code.
Complete the API2 interface so nearly all methods on bullet
    classes are available to the managed code. The efficient
    single call simulation step is kept in place while all
    other creation/destruction/parameterization can be done
    in the managed code.
2012-09-07 16:05:28 -07:00
Robert Adams
3c097cb7a9 BulletSim: Add some comments (gasp) and log messages. 2012-09-07 16:05:22 -07:00
Robert Adams
189f51233e BulletSim: PhysicsActorType() now returns the correct value rather than 'unknown'. 2012-09-07 16:05:16 -07:00
Robert Adams
76dc29dc37 BulletSim: Modify collision flag calls to return the current flags.
Track current collision flags in BSPrim.
Add BulletSimAPI calls for saving and restoring rigidBodies using
    construction information structure.
2012-09-07 16:05:11 -07:00
SignpostMarv
df3914c7cd renaming to markdown file 2012-09-08 00:02:27 +01:00
SignpostMarv
740eac192b multi-paragraph list item 2012-09-08 00:02:27 +01:00
SignpostMarv
783ecd01f4 headers 2012-09-08 00:02:26 +01:00
SignpostMarv
a0e3e23aa9 removing redundant header; this is the building.txt file for opensim 2012-09-08 00:02:26 +01:00
SignpostMarv
1acee36822 code blocks 2012-09-08 00:02:26 +01:00
SignpostMarv
ac90322f1b markdown-formatted link 2012-09-08 00:02:26 +01:00
SignpostMarv
2ca93cb144 renaming to markdown file 2012-09-08 00:02:26 +01:00
SignpostMarv
4e2805496c header syntax 2012-09-08 00:02:26 +01:00
SignpostMarv
46af3a3d92 casing 2012-09-08 00:02:26 +01:00
BlueWall
717b11856e Move addin attributes to RegionCombinerModule.addin.xml
Will help in automation of setting version info for addin dependencies.
2012-09-07 13:21:06 -04:00
BlueWall
0199abd625 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-07 11:43:22 -04:00
BlueWall
550f6c4ad2 Revert "Move addin information to RegionCombinerModule.addin.xml"
This reverts commit ab446bc692782b75fd27105fc3370a16b4fc17d8.
  Need to look into this
2012-09-07 11:41:47 -04:00
Diva Canto
2b506cffb1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-07 08:10:03 -07:00
Diva Canto
33469a0d2b Moved the new vars in Robust.HG.ini to the proper section. 2012-09-07 08:09:44 -07:00
BlueWall
1f18ce516f Move addin information to RegionCombinerModule.addin.xml
Move addin information from attributes to RegionCombinerModule.addin.xml to aid in automation of addin dependency tracking.
2012-09-07 11:07:19 -04:00
BlueWall
2ec34580ce Move addin information to CoreModulePlugin.addin.xml
Move the addin information from attributes in the source file to the CoreModulePlugin.xml, which is the standard. This will help us automate addin version dependency information when we make new OpenSim releases.
2012-09-07 10:18:00 -04:00
Justin Clark-Casey (justincc)
288baaecaf Add warning chevrons around the GC.Collect added to Warp3DImageModule in commit 5eb2526
Manually calling GC.Collect() really shouldnt' be necessary and is generally regarded as a bad idea.
A GC should occur anyway pretty shortly afterwards.
However, can leave this in development code for now to see if it does actually make a significant difference rather than simply doing a GC a little earlier.
2012-09-07 00:46:24 +01:00
Justin Clark-Casey (justincc)
d2b00749ef Add missing DynamicTexture.cs file from last commit 2012-09-06 23:14:48 +01:00
Justin Clark-Casey (justincc)
8f02fd926e If reusing dynamic textures, do not reuse small data length textures that fall below current viewer discard level 2 thresholds.
Viewer LL 3.3.4 and before sometimes fail to properly redisplay dynamic textures that have a small data length compared to pixel size when pulled from cache.
This appears to happen when the data length is smaller than the estimate discard level 2 size the viewer uses when making this GetTexture request.
This commit works around this by always regenerating dynamic textures that fall below this threshold rather than reusing them if ReuseDynamicTextures = true
This can be controlled by the [Textures] ReuseDynamicLowDataTextures config setting which defaults to false.
2012-09-06 22:12:05 +01:00
Diva Canto
9f914327c6 Added missing configs, and deleted the [Profile] part on the Hypergrind config. 2012-09-06 12:42:14 -07:00
SignpostMarv
4215877b48 adding utility method for getting SceneObjectGroup from scene
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-09-06 06:32:56 -04:00
SignpostMarv
d2e79e26d7 adding utility method for getting SceneObjectPart from scene
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-09-06 06:32:46 -04:00
SignpostMarv
3f6c6eed33 pasting in show uptime code
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-09-06 06:13:07 -04:00
BlueWall
0a71e3ab39 Add file to .gitignore
Add OpenSim.userprefs which is created by Monodevelop to .gitignore
2012-09-06 05:36:00 -04:00
BlueWall
8fe8fdb0c9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-06 05:19:15 -04:00
BlueWall
5eb2526e88 0006270: Warp3D leaks memory on mono based systems
Thanks Hiro Lecker for a patch to reduce memory useage with Warp3D map module
2012-09-06 05:18:08 -04:00
Justin Clark-Casey (justincc)
fbfd28a61b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-09-06 00:16:40 +01:00
Justin Clark-Casey (justincc)
a0d0c9f751 If the GetTexture capability receives a request for a range of data beyond that of an otherwise valid asset, return HTTP PartialContent rather than RequestedRangeNotSatisfiable.
This is because recent viewers (3.2.1, 3.3.4) and probably earlier ones using the http GetTexture capability will sometimes make such invalid range requests.
This appears to happen if the viewer's estimate of texture sizes at discard levels > 0 (chiefly 2) exceeds the total texture size.
I believe this does not normally happen but can occur for dynamic textures with are large but mainly blank.
If this happens, returning a RequestedRangeNotSatisfiable will cause the viewer to not render the texture at the final resolution.
However, returning a PartialContent (or OK) even with 0 data will allow the viewer to render the final texture.
2012-09-06 00:11:47 +01:00
Mic Bowman
641b08aa78 Enables cast from int to float for MOD* functions;
Thanks SignpostMarv!
2012-09-05 09:13:16 -07:00
Justin Clark-Casey (justincc)
15d5f3d09d Bump master code up to 0.7.5 now that 0.7.4 is out. 2012-09-04 00:11:14 +01:00
SignpostMarv
07dbe46ba3 wrapping attachment functions in a region 2012-09-04 00:03:44 +01:00
SignpostMarv
ff867b59cf Implementing functing to send messages directly to attachments 2012-09-04 00:03:44 +01:00
SignpostMarv
d4b8a13a1d refactoring the grunt work of MessageObject into a private method with a UUID argument 2012-09-04 00:03:44 +01:00
SignpostMarv
a858c5daee implementing a function to get the number of attachments worn 2012-09-04 00:03:43 +01:00
SignpostMarv
8d431c6359 formatting 2012-09-04 00:03:43 +01:00
SignpostMarv
663bfbb372 although the attachmentPoint argument is a uint, zero is not a valid attachment point 2012-09-04 00:03:43 +01:00
Melanie
d297eb39e5 Revert "made setting rotation match Second Life"
Second Life seems to have introduced a bug, as we have confirmation that SL
behavior changed recently and changed in contradiction to their stated intention
This appears to be another of the bugs SL is notorious for. Signpost and I have
decided to back this out until SL's intention becomes clear.

This reverts commit f7b88d1c40.
2012-09-03 21:52:12 +01:00
Melanie
29218cdb31 Revert "no need to assign rotation to a variable now"
This reverts commit a3d140b57c.
2012-09-03 21:52:03 +01:00
Melanie
359f9efc76 Revert "formatting"
This reverts commit fb211c64fd.
2012-09-03 21:51:54 +01:00
SignpostMarv
fb211c64fd formatting 2012-09-03 13:55:41 +01:00
SignpostMarv
a3d140b57c no need to assign rotation to a variable now 2012-09-03 13:55:40 +01:00
SignpostMarv
f7b88d1c40 made setting rotation match Second Life 2012-09-03 13:55:40 +01:00
Robert Adams
32b534f324 BulletSim: update the SOs and DLLs 2012-08-31 11:41:39 -07:00
Robert Adams
ffdc798720 BulletSim: Update BulletSimAPI to match the DLL interface.
Major rework of terrain management which finally makes mega-regions work.
Update heightmap of terrain by rebuilding the terrain's body and shape.
    There is a problem with just replacing the shape so this workaround
    will do for the moment but it will need to be resolved for
    mesh and hull switching.
2012-08-31 11:41:33 -07:00
Robert Adams
ae852bb873 BulletSim: clean up some variable naming for consistancy.
Update DLL API for new terrain and shape/body pattern methods.
Terrain creation and modification uses new shape/body pattern.
Move debug logging callback set to initialization call so logging
   is per physics engine.
2012-08-31 11:41:28 -07:00
Robert Adams
d3adf9b2b3 BulletSim: fix line endings. 2012-08-31 11:41:23 -07:00
Robert Adams
7c140570db BulletSim: Changes to terrain storage and management so mega-regions work.
Moved all terrain code out of BSScene and into new BSTerrainManager.
Added logic to manage multiple terrains for mega-regions.
Added new functions to BulletSimAPI to match the library.
Moved all of the terrain creation and setup logic from C++ code to C# code.
    The unused code has not yet been removed from either place. Soon.
Moved checks for avatar above ground and in bounds into BSCharacter.
2012-08-31 11:41:18 -07:00
Robert Adams
7b6987ce83 BulletSim: unify physical objects under BSPhysObjects. Now BSScene and BSLinkset only know of BSPhysObject's and there is only one list to search in BSScene. 2012-08-31 11:41:12 -07:00
Robert Adams
0376b8ddbc BulletSim: add new interface for mesh, hull and terrain creation that will move nearly all of the logic into the C# code. 2012-08-31 11:41:07 -07:00
Mic Bowman
2d2495cc45 Remove the unused Newtonsoft.Json dlls
Also remove the license files
2012-08-31 11:33:53 -07:00
BlueWall
a0eda6eb16 Fix Windows build
Add reference to fix Windows build: no windows here to test, please report any issues back to IRC #opensim-dev ASAP
2012-08-31 13:09:54 -04:00
SignpostMarv
dac31303b7 Type.Type is RuntimeType 2012-08-31 15:33:15 +01:00
Melanie
edd3577b66 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-08-31 14:34:44 +01:00
SignpostMarv
054db94d5d formatting 2012-08-31 14:32:33 +01:00
SignpostMarv
794c5f5a6d adding support for static method script invocations 2012-08-31 14:32:33 +01:00
SignpostMarv
b625579780 moving assignment to new line to make next commit easier to read in diffs 2012-08-31 14:32:33 +01:00
SignpostMarv
7e41559917 using specific type instead of var 2012-08-31 14:32:33 +01:00
SignpostMarv
8cd415c2b0 formatting 2012-08-31 14:32:32 +01:00
SignpostMarv
4c58c1b116 formatting 2012-08-31 14:32:32 +01:00
SignpostMarv
e6f43023b6 adding support for finding static methods 2012-08-31 14:32:32 +01:00
SignpostMarv
bcf944db48 assign binding flags to variable 2012-08-31 14:32:32 +01:00
SignpostMarv
7a9eee8538 no need to assign result to GetMethodInfoFromType 2012-08-31 14:32:32 +01:00
SignpostMarv
05648c2c4a changing to use Type argument instead of object 2012-08-31 14:32:31 +01:00
SignpostMarv
dff746df7b moving code that will be common into private static method 2012-08-31 14:32:31 +01:00
SignpostMarv
973f2e8be5 adding documentation to script invokation methods 2012-08-31 14:32:31 +01:00
SignpostMarv
3c019bea8c Implementing a vastly simpler means of allowing region modules to access GetLinkParts than mantis 6236 2012-08-31 01:19:17 +01:00
Melanie
68814f904e Replace SendBannedUserList with Avination's version. Untested in core. Not even test compiled. 2012-08-31 00:37:27 +01:00
Justin Clark-Casey (justincc)
3bd3f448a2 Also do other MySQL region settings related calls under m_dbLock, in common with other calls. 2012-08-31 00:33:06 +01:00
Justin Clark-Casey (justincc)
7c6e8fab15 Do Windlight storage and removal calls in MySQL under m_dbLock, as is done with all the other database calls. 2012-08-31 00:29:57 +01:00
Justin Clark-Casey (justincc)
3ed0d79b00 Make ReuseDynamicTextures an experimental config setting in [Textures]. Default is false, as before.
If true, this setting reuses dynamically generated textures (i.e. created through osSetDynamicTextureData() and similar OSSL functions) where possible rather than always regenerating them.
This results in much quicker updates viewer-side but may bloat the asset cache (though this is fixable).
Also, sometimes issue have been seen where dynamic textures do not transfer to the viewer properly (permanently blurry).
If this happens and that flag is set then they are not regenerated, the viewer has to clear cache or wait for 24 hours before all cached uuids are invalidated.
CUrrently experimental.  Default is false, as before.
2012-08-30 22:57:40 +01:00
Justin Clark-Casey (justincc)
d89b974680 If the compile-time DynamicTextureModule.ReuseTextures flag is set, check metadata still exists for any reused asset in case some other process has removed it from the cache. 2012-08-30 22:28:45 +01:00
SignpostMarv
c76c63725b fixing bug where last element in list is ignored 2012-08-30 00:10:28 +01:00
SignpostMarv
6b277394c0 refactoring as the list funcs either skip invalid values or recall ToDoubleList 2012-08-30 00:10:28 +01:00
Justin Clark-Casey (justincc)
adce58b33a Renaming existing 'torture' tests to 'performance' tests instead, since this better matches what they really do.
nant target name changes to test-perf instead of torture, to match test-stress
still not run by default
2012-08-29 23:19:21 +01:00
Justin Clark-Casey (justincc)
1f88179a65 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-29 23:16:16 +01:00
Justin Clark-Casey (justincc)
ec726413dd Add VectorRenderModuleStressTests that contains a long running test that generates thousands of vector textures concurrently.
Intended for use if there are future issues with mono crashes whilst generate dynamic textures.
This test is triggered via a new test-stress nant target.
Not run by default.
2012-08-29 23:04:00 +01:00
Mic Bowman
3d736d575f This partially implements the LSL function to set the response
type for an HTTP request. Since the "official" LSL function limits
the use of the response type, it is implemented as osSetContentType
with a string for the content mime type and a threat level of high.
With this function you should be able to implement rather functional
media-on-a-prim application with much less difficulty.
2012-08-29 14:56:51 -07:00
SignpostMarv
0c3061f973 implementing rule tracking 2012-08-29 02:10:04 +01:00
SignpostMarv
3bf7bd6359 track originating IScriptApi method for SL-like error messages. Will add rule number tracking in next commit. 2012-08-29 02:10:04 +01:00
Justin Clark-Casey (justincc)
7ea832d47c Fix regression introduced in a0d178b2 (Sat Aug 25 02:00:17 2012) where folders with asset type of 'Folder' and 'Unknown' were accidentally treated as system folders.
This prevented more than one additional ordinary folder from being created in the base "My Inventory" user folder.
Added regression test for this case.
Switched tests to use XInventoryService with mostly implemented TestXInventoryDataPlugin rather than InventoryService
Disabled TestLoadIarV0_1SameNameCreator() since this has not been working for a very long time (ever since XInventoryService) started being used
since it doesnt' preserve creator data in the same way as InventoryService did and so effectively lost the OSPAs.
However, nobody noticed/complained about this issue and OSPAs have been superseded by HG like creator information via the --home save oar/iar switch.
2012-08-29 02:01:43 +01:00
Justin Clark-Casey (justincc)
c1cece4b82 Add experimental DynamicTextureModule.ReuseTextures flag, currently only configurable on compile.
Disabled (status quo) by default.
This flag makes the dynamic texture module reuse cache previously dynamically generated textures given the same input commands and extra params for 24 hours.
This occurs as long as those commands would always generate the same texture (e.g. they do not contain commands to fetch data from the web).
This makes texture changing faster as a viewer-cached texture uuid is sent and may reduce simulator load in regions with generation of lots of dynamic textures.
A downside is that this stops expiry of old temporary dynamic textures from the cache,
Another downside is that a jpeg2000 generation that partially failed is currently not regenerated until restart or after 24 hours.
2012-08-28 23:06:53 +01:00
Justin Clark-Casey (justincc)
aa44df9c04 Add IDynamicTextureManager.ConvertData() to match AsyncConvertData(). Remove mismatching ConvertStream() where there is no AsyncConvertStream and neither IDynamicTextureManager implementer implements this method. 2012-08-28 20:35:17 +01:00
SignpostMarv
1e18f0f26a copying documentation from http://opensimulator.org/wiki/Threat_level 2012-08-28 00:12:35 +01:00
SignpostMarv
8a7fbfb06a adding some files to .gitignore that get generated when debugging in c# express with OpenSim.32BitLaunch as the startup project 2012-08-27 23:48:29 +01:00
SignpostMarv
e916b1399f formatting 2012-08-27 23:39:18 +01:00
SignpostMarv
72c2d13ac6 refactoring to load from self (fixes ChanneDigger being absent) 2012-08-27 23:39:18 +01:00
SignpostMarv
a6d689c529 refactoring to assign the first argument to a variable 2012-08-27 23:39:18 +01:00
Justin Clark-Casey (justincc)
ab9bfe5156 minor: Simplify return of vector render module name and some very minor removal of unncessary syntax clutter 2012-08-27 23:06:37 +01:00
Justin Clark-Casey (justincc)
4e26d039d6 Add VectorRenderModule.TestRepeatSameDrawDifferentExtraParams() 2012-08-27 23:03:21 +01:00
Justin Clark-Casey (justincc)
3082fdd0f6 Add VectorRenderModuleTests.TestRepeatDrawContainingImage() 2012-08-27 22:58:20 +01:00
Justin Clark-Casey (justincc)
e90168c738 Add VectorRenderModuleTests.TestRepeatDraw() 2012-08-27 22:42:40 +01:00
Melanie
a5c6cb2fc9 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-08-25 17:34:08 +01:00
Melanie
6ea95a3294 Fix and refactor region registration. Reorder checks to short-curcuit expensive and destructive ones. Properly fix region reservation and authentication.
Make region moves and flags preservation work again as intended. Prevent
failes reservation take-over from damging reservation data.
2012-08-25 17:32:00 +01:00
SignpostMarv
6e86b23012 implementing PRIM_LINK_TARGET on GetPrimParams ala SetPrimParams 2012-08-25 02:30:23 +01:00
SignpostMarv
58714b0aca minor formatting 2012-08-25 02:30:23 +01:00
SignpostMarv
5203665bb2 refactoring to local variable for cleaner code 2012-08-25 02:30:23 +01:00
SignpostMarv
2a2e120470 since we will be making the Get return type the remaining ruleset as with the Set return type, we need to move the original return type to a ref param 2012-08-25 02:30:23 +01:00
SignpostMarv
a8044999fb use SceneObjectPart instead of var 2012-08-25 02:30:23 +01:00
SignpostMarv
3d504261b0 renaming to be similar to equivalent Set command 2012-08-25 02:30:23 +01:00
Justin Clark-Casey (justincc)
a0d178b284 Following on from f8a89a79, do not allow more than one 'type' folder (e.g. calling cards) to be created in the base "My Inventory" user folder.
This is to accomodate situations where viewers will create more than one 'type' subfolder (e.g. calling cards)
But at the same time to prevent multiple such 'system' folders (those in the base "My Inventory" user folder).
This also makes GetFolderForType() only return a folder in the base "My Inventory" folder, if such a type folder exists
2012-08-25 02:00:17 +01:00
Justin Clark-Casey (justincc)
f8a89a79eb Allow multiple calling card type inventory folders to be created.
Modern viewers want to create Friends and All folders of this type inside the root Calling Cards folder.
2012-08-25 01:09:12 +01:00
Justin Clark-Casey (justincc)
e04047152f minor: Fix bad log message for failure to create an inventory folder 2012-08-25 00:49:38 +01:00
Justin Clark-Casey (justincc)
f3a5e3a02b Log initial script startup info notice when xengine actually starts to do this for debugging purposes, rather than before it actually starts to do this. 2012-08-25 00:42:32 +01:00
Justin Clark-Casey (justincc)
ba58331b29 Extend "Restarting scripts in attachments" debug log message to show actual name of user and the region they are in 2012-08-24 22:56:05 +01:00
Justin Clark-Casey (justincc)
476996bee8 If a connecting scene presence is replacing an existing scene presence then bypass close checks. 2012-08-24 22:38:07 +01:00
Justin Clark-Casey (justincc)
01771aca40 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-24 21:38:46 +01:00
Justin Clark-Casey (justincc)
cd325fdf02 Pass the "attachToBackup" bool given to SceneGraph.AddNewSceneObject() down into the 3-parameter AddNewSceneObject() method instead of always hardcoding true.
This doesn't affect any core OpenSimulator code since all callers were passing true anyway
But it allows region modules to create objects that are never persisted.
2012-08-24 21:36:20 +01:00
SignpostMarv
67477290ad stripping superfluous whitespace
Signed-off-by: Melanie <melanie@t-data.com>
2012-08-24 17:44:35 +01:00
SignpostMarv
582a256646 immediately returning the string.Join operation instead of checking if the list has members 2012-08-24 17:44:14 +01:00
SignpostMarv
d188272462 refactoring using List.ConvertAll<string> 2012-08-24 17:44:14 +01:00
SignpostMarv
632908db9e adding sqlite journal files to .gitignore 2012-08-24 01:26:11 +01:00
Justin Clark-Casey (justincc)
82b23f7cc1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-24 01:20:23 +01:00
Justin Clark-Casey (justincc)
a08687aef3 Revert "implementing function to allow scripts to self-replicate as if the owner duplicated them, using the same script delay as llRezObject()"
This reverts commit 2ad9d656b3.

Reverted pending consideration of associated issues.
2012-08-24 01:18:35 +01:00
SignpostMarv
2ad9d656b3 implementing function to allow scripts to self-replicate as if the owner duplicated them, using the same script delay as llRezObject() 2012-08-24 00:21:42 +01:00
Melanie
1747030d19 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-08-24 00:16:58 +01:00
Melanie
c557684666 Fix bad child prim permissions that can make objects change perms after rezzing
Port from Avination
2012-08-24 00:15:30 +01:00
TBG Renfold
a3cbda0d74 Removed land checking as suggested by SignpostMarv.
Now whatever remaining health the avatar has is displayed (float).
This will be 100% (100.000000) if no damage has occurred (as what the viewer should really be seeing anyway).

Returns -1.000000 if the avatar is not found.
2012-08-24 00:13:27 +01:00
TBG Renfold
4f3fabae5b Adds osGetHealth.
Returns the amount of health (in an integer) that an avatar has left in the scene.
If an avatar is not found or safe is enabled on a region, -1 is returned.

Example usage:

default
{
    touch_end(integer _t)
    {
        key agentID = llDetectedKey(0);
        osCauseDamage(agentID, 50);
        llSay(0, llKey2Name(agentID) + " has " + (string)osGetHealth(agentID) + "% health left.");
    }
}
2012-08-24 00:13:14 +01:00
Justin Clark-Casey (justincc)
aede42b875 If a script state save fails for some reason on shutdown/region removal, get xengine to spit out some useful information and continue to save other script states 2012-08-23 23:13:53 +01:00
Justin Clark-Casey (justincc)
a533db7e27 Add an [HGAssetService] section to SQLiteStandalone.ini with the same connection string as [AssetService].
This is necessary because commit 8131a24 (Tue Mar 27 10:08:13 2012) started passing the config section name rather than hardcoding "AssetService"
This meant that the HG external-facing asset service tried to read ConnectionString from [HGAssetService] rather than [AssetService].
On SQLite, not finding this meant that it fell back to [DatabaseService], which is set for OpenSim.db rather than Asset.db.
Therefore, all external asset requests returned null.
Solution taken here is to create an [HGAssetService] section with the same ConnectionString as [AssetService].
This bug does not affect normal MySQL/MSSQL config since they use the [DatabaseService] connection string anyway.
Addresses http://opensimulator.org/mantis/view.php?id=6200, many thanks to DanBanner for identifying the exact problem commit which was very helpful.
This was a regression from OpenSimulator 0.7.3.1 which did not contain this bug.
2012-08-23 22:30:14 +01:00
SignpostMarv
4820dfd733 this should be an if-else block in case the non-phys min/max are smaller than the physical min/max 2012-08-22 23:55:01 +01:00
Justin Clark-Casey (justincc)
1369058280 Lock disposal of separate gdi+ objects under different threads since this prevents malloc heap corruption seen under Ubuntu 10.04.1 and 11.04 - probably a libcairo issue
In testing, it appears that if multiple threads dispose of separate GDI+ objects simultaneously,
the native malloc heap can become corrupted, possibly due to a double free().  This may be due to
bugs in the underlying libcairo used by mono's libgdiplus.dll on Linux/OSX.  These problems were
seen with both libcario 1.10.2-6.1ubuntu3 and 1.8.10-2ubuntu1.  They go away if disposal is perfomed
under lock.
2012-08-22 23:04:17 +01:00
Robert Adams
568de9313a BulletSim: update DLLs and SOs to eliminate terrain update crash which manifested itself on Linux. 2012-08-21 20:55:48 -07:00
Justin Clark-Casey (justincc)
219326dd8e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-21 22:29:27 +01:00
Justin Clark-Casey (justincc)
9925317239 Fix bug in SoundModule.PlayAttachedSound() where every sound update to an avatar would base its gain calculation on the previous avatar's gain, instead of the original input gain
This is similar to commit d89faa which fixed the same kind of bug in TriggerSound()
2012-08-21 22:21:35 +01:00
nebadon
150748392e testing github bot take 2 2012-08-20 15:57:28 -07:00
nebadon
555edc4ef7 testing github commit bot 2012-08-20 15:51:30 -07:00
SignpostMarv
481c00f50a refactoring out SetFaceColor 2012-08-20 23:10:25 +01:00
SignpostMarv
ede3b9ab07 making use of implicit operators and Util.Clip handling of Vector3 2012-08-20 23:10:25 +01:00
SignpostMarv
b863a15a82 single operation for PRIM_COLOR 2012-08-20 23:10:25 +01:00
SignpostMarv
aee4353e9c fix typo 2012-08-20 23:10:25 +01:00
Justin Clark-Casey (justincc)
e6fb458597 no-op change for cia.vc test 2012-08-20 22:18:29 +01:00
Justin Clark-Casey (justincc)
812c498ef4 When loading an OAR, validate any group UUIDs and properly reconstruct parcel access lists.
If a group UUID is present that is not on this simulator then the object or parcel is no longer group owned.
This is a change from previous behaviour where such invalid UUIDs were kept.
This is an adaptation of patch 0002 from http://opensimulator.org/mantis/view.php?id=6105 by Oren Hurvitz of Kitely.
My adaptations are formatting only, apart from the notices about parcel owner IDs not being saved since this has now been fixed.
Thanks Oren.
2012-08-20 22:01:02 +01:00
Justin Clark-Casey (justincc)
970727e57e Tighten up OpenSim.Framework.Cache locking to avoid race conditions.
This is to resolve a reported issue in http://opensimulator.org/mantis/view.php?id=6232
Here, the land management module is using OpenSim.Framework.Cache (the only code to currently do so apart from the non-default CoreAssetCache).
2012-08-20 20:55:58 +01:00
Justin Clark-Casey (justincc)
bcbd450fe4 Add --force flag to "kick user" console command to allow bypassing of recent race condition checks.
This is to allow a second attempt to remove an avatar even if "show connections" shows them as already inactive (i.e. close has already been attempted once).
You should only attempt --force if a normal kick fails.
This is partly for diagnostics as we have seen some connections occasionally remain on lbsa plaza even if they are registered as inactive.
This is not a permanent solution and may not work anyway - the ultimate solution is to stop this problem from happening in the first place.
2012-08-20 20:24:54 +01:00
Melanie
9aec62f0ac Fix scripted detach of temp attachments 2012-08-20 15:59:38 +01:00
Melanie
dd0556abc9 Fix llDialog responses so that they can be heard throughout the region. This now conforms to the behaviour in SL. 2012-08-19 22:05:38 +01:00
Melanie
8769e4ee73 Add a reference to OpenMetaverseType.dll to compiled script assemblies. 2012-08-18 19:08:38 +01:00
SignpostMarv
d72d599056 integrating redundant code into operator 2012-08-18 18:30:00 +01:00
SignpostMarv
ca33619e11 Rot2Quaternion is now redundant 2012-08-18 18:30:00 +01:00
SignpostMarv
ffdde05bb7 constructor means not having to manually refer to individual properties 2012-08-18 18:29:59 +01:00
SignpostMarv
fb84ff96a9 implicit operators mean one does not need to instantiate new objects manually 2012-08-18 18:29:59 +01:00
SignpostMarv
52d7af05bc adding missing refactor for LSL_Vector 2012-08-18 18:29:59 +01:00
SignpostMarv
2b0c8bc480 Implementing operators & constructors for Quaternion 2012-08-18 18:29:59 +01:00
Melanie
2a70afeca2 Fix the whitespace formatting error introduced by the last patch 2012-08-18 14:00:10 +01:00
SignpostMarv
5d7751da89 refactoring for Vector3 operator & constructor tweaks 2012-08-18 13:21:55 +01:00
Melanie
9d6fe1224a Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-08-18 12:57:49 +01:00
Justin Clark-Casey (justincc)
e4e5237086 When reporting a thread timeout, create a copy of the info rather than passing the original ThreadWatchdogInfo structure.
This is to avoid the possibility of misleading reporting if a watchdog update outraces an alarm.
Should address any remaining issues from http://opensimulator.org/mantis/view.php?id=6012
2012-08-18 00:46:34 +01:00
SignpostMarv
28d0aff2e3 adding null return to fix building 2012-08-17 23:23:03 +01:00
SignpostMarv
7068fddd2f fixing bug that get/set the wrong property for prim types other than sphere & box 2012-08-17 23:23:03 +01:00
SignpostMarv
466d684fbe implemented 2012-08-17 23:23:03 +01:00
SignpostMarv
74f5253a36 attempt to handle InvalidCastException in a manner similar to Second Life 2012-08-17 23:08:24 +01:00
Justin Clark-Casey (justincc)
3ad827174e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-17 22:50:54 +01:00
Justin Clark-Casey (justincc)
56da788243 Add information to ThreadStackSize about possibly increasing if suffering StackOverflowExceptions during script conversion/compilation (e.g. on Windows 64-bit) 2012-08-17 22:50:11 +01:00
Robert Adams
7243d4f842 BulletSim: Properly regenerate hulls when objects made physical.
This fixes the problem of non-base shapes (cubes and spheres)
    falling through the terrain.
2012-08-17 14:45:18 -07:00
Justin Clark-Casey (justincc)
f57c1ac386 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-17 22:31:58 +01:00
Justin Clark-Casey (justincc)
0860a0d856 minor: Make xengine debug message on script load a scripting loading message instead.
This is more useful if compilation fails due to an uncatchable exception since we know what was being compiled.
2012-08-17 22:30:01 +01:00
Robert Adams
03d76e9403 BulletSim: restore most of the Detail logging statements. Will have
no effect on non-logging running.
Capture region name that is passed to the physics engine and use
    it for detail logging file name prefix.
Fix problem with avatars dropping when flying across region boundries.
2012-08-17 13:34:22 -07:00
Robert Adams
5c192b9bab Modify order of code so SOP doesn't set the physics actor flying
property multiple times every time Update is called.
This eliminates zillions of settings which is better for BulletSim.
The should be no functionality change.
2012-08-17 13:34:20 -07:00
Robert Adams
ccc69d66a1 BulletSim: add parameters and functionality to specify the mesh
level of detail for large meshes.
Remove parameter and code for DetailLog (conditional logging into
   regular log file).
2012-08-17 13:34:18 -07:00
Robert Adams
8eda290262 BulletSim: comments and parameter changes in dynamics engine. 2012-08-17 13:34:16 -07:00
Robert Adams
e31e23d68d BulletSim: in BSDynamics, merge 'flags' and 'hoverFlags' as they are defined for the same bits and it makes the code less complicated. 2012-08-17 13:34:14 -07:00
Justin Clark-Casey (justincc)
99e339dd40 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-17 18:48:35 +01:00
SignpostMarv
e9ea911563 adding a clip method to handle Vector3 objects to enable a minor amount of refactoring 2012-08-17 18:40:49 +01:00
Melanie
9995421df1 Do a proper null check to avoid the overloaded operator == trap 2012-08-16 02:35:03 +01:00
Robert Adams
57a9879669 Correct an exception report in SceneObjectPart so it outputs the stack. 2012-08-15 16:39:00 -07:00
Robert Adams
376441e550 BulletSim: make it so objects in a linkset do not generate collisions with each other. 2012-08-15 16:29:50 -07:00
Robert Adams
ae5db637f2 BulletSim: update DLLs and SOs to fix the problem with avatars jumping around at altitudes less than 25m. 2012-08-15 16:29:46 -07:00
SignpostMarv
ef4122213c enables configurable minimum sizes for physical & non-physical prims 2012-08-15 23:35:23 +01:00
Melanie
e286a95d76 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-08-15 22:59:31 +01:00
SignpostMarv
0aa1f1cc3f Implementing PRIM_LINK_TARGET in a non-recursive fashion 2012-08-15 22:58:33 +01:00
Justin Clark-Casey (justincc)
5a1b6fdf06 Don't enable the thread watchdog until all regions are ready.
This is to avoid false positives when the machine is under heavy load whilst starting up.
2012-08-15 22:43:32 +01:00
SignpostMarv
7679384829 adding ATTACH_*_PEC constants 2012-08-15 22:06:20 +01:00
Robert Adams
9f83f4bfa3 BulletSim: update DLLs and SOs 2012-08-15 12:08:29 -07:00
Robert Adams
2b982ab212 BulletSim: add physics logging parameters to OpenSimDefaults.ini. Remove trailing semis from some the of the value definitions. 2012-08-15 12:08:25 -07:00
Robert Adams
dd10cf01e7 BulletSim: add hinge constraint.
Update BulletSimAPI with new constraint related function calls.
Reorganize locking in BS6DofConstraint.
Update BS6DofConstraint to do constraint reset correctly.
Add new 'midpoint' construction of 6Dof constraint.
2012-08-15 12:08:21 -07:00
Robert Adams
9efe7bf7ba BulletSim: add locking to constraintCollection and rename some of the public method variables to reduce confusion between a physics scene and the real scene. 2012-08-15 12:08:17 -07:00
Robert Adams
68f112888b BulletSim: clean up detail logging by adding many more debug log statements and then commenting out most of the additions. 2012-08-15 12:08:13 -07:00
Robert Adams
b05a2fc4ed BulletSim: don't recreate mesh unless it needs it when rebuilding the hull. Make sure the collisionCollection is reallocated each tick to fix race condition of it being cleared while still in use. 2012-08-15 12:08:09 -07:00
Robert Adams
257446889b BulletSim: fix problem of a null reference exception on shutdown if there were linksets in the region. 2012-08-15 12:08:05 -07:00
Robert Adams
77a7758cf5 BulletSim: Refactor BSConstraintCollection to add a new RemoveAndDestroyConstraint(BSConstraint xx) 2012-08-15 12:08:01 -07:00
Robert Adams
c1c1d48af1 BulletSim: add BSConstraint.RecomputConstraintVariables for the recomputation after linksets changed, etc 2012-08-15 12:07:57 -07:00
Robert Adams
6f1f299619 BulletSim: Add the class BSCharacter to the DetailLog output 2012-08-15 12:07:53 -07:00
Robert Adams
11a4b9ec1d BulletSim: rework physics FPS calculation to make a more realistic number. 2012-08-15 12:07:49 -07:00
Melanie
ebbf349c6a Let the temp attachment module add a command to allow attaching without permissions and add support for this (incomplete!) to LSL 2012-08-15 19:37:16 +01:00
Melanie
c27ff70d5c Add support for the extra params to scene and the event manager 2012-08-15 18:58:39 +01:00
Melanie
c7f2debd38 Fix and finish the extra parameters storage system for MySQL 2012-08-15 18:58:32 +01:00
Melanie
dc82ad0f7a Add a skeleton for a name value storage associated with regions 2012-08-15 02:06:22 +01:00
Melanie
f6562e2269 Actually add the module 2012-08-14 22:22:25 +01:00
Melanie
faa710aee1 Allow the use of the region debug console found in recent viewers. This console
will be available to estate owners and managers. If the user using the console
had god privs, they can use "set console on" and "set console off" to switch on
the actual region console. This allows console access from within the viewer.
The region debug console can coexist with any other main console.
2012-08-14 22:22:20 +01:00
Justin Clark-Casey (justincc)
d8125fb1f7 minor: Add Gryc Ueusp to CREDITS for commit 884edac amongst others, by request. 2012-08-14 21:56:31 +01:00
Justin Clark-Casey (justincc)
c42fe6c159 Prevent race conditions when one thread removes an NPC SP before another thread has retreived it after checking whether the NPC exists. 2012-08-14 21:44:06 +01:00
Melanie
a5b6492223 Perform ownership transfer and permission propagation as well as needed
updates on the new temp attachment.
2012-08-14 13:40:13 +01:00
Melanie
1be072f19e Move inititalization to RegionLoaded to avoid a module loading order issue 2012-08-14 09:55:44 +01:00
Melanie
4bbdcfb5ee Implement the temp attachments. UNTESTED 2012-08-14 01:45:02 +01:00
Melanie
9bd2c1b88a As per lindn spec, disable detach and drop for temp attachments 2012-08-14 01:12:27 +01:00
Melanie
62acfabec4 Add the skeleton for the temp attachments module 2012-08-14 00:54:12 +01:00
Melanie
50db8649aa Exclude temp attachemnts from being sent to the avatar service 2012-08-14 00:29:39 +01:00
Melanie
fe4c3a37c0 Lay some groundwork for temp attachments. Decouple attachments from inventory. 2012-08-14 00:12:15 +01:00
SignpostMarv
58c630c18e attempt at replicating behaviour of llList2thing functions in SL
Committed with changes. Please don't sign comments with your name. Please
don't use your own coding style, use the OpenSim project style. Please
don't modify unrelated whitespace.

Signed-off-by: Melanie <melanie@t-data.com>
2012-08-13 19:17:19 +01:00
Robert Adams
3ecd39068c Merge branch 'bulletsim7' 2012-08-10 16:35:00 -07:00
Robert Adams
3a55d5b123 BulletSim: actually update the DLLs and SOs 2012-08-10 16:34:22 -07:00
Robert Adams
0c7ce4fc98 BulletSim: many, many detailed logging messages for physical linkset
debugging.
Linkset bugs fixed where accounting of children would get lost.
Moved scene based vehicle tracking logic from prim to the scene.
Added GetCollisionFlags2 method to BulletSimAPI.
Updated DLLs and SOs.
2012-08-10 16:22:44 -07:00
Robert Adams
3ca770cd2c BulletSim: Add module names to DetailLog output. Fix some problems with linksets that were caused by checking data structures that are changed regularly from taint time code -- resulted in linksets not being unlinked properly. 2012-08-10 08:33:09 -07:00
Robert Adams
320982cae3 BulletSim: add an identifier to the TaintObject call so exceptions that happen when the taint is invoked can be debugged 2012-08-09 15:17:19 -07:00
Robert Adams
38e79b80a8 BulletSim: separate out the constraints by type. The linksets use
6dof constraint but eventually others will be exposed so future
features can use all the Bullet capabilities.
Force children to generate a position update when unlinked.
2012-08-09 15:01:05 -07:00
Robert Adams
5ab151c2d6 BulletSim: add avatar code to keep avatars from ending up trapped under the terrain 2012-08-08 13:48:49 -07:00
Robert Adams
19417fca41 BulletSim: Added avatar capsule scaling for size of avatar.
This also fixes computation of avatar mass.
Added parameter MaxPersistantManifoldPoolSize.
Fixed a parameter setting bug which caused crashes of there were
  more than 400 or so physical objects. I tested up to 5000.
Updated BulletSim DLLs and SOs.
2012-08-07 17:15:06 -07:00
Melanie
926c0b90a1 Release http-in URLs when llResetScript is called 2012-08-07 20:48:22 +01:00
Robert Adams
4adb3471ac BulletSim: update SOs and DLLs to run on more Linux versions. Correct multiple buoyancy settings when character flying. Remove chatty log message on prim destruction. 2012-08-06 12:55:52 -07:00
Justin Clark-Casey (justincc)
374ebab574 Strip experimental tag from --publish option of "save oar" region console command 2012-08-03 23:54:17 +01:00
Justin Clark-Casey (justincc)
fb91ca6f1d Fix old regression that stopped saving parcel owner data in OARs.
This was working in 0.7.2 but was accidentally removed from 0.7.3.
The --publish option for "save oar" will now save oars stripped of parcel owner information as well as scene object info.
Please use the --publish option if you want to publish oars that may be later loaded by others to the same grid from which they were saved.
2012-08-03 23:49:34 +01:00
Justin Clark-Casey (justincc)
2724cf685e Fix build break. 2012-08-03 23:13:19 +01:00
Robert Adams
8730dc9d6a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-03 15:10:55 -07:00
Robert Adams
d5cd60131f BulletSim: update DLLs and SOs 2012-08-03 15:10:00 -07:00
Robert Adams
e7ad6ed3a3 BulletSim: pass collision subscription information to the C++ code so collisions on objects that don't care are not reported up. 2012-08-03 15:09:56 -07:00
Robert Adams
ea36d4a4cf BulletSim: Add AddObjectForce to BulletSim API.
Add interface 2 enhancements to BSCharacter.
Modify AddForce and SetForce to use the new Bullet interface.
More DetailLog statements for character.
2012-08-03 15:09:52 -07:00
Justin Clark-Casey (justincc)
0e3b08fa5b Update settings loading in AvatarFactoryModule which should have been in last commit 205f2326 2012-08-03 23:09:47 +01:00
Justin Clark-Casey (justincc)
205f2326dc Consolidate PersistBakedTextures, DelayBeforeAppearanceSend and DelayBeforeAppearanceSave into [Appearance] section from [Startup] config section so that all appearance settings are in the same place and not in the startup bucket.
All these settings are in OpenSimDefaults.ini only.  If you are using them then please adjust your OpenSim.ini
2012-08-03 23:02:39 +01:00
Justin Clark-Casey (justincc)
5914270ff1 Restore SOG constructor chaining removed in recent 513b77b. This is not a functional change. 2012-08-03 22:15:06 +01:00
Justin Clark-Casey (justincc)
faffe2f2f9 Fix the recent windows compile error by putting newFont for case "R" in VectorRenderModule inside its own context, rather than disposing of the old font before using it as a prototype for the new. 2012-08-03 22:03:04 +01:00
Justin Clark-Casey (justincc)
8327e048b9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-03 21:56:48 +01:00
Justin Clark-Casey (justincc)
789e88d8bd Move previously unadvertised SendPeriodicAppearanceUpdates setting from [Startup] to [Appearance] config section.
Add description and default of false (as before) to OpenSimDefaults.ini
If set to true, this config switch will resend avatar appearance information (a small amount of UUID data, not the baked textures themselves) to other avatars in the sim every 60 seconds.
For me, this has helped with situations where avatars appear persistently grey - the LL viewer sometimes did not appear to request assets the first time the appearance data was sent.
However, this switch will not help with other appearance failure situations (e.g. failure to bake assets).
This setting is experimental but will not have any significant impact on the simulator if turned to true.
2012-08-03 21:36:00 +01:00
SignpostMarv
5181bdae0a attempting to fix a build issue
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-08-03 16:14:01 -04:00
Justin Clark-Casey (justincc)
513b77b78d refactor: rename SOG.RezzingObjectID to SOG.FromPartID to match FromFolderID, FromItemID and to reflect that it's a SOP ID rather than a SOG ID. 2012-08-03 02:26:54 +01:00
Justin Clark-Casey (justincc)
08ec18f8a3 Don't bothre setting RezzingObjectID to UUID.Zero in SOG constructor - this is already its default value as it's a struct. 2012-08-03 02:08:04 +01:00
SignpostMarv
cd9fd77e2c ImprovedTerseObjectUpdate packet does not support shape updates, thus scheduling terse updates will not (and does not) update shape information in the viewer 2012-08-03 01:55:46 +01:00
Oren Hurvitz
0588f27d18 Fixed a rare bug that caused Save OAR to fail because it thought it had timed-out
The bug manifested as follows: a large world was saved. All the assets were found. But for some unknown reason, the timeout timer was restarted. So after 1 minute it closed the Archive Writer, because it didn't receive any more assets during that minute. That caused the OAR to become corrupted because ArchiveWriteRequestExecution.Save() was still running.
2012-08-03 01:12:46 +01:00
Kevin Cozens
72075e68c7 Save membership fee to the database when a group is created. 2012-08-03 00:44:03 +01:00
Robert Adams
8b04e8a297 BulletSim: Debugging log statements added. Reduced size of updata buffer trying to find a corrupted memory problem. Update DLL and SO. 2012-08-02 16:30:23 -07:00
Justin Clark-Casey (justincc)
293d0cc629 minor: Comment out "Deleting asset" log messages for now 2012-08-03 00:25:22 +01:00
Justin Clark-Casey (justincc)
0cd698d82b Delete old blank SOGSpamTest 2012-08-03 00:23:03 +01:00
Justin Clark-Casey (justincc)
eeef9d7e99 Properly dispose of all GDI+ entities used in VectorRenderModule for dynamic textures.
The convention is that if an object implements IDiposable() the code must explicitly call Dispose() or call it via the using statement.
This may be particularly important for GDI+ objects since they encapsulate native code entities.
2012-08-03 00:00:54 +01:00
Justin Clark-Casey (justincc)
0dfccfc1d9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-02 23:54:32 +01:00
Melanie
68406ab8f9 Initialize the Rezzing object to UUID.Zero 2012-08-02 22:34:46 +01:00
Justin Clark-Casey (justincc)
86b005de1d Add simple draw test for the VectorRenderModule 2012-08-02 22:14:09 +01:00
SignpostMarv
cd2c5843a8 reduced-complexity implementation of function to get rezzing object key
Signed-off-by: Melanie <melanie@t-data.com>
2012-08-02 22:12:36 +01:00
Melanie
e36bc0d754 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-08-01 22:39:40 +01:00
Melanie
cf16ca9bda Create the ability for physics modules to request assets on demand by
themselves. For that, the physics module simply calls RequestAssetMethod, which
in turn points to Scene.PhysicsRequestAsset. This gives physics access to
the asset system without introducing unwanted knowledge of the scene class.
2012-08-01 22:37:38 +01:00
Justin Clark-Casey (justincc)
5f500c89ce Fix a bug in pCampbot grabbing behaviour where an exception would be thrown if the bot was not yet aware of any objects. 2012-08-01 22:30:34 +01:00
Justin Clark-Casey (justincc)
69a5beeabc Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-08-01 00:40:31 +01:00
Justin Clark-Casey (justincc)
794363421d Look up the NPC module when the SensorRepeat class is created, rather than on every single sensor sweep. 2012-08-01 00:39:37 +01:00
Robert Adams
c51ef38e2d BulletSim: fix problem where resizing a primary shape (cube or sphere) would not rebuild the physics mesh. Update the DLLs and SOs to latest version. 2012-07-31 16:23:52 -07:00
Robert Adams
e38d26a2dc BulletSim: change boolean parameters in the shape data from int's to float's to be consistant with parameter data structure 2012-07-31 16:23:48 -07:00
Justin Clark-Casey (justincc)
04d8c6b4fe Change exception log messages in XInventoryService connector to error rather than debug, since these signal real problems.
Also outputs full exception instead of just the message to aid diagnostics.
2012-08-01 00:11:21 +01:00
Justin Clark-Casey (justincc)
7609daca38 Resolve a deadlock between INPCModule and SensorRepeat by replacing the SensorRepeat list with a new list on add/removes rather than locking it for the duration of the sensor sweep.
A deadlock was observed today where NPC removal on a script thread would lock the NPC list and then try to lock the sensor list via scripted attachment removal.
Concurrently, the sensor sweep thread would lock the sensor list and then try to lock the NPC list to check NPC status.
This commit resolves the deadlock by replacing the sensor list on update rather than locking it for the duration of the sweep.
2012-07-31 23:57:57 +01:00
Justin Clark-Casey (justincc)
d89faa3c16 Fix bug in SoundModule.TriggerSound() where every sound update to an avatar would base its gain calculation on the previous avatar's gain, instead of the original input gain.
This was making sound attenuate oddly when there were NPCs in the region, though it could also happen with ordinary avatars.
2012-07-31 22:52:17 +01:00
Mic Bowman
a76a289d11 Adds support to ScriptModuleComms for region modules to export
constants to the script engine.
2012-07-31 10:45:37 -07:00
Robert Adams
f9a8915cca BulletSim: update the DLLs and SOs. This fixes the exception on shutdown 2012-07-31 09:44:32 -07:00
Robert Adams
50dbb9ffe4 BulletSim: add parameters and API calls for setting ERP and CFM.
Set ERP and CFM in linkset constraints.
Reorder rebuilding of object bodies so they are not rebuilt everytime
   something is linked and unlinked.
2012-07-31 09:23:05 -07:00
Justin Clark-Casey (justincc)
6b1d12edcb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-30 23:25:54 +01:00
Justin Clark-Casey (justincc)
b899d64dc1 If we're fetching active gestures via the XInventoryServiceConnector, then properly look at the ITEMS dictionary already returned rather than the level above this. 2012-07-30 23:14:20 +01:00
Melanie
3f6dfa92ab Return world rotation on llGetObjectDetails()'s OBJECT_ROT 2012-07-29 16:05:35 +01:00
SignpostMarv
72d29bdb40 LSL/OSSL lacks Math.Min & Math.Max implementations. 2012-07-28 00:09:11 +01:00
Justin Clark-Casey (justincc)
7e89b99e6a Avoid a race condition between the scene shutdown thread and the update thread since commit c150320 (Thu Jul 26 15:27:18 2012)
c150320 started explicitly disposing of the physics scene and nulling it out on region shutdown.
However, the update loop may not have yet checked Scene.ShuttingDown, particularly if avatars were not in the scene, causing failure when it tried to lookup time dilation.
This commit moves the setting of m_shuttingDown above the existing 500ms pause to notify avatars that they are being kicked.
This should not affect the few other places that use this flag.
2012-07-27 23:58:53 +01:00
SignpostMarv
adbdb220df making first run more resilient to bad input (loop until good input, rather than crash) 2012-07-27 23:40:19 +01:00
SignpostMarv
b23ab3ea85 adding asset cache and map tile directories to .gitignore 2012-07-27 23:37:24 +01:00
Justin Clark-Casey (justincc)
d4f476c7ce Remove the LandGeom checks in OdeScene - these are pointless since LandGeom is always IntPtr.Zero and contacts returned always have a valid geometry.
Possibly this was for a feature that was never implemented or was otherwise removed.
Thanks to SignpostMarv for the spot of the warning that shows this parameter was never changed.
2012-07-27 23:31:19 +01:00
justincc
134c6d181f Update OpenMetaverse libraries at commit 6212cbd, this time built on Windows
This is to try and resolve a strange Initialization exception for the AppearanceManager type that only occurs on Windows 64 bit (not Windows 32 bit or Linux!)
2012-07-27 23:05:17 +01:00
Justin Clark-Casey (justincc)
f3c5ce1bbd minor: Comment out unused MemoryWatchdog.m_churnRatePerMillisecond - this is currently calculated dynamically 2012-07-27 22:20:43 +01:00
Justin Clark-Casey (justincc)
0d9afad3fe Remove duplicated IScenePresence.PresenceType. This is already in ISceneAgent.PresenceType from which IScenePresence inherits.
No other code changes required.
2012-07-27 22:15:25 +01:00
Justin Clark-Casey (justincc)
cd44c3b90a Replace libopenmetaverse commit 6212cbd with the same libraries but this time built with xbuild rather than nant.
This may fix Windows and some mono version builds.
2012-07-27 21:50:18 +01:00
Justin Clark-Casey (justincc)
1133f81dce Remove a couple of compiler warnings pointed out by SignpostMarv 2012-07-27 20:40:25 +01:00
Justin Clark-Casey (justincc)
811dc95105 Update libopenmetaverse to commit 6212cbd (Wed Jul 25 20:11:47 2012)
Built from https://github.com/openmetaversefoundation/libopenmetaverse/commits/master
This update incorporates a fix by Melanie in libomv where textures would sometimes rotate slightly when other properties were changed.
Hence addresses http://opensimulator.org/mantis/view.php?id=6100
This update also incorporates libomv bot code updates that significantly reduce the warning spam for pCampbot.
The change rate of libomv is low and many changes refer to bot or code not used by OpenSimulator, so I think it is sufficiently stable to use evne though it's not a release.
2012-07-27 20:16:29 +01:00
BlueWall
6ee17f5b36 Add autoclean for scripted use
./runprebuild.sh autoclean - cleans projects w/o prompting
2012-07-26 21:39:53 -04:00
BlueWall
f4bae34283 Add target switches
./runprebuild.sh vs2008/vs2010 to set the target
2012-07-26 21:34:33 -04:00
BlueWall
faf250df2d add clean task to reuprebuild.sh
./runprebuild.sh clean to clean up the project files
2012-07-26 21:28:20 -04:00
Justin Clark-Casey (justincc)
5f741143fd Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-27 00:30:04 +01:00
Justin Clark-Casey (justincc)
21b1fec32d Fix issue where RegionCombinerModule was not removing regions from its dictionary on RemoveRegion(), causing a later issue if regions were restarted (removed then readded). 2012-07-27 00:28:23 +01:00
Robert Adams
ce812c88cc BulletSim: fix a recursive loop when fetching the mass of the root of a linkset. 2012-07-26 16:06:00 -07:00
Robert Adams
7d30637d51 BulletSim: refactor all the linkset logic out of the prim class
and into its own class. The BulletSim data structures track
individual prims as linksets of 1 so most of the prim code is not
different between a linked and unlinked object.
2012-07-26 16:05:57 -07:00
Robert Adams
d4a667a918 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-26 16:04:11 -07:00
Robert Adams
9e914f5c32 Add check so Ode does not try to simulate after it has been Dispose()'ed. Fixes exception that happens when shutting down region (improvements from last patch) 2012-07-26 16:03:15 -07:00
Justin Clark-Casey (justincc)
0aaf52fca4 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-26 23:46:54 +01:00
Justin Clark-Casey (justincc)
66824dd18c When copying items, copy the item description field instead of the asset description field.
If we copy the asset description then we will only ever replicate the very first description, if there was one, not any subsequent changes.
Thanks to Oren Hurvitz of Kitely for this patch from http://opensimulator.org/mantis/view.php?id=6107
I have adapted it slightly to change the order of arguments (name before description rather than vice-versa) and slightly improve some method doc.
2012-07-26 23:44:29 +01:00
Robert Adams
c1503205c0 Add a Dispose() of the physics engine when a scene is being shutdown. 2012-07-26 15:27:18 -07:00
Robert Adams
c6d02801db BulletSim: update BulletSim DLLs and SOs 2012-07-25 16:31:22 -07:00
Robert Adams
9ca1075e7e BulletSim: remove unused, commented out code in BSConstraint 2012-07-25 16:31:17 -07:00
Robert Adams
0a4c080e63 BulletSim: fix line endings in newly added files (Is it DOS or is it UNIX? Only it's hairdresser knows for sure) 2012-07-25 16:31:12 -07:00
Robert Adams
d7add2940a BulletSim: add parameters for setting linkset constraint factors 2012-07-25 16:31:08 -07:00
Robert Adams
75f7721b0c BulletSim: small change to use the pointer to the bullet object for zeroing forces. 2012-07-25 16:31:04 -07:00
Robert Adams
bf6529db32 BulletSim: Redo parameter specification so only one place has
to change to have a parameter show up in the ini file and
command line. Will make it much easier for the next person.
2012-07-25 16:30:59 -07:00
Robert Adams
2d05e16f7e BulletSim: Add C# classes for storing and tracking constraints. 2012-07-25 16:30:55 -07:00
Robert Adams
5707e171f4 BulletSim: Move constraint tracking from C++ code to C# code
for more flexibility.
2012-07-25 16:30:50 -07:00
Justin Clark-Casey (justincc)
5aec0ff207 Move Watchdog and MemoryWatchdog classes into OpenSim.Framework.Monitoring with other monitoring code from OpenSim.Framework 2012-07-25 23:27:00 +01:00
Justin Clark-Casey (justincc)
35efa88c26 Rename OpenSim.Framework.Statistics to OpenSim.Framework.Monitoring.
This better reflects the long-term purpose of that project and matches Monitoring modules.
2012-07-25 23:11:50 +01:00
Justin Clark-Casey (justincc)
227126adb7 Add MemoryWatchdog class missing from git master a1e9964 2012-07-25 22:38:28 +01:00
Justin Clark-Casey (justincc)
22aa436648 Correct churn stat from MB/s from KB/s 2012-07-25 22:33:24 +01:00
Justin Clark-Casey (justincc)
a1e99642c1 Add experimental "OpenSim object memory churn" statistics to output of region console "show stats" command
This aims to capture the amount of memory that OpenSim turns over whilst operating a region.
This memory is not lost - apart from leaks it is reclaimed by the garbage collector.
However, the more memory that gets turned over the more work the GC has to do to reclaim it.
2012-07-25 22:29:40 +01:00
Justin Clark-Casey (justincc)
31304c222d Make SceneManager.OnRegionsReadyStatusChange event available.
This is fired when all regions are ready or when at least one region becomes not ready.
Recently added EventManager.OnRegionReady becomes OnRegionReadyStatusChange to match OnLoginsEnabledStatusChange
2012-07-25 21:00:59 +01:00
Justin Clark-Casey (justincc)
3cf8edfd68 Rename "image queues clear" console command to "clear image queues"
There is less justification for this word arrangement (verb after noun) now that command help is categorized.
Also removes "image queues show" in favour of existing alias "show image queues".
2012-07-24 23:51:04 +01:00
Justin Clark-Casey (justincc)
1427430b7b Add information about each column to "show queues" region console command help. 2012-07-24 23:48:53 +01:00
Justin Clark-Casey (justincc)
ef8570f789 Extend region console "show queues" command to show already collected time since last packeted received by the simulator from a viewer. 2012-07-24 23:39:31 +01:00
Justin Clark-Casey (justincc)
c846a5461c Remove bad using statement in AttachmentsModuleTests.
It seems that the mono 2.10.8.1 doesn't choke on this but for some reason 2.4.3 fails.
2012-07-24 22:46:22 +01:00
Justin Clark-Casey (justincc)
c992629576 extend regression TestRezScriptedAttachmentFromInventory() to check actual start of script rather than just the script status reported by SOG.ContainsScripts() 2012-07-24 22:40:06 +01:00
Justin Clark-Casey (justincc)
bc13c52c98 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-24 22:38:26 +01:00
Justin Clark-Casey (justincc)
2858b1b1f4 extend regression TestDetachScriptedAttachementToInventory() to check correct running status on a re-rezzed attachment 2012-07-24 22:33:54 +01:00
Robert Adams
892dd59b13 BulletSim: update BulletSim.dlls and so's 2012-07-23 16:38:31 -07:00
Robert Adams
bf6547be01 BulletSim: change how prim mass is saved so it is always calculated but zero is given if not physical. 2012-07-23 16:32:47 -07:00
Robert Adams
dda681515b BulletSim: small optimizations for link and unlink code 2012-07-23 16:32:41 -07:00
Robert Adams
8a574395c7 BulletSim: add Dispose() code to free up resources and close log files. 2012-07-23 16:32:36 -07:00
Robert Adams
85c6eb7c50 BulletSim: add all the new functions to BulletSimAPI.
Modify ZeroMotion() to not make tainting calls and to use new API calls.
2012-07-23 16:32:30 -07:00
Robert Adams
73f9e14b43 BulletSim: improve linking to add each link individually rather than rebuilding the object each time. Makes it an O(n) operation rather than O(n\!). 2012-07-23 16:32:24 -07:00
Melanie
e126915bc1 Change attachment handling to remove object from the scene first as per
justincc's original work. Sample scripts before doing so. Also refactor some
crucial common code and eliminate parameters that were only ever used with
the same constant value.
2012-07-23 21:39:26 +01:00
Melanie
fc77bca936 Committing Avination's memleak fix-a-thon, installment #3
When linking, detach the no longer used SOG's from backup so they can be
collected. Since their Children collection is never emptied, they prevent
their former SOPs from being collected as well.
2012-07-23 19:53:26 +01:00
Melanie
55c1c10c0d Committing Avination's memleak fix-a-thon, installment #2
Ensure items coming off the lockless queue are released. Also ensure this
is done when the queue is cleared.
2012-07-23 19:26:21 +01:00
Melanie
7d16d0664e Commiting Avination's memleak fix-a-thon, installment #1
As the MinHeap shrinks, free object references that have been sent. Also,
free the last item when it empties.
2012-07-23 19:21:59 +01:00
Robert Adams
ac612e2105 Update BulletSim DLLs and SOs 2012-07-20 16:12:54 -07:00
Justin Clark-Casey (justincc)
1b1418e1de Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-20 23:47:25 +01:00
Robert Adams
b537bbc410 Reorder BulletSim in prebuild.xml so OpenSim.Region.CoreModules is compiled before BulletSim is 2012-07-20 15:44:53 -07:00
Robert Adams
b25d874afa BulletSim: add reference to OpenSim.Region.CoreModules in BSScene.cs attempting to fix a mono compile error. 2012-07-20 15:34:19 -07:00
Justin Clark-Casey (justincc)
ef14232e64 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-20 23:20:40 +01:00
Justin Clark-Casey (justincc)
13929613b1 Move RegionConfig.ini.example into bin/Regions/Regions.ini.example - all other example files are in the same directory as their real files.
Only files ending in .ini and .xml are actually loaded.
Also improves the help at the top of Regions.ini.example to mention that OpenSimulator would generate Regions.ini anyway on first startup.
2012-07-20 23:18:41 +01:00
Robert Adams
ca3b6b1f90 BulletSim: more detail logging for vehicle and general physics debugging.
Physical linksets are fully functional.
Tweeking of the vehicle code to make it semi-work.
Utilize the new API2 for some setting operations.
Add GetOrientation() API call for proper reporting of children of linksets.
Changes the interface between C# and C++ code so old DLLs won't work!
2012-07-20 14:08:29 -07:00
Robert Adams
24dfb5bcb3 Remove an added but unnecessary dependency in prebuild.xml 2012-07-20 14:07:35 -07:00
Robert Adams
7451bb1613 BulletSim: fix compile errors from last commit. Clean up passing of physics scene into vehicle dynamics code. 2012-07-20 14:02:29 -07:00
Robert Adams
cda67a68de BulletSim: Add very detailed logging to BSDynamics for vehicle debugging 2012-07-20 14:02:27 -07:00
Robert Adams
e9c437ed0e Correct namespace of BinaryLoggingModule (a cut-and-paste error). Add a simple, high performance logger for high frequency logging (physics sub-operations, for instance). 2012-07-20 14:02:26 -07:00
Robert Adams
c400918c84 BulletSim: Add PID variables to physical scene. Not PIDing yet, but soon.
Cleaned up code and got rid of compile warnings.
2012-07-20 14:02:24 -07:00
Robert Adams
f9913b6ef7 BulletSim: Add detailed and voluminous debug logging that is enabled
with an ini configuration parameter.
Correct computation of relative offsets of children in a linkset.
Remove a prim from any link relationship before deleting it.
Minor code flow cleanups.
2012-07-20 14:02:22 -07:00
Justin Clark-Casey (justincc)
ecf7bb268c As per opensim-dev mailing list discussion, extend llGetDetectedType() to return OS_NPC if an OS npc is detected.
The detection will also return agent is the NPC has been created with the OS_NPC_SENSE_AS_AGENT option.
2012-07-20 21:36:33 +01:00
Justin Clark-Casey (justincc)
bcfc392edf As per opensim-dev mailing list conversation, introduce OS_NPC constant for use with llSensor()
This same constant will later be used with llGetDetectedType().
This constant has a different name from NPC to avoid possible conflict with future LSL changes.
This constant has a different value to try and avoid unnecessary conflict with future constants that may use the same value.
Using the 'NPC' constant with llSensor() will remain valid but is deprecated.
2012-07-20 21:08:04 +01:00
Mic Bowman
a4281ca014 Enables support for UUIDs to be returned in lists from
modInvoke commands.

Thanks SignpostMarv!!!
2012-07-20 10:48:51 -07:00
Mic Bowman
644fb6b013 Implements a very useful OSSL function to test a string to see
if it is a UUID. The function is osIsUUID().

Thanks SignpostMarv!
2012-07-20 10:25:50 -07:00
Melanie
fe99948c58 Fix the order of operations on detach. The object must always be serialized
while still in the scene to avoid losing important script state.
DeleteSceneObject can not be called before doing this!
2012-07-20 11:54:59 +02:00
Justin Clark-Casey (justincc)
be39f03caa minor: switch around mixed up circuit code and endpoint data in "show connections" region console command 2012-07-19 23:35:56 +01:00
Justin Clark-Casey (justincc)
d1d331a4c0 Make LLClientView instant message handling asynchronous rather than synchronous to prevent long operations from holding up all inbound packet processing.
Giving a large folder from one avatar to another was causing a long delay when handled synchronously, since it took some time to retrieve the necessary data from the inventory service.
Handling this asynchronously instead stops this delay from disrupting all avatars in the scene.  This has been shown in OSGrid.
I see no reason for not handling all IM messages asynchronously, just as incoming chat is handled asynchronously, so this has been switched for all instant messages.
Thanks to Nebadon for testing this change out.
2012-07-19 23:20:03 +01:00
Justin Clark-Casey (justincc)
c4533e755b Comment out OnIncomingInstantMessage and OnInstantMessage handlers in GroupsModule, since these led to a private blank method 2012-07-19 23:13:08 +01:00
Justin Clark-Casey (justincc)
e94831ddab Stop explicitly closing and nulling out Animator in order to prevent NREs in various places due to race conditions.
Even where checks are being made they aren't enough since they all assume that the Animator they just checked is still there in the next line, which is not necessarily the case without locking.
The memory used is small and these should be GC'd anyway when the SP is released.  If this is not happening then the wider problem of old SPs being retained needs to be resolved.
2012-07-19 22:59:28 +01:00
Justin Clark-Casey (justincc)
ccc7e75ce4 minor: remove some mono compiler warnings 2012-07-19 22:37:48 +01:00
Justin Clark-Casey (justincc)
ba80f137b5 Prevent race conditions between two threads that call LLClientView.Close() simultaneously (e.g. ack timeout and an attempt to reconnect) 2012-07-19 22:32:27 +01:00
Justin Clark-Casey (justincc)
e9a121e1b2 Add TestCreateDuplicateRootScenePresence() regression test. 2012-07-19 21:54:50 +01:00
Justin Clark-Casey (justincc)
c0ab406e2e Add basic TestCreateRootScenePresence() regression test 2012-07-19 21:41:13 +01:00
Justin Clark-Casey (justincc)
6dda7c65ae Add EventManager.OnRegionLoginsStatusChange fired whenever logins are enabled or disabled at any point, not just during initial startup.
This replaces EventManager.OnLoginsEnabled which only fired when logins were first enabled
and was affected by a bug where it would never fire if the region started with logins disabled.
2012-07-19 00:09:22 +01:00
Justin Clark-Casey (justincc)
64db0bcbd2 Add back notification to neighbouring regions when RegionReadyModule is not active accidentally just removed in 528004d 2012-07-18 23:40:00 +01:00
Justin Clark-Casey (justincc)
528004d349 Perform other region ready actions even if simulator is configured to leave logins disabled on startup. 2012-07-18 23:35:05 +01:00
Justin Clark-Casey (justincc)
1971b6bb4f Stop the 15 second initial script compile wait if a script is being rezzed on a previously empty region. 2012-07-18 22:24:52 +01:00
Justin Clark-Casey (justincc)
d97e27434c Fix bug where region ready would be triggered a second time if a script was rezzed on a previously script-free region.
There is no need to listen for OnRezScript in RegionReadyModule since OnEmptyScriptCompileQueue will only fire if scripts were compiled.
2012-07-18 22:17:39 +01:00
Justin Clark-Casey (justincc)
58b72933c8 Fix bug where region ready was being triggered twice in quick succession if a region contained no scripts. 2012-07-18 22:09:20 +01:00
Justin Clark-Casey (justincc)
4973fddc51 Establish EventManager.OnRegionReady event. This will only be triggerred once when the region is ready.
Switch MapImageServiceModule to use this.
2012-07-18 21:52:07 +01:00
Justin Clark-Casey (justincc)
6460e587c4 Pass entire scene object in OnLoginsEnabled event rather than just the region name.
This saves listeners from having to re-retrieve the scene from their own lists, which won't work anyway if multiple regions with the same name have been allowed
2012-07-18 21:29:12 +01:00
Justin Clark-Casey (justincc)
742ad5eb93 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-18 21:26:28 +01:00
Dan Lake
dd85d7d981 Merge branch 'master' of git://opensimulator.org/git/opensim 2012-07-18 13:07:07 -07:00
Dan Lake
0dd14ca0a3 Missing parameter in log error message was throwing exception 2012-07-18 13:05:48 -07:00
Justin Clark-Casey (justincc)
cd6d7429f8 Only listen to LoginsEnabled event in RegionReadyModule if it has been asked to disable logins until all scripts have been compiled 2012-07-18 21:03:35 +01:00
Justin Clark-Casey (justincc)
eb590becf0 Close() the ScenePresence after we've removed it from the scene graph, to cut down race conditions when another thread manages the grab the presence after some SP structures have been reset. 2012-07-18 00:14:02 +01:00
Justin Clark-Casey (justincc)
b9749d5aaf Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-17 23:48:53 +01:00
Justin Clark-Casey (justincc)
48a5f10be1 Revert "Revert "refactor: make llGiveInventory() use existing GetInventoryItem() method rather than iterate through TaskInventory itself.""
This reverts commit 59a29f5f22.
The original revert was committed by mistake - it turns out this was not the cause of Mantis 6089

Conflicts:

	OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
2012-07-17 23:48:09 +01:00
Justin Clark-Casey (justincc)
56870d9609 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-17 23:34:50 +01:00
Justin Clark-Casey (justincc)
ecb759c1e5 Fix regression where llGiveInventory() had stopped asking non-owner receivers to accept/decline.
This appears to be a regression from back in commit db91044 (Mon Aug 22 2011) where we started to send TaskInventoryOffered msg dialog rather than InventoryOffered dialog.
This is probably correct, but failed because the bucket was too large and because we wouldn't have handled the TaskInventoryDeclined option anyway.
This patch handles both of these and make llGiveInventoryList() use TaskInventoryOffered as well
Fixes http://opensimulator.org/mantis/view.php?id=6089
2012-07-17 23:31:38 +01:00
Justin Clark-Casey (justincc)
59a29f5f22 Revert "refactor: make llGiveInventory() use existing GetInventoryItem() method rather than iterate through TaskInventory itself."
This reverts commit 58b13d51a7.
2012-07-17 22:56:21 +01:00
Melanie
c489bc1cd2 Make the scrpt running flag work properly 2012-07-17 15:00:42 +02:00
Justin Clark-Casey (justincc)
356d597296 Restore update of inventory item on derez/logout. This is necessary to update the name if this has been changed whilst attached.
Note, this behaviour appears to be at variance with the ll grid as of Tues 17 July 2012, testing with viewer 3.2.1.
The item name in inventory does not change either at the point of detach or after a relog.
2012-07-17 00:17:51 +01:00
Justin Clark-Casey (justincc)
b0facd147a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-17 00:02:45 +01:00
Justin Clark-Casey (justincc)
b6476eaac3 Stop sending the viewer an inventory create message if a known attachment item is updated.
This doesn't seem to make any sense and probably stems from a period when this code was directly involved in attaching objects directly from the scene.
This message is already being sent by InventoryAccessModule code instead.
2012-07-17 00:00:26 +01:00
Melanie
2a85372169 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-07-16 23:33:33 +01:00
Melanie
1c3b0da74a Revert "Fix script "Running" behavior"
A better solution using the already present flags must be found.

This reverts commit 6d3ee8bb39.
2012-07-16 23:31:55 +01:00
Justin Clark-Casey (justincc)
c1667d39a6 refactor: factor out common code in WebStatsModule.OnMakeRootAgent() 2012-07-16 23:15:02 +01:00
Justin Clark-Casey (justincc)
217f47b0d5 In WebStatsModule.OnMakeRootAgent(), get region ID directly from SP.Scene.RegionInfo.RegionID instead of manually looking it up from the stored scene list. 2012-07-16 23:09:48 +01:00
Justin Clark-Casey (justincc)
ed14dac0a3 Stop warning about no session from ViewerStats if user teleports to another region in the same simulator that was not next to the source region.
This was because teleporting to the new region invoked the new session setup code before the agent was removed from the old region, which then invoked the session teardown code.
Now, we only invoke the teardown code if the region ID occupied by the agent being removed is the same as the one registered for the current session.
2012-07-16 23:03:23 +01:00
SignpostMarv
ee7478fa16 sending more user-friendly messages to the script error window rather than the thrown exceptions.
Signed-off-by: Melanie <melanie@t-data.com>
2012-07-16 21:32:38 +01:00
dahlia
5d3723a47f update PrimMesher.cs to dll version r72 which fixes some path errors in sliced linear prims. Addresses Mantis #6085 2012-07-13 21:22:15 -07:00
SignpostMarv
84b7ae2573 acting on feedback from justincc 2012-07-14 01:45:34 +01:00
SignpostMarv
423101b425 acting on feedback from justincc 2012-07-14 01:45:34 +01:00
SignpostMarv
e3453dd9ca added in some extra variables, it sometimes thinks it is on the same parcel :(
Signed-off-by: SignpostMarv <github@signpostmarv.name>
2012-07-14 01:45:34 +01:00
SignpostMarv
b6cd3b625e adding workaround for silent failure if position is outside the bounds of a region, implementing parcel prim count check.
Signed-off-by: SignpostMarv <github@signpostmarv.name>
2012-07-14 01:45:34 +01:00
SignpostMarv
8d59385eea Implementation of llSetRegionPos(). Does not implement failure on object entry/prim limit/access restrictions.
Signed-off-by: SignpostMarv <github@signpostmarv.name>
2012-07-14 01:45:34 +01:00
Justin Clark-Casey (justincc)
ec6a195e40 When generating a Warp3D texture, set the detailTexture[i] variable on resize from the JPEG2000 original rather than only saving it to disk.
This appears to be the cause of the warp 3d exception seen when starting a new region for the first time.
Subsequent starts were okay because resized saved bitmap was correctly retrieved from disk.
Should fix http://opensimulator.org/mantis/view.php?id=5204 and http://opensimulator.org/mantis/view.php?id=5272
2012-07-14 01:11:30 +01:00
Justin Clark-Casey (justincc)
2954ceccae Remove a callstack print out I accidentally left in 2 commits ago in 9ccb578 2012-07-13 01:08:49 +01:00
Justin Clark-Casey (justincc)
884d603cac Rather than instantiating a UTF8 encoding everywhere when we want to supress the BOM, use a single Util.UTF8NoBomEncoding.
This class is thread-safe (as evidenced by the provision of the system-wide Encoding.UTF8 which does not suppress BOM on output).
2012-07-13 01:03:28 +01:00
Justin Clark-Casey (justincc)
9ccb578721 Don't cache regions data on the other unused LocalGridServiceConnector that the module code still sets up even if we're using one directly instantiated from the RemoteGridServiceConnector.
Also improves log messages to indicate which regions are sending/receiving various neighbour protocol messages.
2012-07-13 00:44:00 +01:00
Justin Clark-Casey (justincc)
d6f54b25cd Stop redundantly passing in the endpoint to the LLClientView constructor.
This can always be retrieved via the LLUDPClient and is so done in various places already.
2012-07-12 23:48:42 +01:00
Justin Clark-Casey (justincc)
dda999a22c Remove IClientIPEndpoint client interface for now.
This may well come back in the future when this subinterface is actually used but it currently isn't and I feel the name was poor.
Everything uses IClientAPI.RemoveEndPoint which also returned the full endpoint rather than just the ip address.
2012-07-12 23:43:02 +01:00
Justin Clark-Casey (justincc)
3b3d9967b1 Remove IClientAPI.GetClientEP() in favour of existing identical IClientAPI.RemoteEndpoint. 2012-07-12 23:29:57 +01:00
Justin Clark-Casey (justincc)
75ab9b4b88 Change very recent AllowedViewerList and BannedViewerList config setting names in OpenSim.ini.example to AllowedClients and BannedClients to match long-existing settings in [LoginService]
Also changes separator from comma to bar to match existing [LoginService] config features.
Divergence of config names for identical facilities in different places makes for an unnecessarily confusing user experience.
2012-07-12 23:18:30 +01:00
Justin Clark-Casey (justincc)
15283d35f1 Extend "show circuits" to show circuit code, ip and viewer name.
Also change to use standard table formatting
"show circuits" and "show connections" console commands are very similar but access different data structures.
2012-07-12 23:09:36 +01:00
Justin Clark-Casey (justincc)
6a0de355e0 Add active status to "show connections" 2012-07-12 22:37:48 +01:00
Justin Clark-Casey (justincc)
65a25ee510 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-12 22:35:38 +01:00
Justin Clark-Casey (justincc)
ca412032e8 Put output for "show connections" command into standard table format.
Also moves into own method.
2012-07-12 21:36:33 +01:00
Robert Adams
743437262e Many explanitory comments added to the link and delink code in
SOG and SOP. Should have no functionality changes.
2012-07-11 16:12:38 -07:00
Justin Clark-Casey (justincc)
916e3bf886 Where possible, use the system Encoding.ASCII and Encoding.UTF8 rather than constructing fresh copies.
The encodings are thread-safe and already used in such a manner in other places.
This isn't done where Byte Order Mark output is suppressed, since Encoding.UTF8 is constructed to output the BOM.
2012-07-11 22:54:22 +01:00
Justin Clark-Casey (justincc)
9c89ad9154 Fix build break for windows with missing package for IScriptEngine in prebuild.xml for OpenSim.Region.CoreModules.Tests.dll 2012-07-11 22:15:53 +01:00
Justin Clark-Casey (justincc)
33cff9b9d7 Allow XEngine StartDelay to be configured in the [XEngine] config section.
This is only currently meant for use by regression tests that don't have any issues if XEngine is started up quickly, since no other operations will be occuring simultaneously.
Therefore, this is not yet documented externally.
2012-07-11 21:55:18 +01:00
Justin Clark-Casey (justincc)
0e611c47d3 Remove WorldComm module from the regression TestCompileAndStartScript() since the infrastructure no longer fails if this module isn't present, at least on the tested codepaths 2012-07-11 21:46:46 +01:00
Justin Clark-Casey (justincc)
fc24563206 Add regression TestDetachScriptedAttachmentToInventory()
This currently only does a relatively crude check for a ScriptState node in the serialized xml
2012-07-11 21:43:35 +01:00
Justin Clark-Casey (justincc)
14d05dc2a9 Add regression TestRezScriptedAttachmentsFromInventory() though this currently only checks for the presence of script items, not for started scripts 2012-07-11 19:54:40 +01:00
Justin Clark-Casey (justincc)
337ea019bd If a part has a sit target and an avatar is already sitting, allow another avatar to sit in the position given if no sit target was set.
Previous behave was that the second avatar could not sit.
This matches behaviour observed on the LL grid.
2012-07-10 23:55:22 +01:00
Justin Clark-Casey (justincc)
cdea572d2e refactor: move management of SOP.SitTargetAvatar into SOP.AddSittingAvatar() and SOP.RemoveSittingAvatar() 2012-07-10 23:50:04 +01:00
Justin Clark-Casey (justincc)
11e0ad6dc8 Revert "refactor: Add SOP.IsSitTargetOccupied to improve readability"
This reverts commit c8f0d476d2.
On reconsideration, I think this is less readable since immediately following code still sets SitTargetAvatar directly
2012-07-10 23:39:05 +01:00
Justin Clark-Casey (justincc)
c8f0d476d2 refactor: Add SOP.IsSitTargetOccupied to improve readability 2012-07-10 23:34:40 +01:00
Justin Clark-Casey (justincc)
69a6f6e3cd refactor: use sit orientation argument passed in to SP.SendSitResponse() rather than creating a new copy
There are no issues with side-effects since this is a struct.
2012-07-10 23:26:40 +01:00
Justin Clark-Casey (justincc)
e8347b7095 Move common code to detect whether a part has a valid sit target into a SOP property rather than being repeated in SP.
This also makes the detection in SP.FindNextAvailableSitTarget() and SendSitResponse() identical.
Previously they varied slightly (SendSitResponse didn't check for an older type of invalid quaternion) but the practical effect is most probably zero.
2012-07-10 23:21:39 +01:00
Justin Clark-Casey (justincc)
506437b684 Remove log line accidentally left in SP.SendSitResponse() 2012-07-10 23:06:34 +01:00
Justin Clark-Casey (justincc)
9f01c3d408 Disable logging in regression test in OSSL_ApiAttachmentTests 2012-07-10 23:04:44 +01:00
Justin Clark-Casey (justincc)
58869e5aa0 Fix recent SOP.GetSittingAvatars() to return null if there are no sitting avatars rather than throwing an exception.
Extends sitting avatar regression tests to test new sitters information
2012-07-10 23:03:52 +01:00
Justin Clark-Casey (justincc)
f3134b5cf6 When an attachment is detached to inv or derezzed, stop the scripts, update the known item with script state still in the script engine and then remove the scripts.
This is to fix a regression starting from 5301648 where attachments had to start being deleted before persistence in order to avoid race conditions with hud update threads.
2012-07-10 22:41:11 +01:00
Justin Clark-Casey (justincc)
eb5ec4a786 If a script is being stopped manually, then give the scriptpool thread 1 second to finish normally before forcibly aborting.
This is to avoid the worst of the problems in mono 2.6, 2.10 where an aborted thread does not always release all its locks.
This very short grace period is identical to the existing behaviour when a script is removed from the scene.
2012-07-10 21:42:51 +01:00
Justin Clark-Casey (justincc)
c8af20f966 This script allows an object to be attached directly from prim inventory to another avatar in the scene.
Very useful in serious game/environment scenarios where its only allowed for trusted creators.
Threat level Severe
2012-07-09 23:08:41 +01:00
Justin Clark-Casey (justincc)
d6f563794e Don't allow a prim to be sat upon if its part of an attachment 2012-07-09 21:43:44 +01:00
Justin Clark-Casey (justincc)
2eaa6d5ace Do not allow a script to attach a prim if its being sat upon.
This prevents a stack overflow where a get position on the avatar will refer to the attachment which will in turn refer back to the avatar.
This required recording of all sitting avatars on a prim which is done separately from recording the sit target avatar.
Recording HashSet is null if there are no sitting avatars in order to save memory.
2012-07-09 21:24:32 +01:00
BlueWall
1a2ab7bc69 More keys for automated ini processing 2012-07-08 22:50:56 -04:00
BlueWall
a96ac73302 Add more keys for OpenSim.ini.defaults automation 2012-07-08 13:45:17 -04:00
BlueWall
57094bd017 Add more automation keys to OpenSim.ini.example 2012-07-08 13:03:37 -04:00
Justin Clark-Casey (justincc)
112cddc9ca minor: rearrange INITIALIZATION COMPLETE log message so that it's clear init is only complete for a particular region at a time 2012-07-07 00:53:17 +01:00
Justin Clark-Casey (justincc)
16d5b79d57 minor: remove some recent mono compiler warnings 2012-07-07 00:36:01 +01:00
Justin Clark-Casey (justincc)
1201307c73 Remove duplicate Warp3DImageModule entry in CoreModulePlugin.addin.xml
This was causing 2 copies of the module to be created for each scene.
Probably no bad consequences other than a small waste of memory (both for the module and for the warp3D renderer it loaded)
2012-07-07 00:26:25 +01:00
Justin Clark-Casey (justincc)
a85741ac37 minor: Make WORLD MAP category log lines consistent 2012-07-07 00:14:16 +01:00
Justin Clark-Casey (justincc)
3bd134474b minor: Get RegionReady module to shout initialization complete status to draw the eye 2012-07-07 00:09:33 +01:00
Justin Clark-Casey (justincc)
b19ead5f9e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-07-07 00:05:16 +01:00
Justin Clark-Casey (justincc)
7ff4eec79c Remove redundant SetScene() function in Scene.AddSceneObject()
This is always done later on in SceneGraph.AddSceneObject() if the call hasn't failed due to sanity checks.
There's no other purpose for this method to exist and it's dangerous/pointless to call in other conditions.
2012-07-07 00:02:45 +01:00
Robert Adams
7aff238eee Merge branch 'bulletsim2'
Cleanup preceeding major work. No major functional changes.
Collisions reported to simulator more efficiently.
BulletSim binaries updated using a more recent version of Bullet (v2.80-r2527).
2012-07-06 15:59:09 -07:00
Robert Adams
af9d8de515 BulletSim: update the binaries to the current sources 2012-07-06 15:56:35 -07:00
Justin Clark-Casey (justincc)
f1f390cfdf Remove now duplicate interregion object check that should have been removed a few commits ago in 43a2da9 2012-07-06 23:22:40 +01:00
Justin Clark-Casey (justincc)
74014a3854 minor: Remove some wrong comments in attachments regression tests 2012-07-06 23:13:00 +01:00
Robert Adams
e4a6611865 Clean up collision reporting code so they are properly passed to
the simulator in batches.
More comments.
2012-07-06 15:09:19 -07:00
Justin Clark-Casey (justincc)
056c9a59b2 Add assert to attachment regression tests to check that number of objects in the scene graph 2012-07-06 23:07:50 +01:00
Talun
ae1f2114f5 Mantis 6077 trim NPC chat on channel zero.
This patch trims leading and trailing spaces from NPC chat and
suppresses the sending of empty chat strings on open chat channel 0.
2012-07-06 22:49:18 +01:00
Talun
1b1f841c6a Mantis 6063 osNpcTouch.
Allow NPCS to touch obects.
2012-07-06 22:37:19 +01:00
Justin Clark-Casey (justincc)
43a2da9edb Pull prim crossing/teleport checks up into Scene.IncomingCreateObject() from Scene.AddObject()
Only IncomingCreateObject() needs these checks.  General object adding does not need to perform crossing perm checks
2012-07-06 22:33:16 +01:00
Justin Clark-Casey (justincc)
f6e5791ecd refactor: extract method UpdateUserInventoryWithAttachment() from AttachObject() for better code comprehension 2012-07-06 22:07:19 +01:00
Justin Clark-Casey (justincc)
843112340e Log MONO_THREADS_PER_CPU value on simulator startup, or "unset" if it is not set 2012-07-06 00:37:45 +01:00
Justin Clark-Casey (justincc)
7e73f609e5 Log warning if time between invocations of the watchdog thread is twice the timer setting.
This is to help detect situations where thread timeout warnings are being generated because of general machine issues rather than deadlock, network or other problems.
2012-07-05 23:15:59 +01:00
Justin Clark-Casey (justincc)
db9616f7ba minor: add client name to various login service log messages to disambiguate messages from concurrent logins. Also adds destination resolution debug log message showing region endpoint.
Adding endpoint to the log helps to find issues where the region external host information has been wrongly configured
2012-07-05 21:30:20 +01:00
Justin Clark-Casey (justincc)
8674604ff5 regrade osFormatString, osMatchString and osReplaceString to VeryLow.
I can't see that these present any real hazard to sim functioning.
2012-07-05 21:10:59 +01:00
Justin Clark-Casey (justincc)
462f7bccf9 minor: Add more information to OSFunctionThreatLevel and clarify some text in using PARCEL_OWNER, PARCEL_GROUP_MEMBER, ESTATE_MANAGER, ESTATE_OWNER permission categories 2012-07-05 20:58:20 +01:00
SignpostMarv
510e809aba porting console commands from raw2sculpt 3.2 2012-07-05 00:16:31 +01:00
Justin Clark-Casey (justincc)
951b45b80f Add OSSL function osForceAttachToAvatarFromInventory()
This works like osForceAttachToAvatar() but allows an object to be directly specified from the script object's inventory rather than forcing it to be rezzed in the scene first.
Still only attaches objects to the owner of the script.
This allows one to bypass the complicated co-ordination of first rezzing objects in the scene before attaching them.
Threat level high.
2012-07-05 00:05:06 +01:00
Justin Clark-Casey (justincc)
7b327848d0 Use GetInventoryItem() in llRezAtRoot rather than iterating through a cloned dictionary 2012-07-04 22:21:47 +01:00
Justin Clark-Casey (justincc)
2f998fce1f refactor: In llGetNotecardLine() use existing GetInventoryItem() rather than inspecting a clone of the TaskInventory dictionary that was not cloned thread-safe 2012-07-04 22:00:39 +01:00
Justin Clark-Casey (justincc)
1816ecb747 refactor: In llGetNumberOfNotecardLines() use existing GetInventoryItem() rather than inspecting a clone of the TaskInventory dictionary that was not cloned thread-safe 2012-07-04 21:57:57 +01:00
Justin Clark-Casey (justincc)
eacba4fc0b refactor: use existing GetInventoryItem() in GetScriptByName(), itself renamed from ScriptByName() 2012-07-04 21:54:30 +01:00
Justin Clark-Casey (justincc)
9fac7fd932 refactor: In llGetInventoryType() use existing GetInventoryItem() 2012-07-04 21:50:52 +01:00
Justin Clark-Casey (justincc)
f2b0377c28 refactor: In llGetInventoryCreator() use existing GetInventoryItem() 2012-07-04 21:49:21 +01:00
Justin Clark-Casey (justincc)
d933bdbd59 refactor: In llGetInventoryPermMask() use existing GetInventoryItem() 2012-07-04 21:47:20 +01:00
Justin Clark-Casey (justincc)
f9fa34408d refactor: in llGetInventoryPermMask use existing GetInventoryItem() 2012-07-04 21:42:04 +01:00
Justin Clark-Casey (justincc)
857494f6bd refactor: In llRemoteLoadScriptPin() use existing GetInventoryItem() 2012-07-04 21:36:44 +01:00
Justin Clark-Casey (justincc)
dff7cae2ee refactor: replace use of LSL_Api.GetTaskInventoryItem() with existing GetInventoryItem() 2012-07-04 21:33:35 +01:00
Justin Clark-Casey (justincc)
0e3fce9b5c refactor: In llGetInventoryKey() use existing GetInventoryItem() 2012-07-04 21:25:58 +01:00
Justin Clark-Casey (justincc)
4b2b14dad1 In llMessageLinked() use GetInventoryItems() rather than cloning TaskInventory directory
GetInventoryItems() returns a new list and so is equivalent, and creates this list under lock whereas Clone() is not thread-safe
2012-07-04 21:22:43 +01:00
Justin Clark-Casey (justincc)
3769739ca7 In llRequestInventoryData() use GetInventoryItems() rather than cloning TaskInventory directory
GetInventoryItems() returns a new list and so is equivalent, and creates this list under lock whereas Clone() is not thread-safe
2012-07-04 21:19:16 +01:00
Justin Clark-Casey (justincc)
3717812ce0 refactor: In llCollisionSound() use existing GetInventoryItem() method rather than have it iterate through TaskInventory itself. 2012-07-04 21:15:00 +01:00
Justin Clark-Casey (justincc)
ae64d089c6 refactor: In llRemoveInventory() use existing GetInventoryItem() method rather than have it iterate through TaskInventory itself. 2012-07-04 21:05:51 +01:00
Justin Clark-Casey (justincc)
58b13d51a7 refactor: make llGiveInventory() use existing GetInventoryItem() method rather than iterate through TaskInventory itself. 2012-07-04 20:57:48 +01:00
Justin Clark-Casey (justincc)
5691a8b860 refactor: rename Watchdog.WATCHDOG_TIMEOUT_MS to DEFAULT_WATCHDOG_TIMEOUT_MS to reflect what it actually is 2012-07-04 00:15:03 +01:00
Justin Clark-Casey (justincc)
f7b4802577 Correct spelling mistake m_BanedViewers to m_BannedViewers 2012-07-03 23:26:02 +01:00
Justin Clark-Casey (justincc)
8183c2926d minor: Add some method doc to HasGroupChanged and Schedule GroupForFull/PartUpdate() to indicate when region modules need to invoke them 2012-07-03 23:19:11 +01:00
Justin Clark-Casey (justincc)
3c9b9a848f Fix issue in database tests where sogs being stored are not in a scene.
This puts an extra m_part.ParentGroup.Scene == null check at the top of SceneObjectPartInventory.QueryScriptStates()
2012-07-03 22:58:58 +01:00
Michelle Argus
3399596e0e Adds a list of viewers that are allowed or banned from the region.
Signed-off-by: Melanie <melanie@t-data.com>
2012-07-02 18:45:11 +01:00
Melanie
d32cf21576 Add preservation of running state of scripts when drag-copying. 2012-07-01 18:30:59 +01:00
Justin Clark-Casey (justincc)
1926de5a05 Remove some mono compiler warnings 2012-06-30 01:25:39 +01:00
Justin Clark-Casey (justincc)
a4551b027b Removing unused handling of incoming create object by userID and itemID only.
It appears this was never actually used since attachments were rezzed in other code.
This was never available on remote simulator comms, only local.
2012-06-30 01:14:49 +01:00
Justin Clark-Casey (justincc)
56c776066c Remove code listed for removal in 0.7.3 that handled script restart for incoming attachments from pre-fatpack regions (versions of OpenSimulator more than a year old) 2012-06-30 01:06:37 +01:00
Justin Clark-Casey (justincc)
0229e90dcc Move update of the final optional ODE total frame stat inside the OdeLock rather than outside to avoid a very occasional race condition with the stat collection thread 2012-06-29 01:02:35 +01:00
Justin Clark-Casey (justincc)
e420f815dc refactor: rename _collisionEventPrim to m_collisionEventActors and _collisionEventPrimChanges to m_collisionEventActorsChanges to reflect their actual contents.
These dictionaries handle all actor types, not just physical prims.
2012-06-29 00:54:40 +01:00
Justin Clark-Casey (justincc)
1a7be7b00e Fix a regression where we stopped removing avatars from collision event reporting on logout, rather than stopping clearing their collision events.
This occurred in b18c8c8 (Thu May 17 2012).
This was a cause of very occasional race conditions and likely memory leakage as clients came and went from the region.
2012-06-29 00:36:50 +01:00
Justin Clark-Casey (justincc)
0f6b7b6a41 If a link points to a non-existing item in FetchInventory caps, then don't try to add it to the return data rather than suffering an exception later on 2012-06-29 00:11:44 +01:00
Justin Clark-Casey (justincc)
f202c36106 Add IScene.Name for code clarity to replace the RegionInfo.RegionName used in many, many log messages. 2012-06-29 00:03:22 +01:00
Justin Clark-Casey (justincc)
bfa6896678 Change AttachmentsModule.DetachSingleAttachmentToInv() to accept a SOG directly instead of an item ID to then shuffle through attachments, saving CPU busywork.
Almost all callers already had the sog to hand.
Still checking that it's really an attachment, but now by inspecting SOG.AttachedAvatar
2012-06-28 23:31:23 +01:00
Justin Clark-Casey (justincc)
571fd966cb Rather than iterating through all SOGs in the scene looking for the one that matches out fromItemID on detach, go through the agent's attachment sog list instead. 2012-06-28 23:01:12 +01:00
Justin Clark-Casey (justincc)
f263d6a910 Remove code that tried to delete an attachment back to inventory if RezSingleAttachmentFromInventoryInternal() returned null.
null would only ever be returned if the item couldn't be located within inventory and this would happen immediately.
In this case, derezzing wouldn't work anyway since there is no item to derez.
2012-06-28 22:48:49 +01:00
Justin Clark-Casey (justincc)
972b0b52f9 If rest of first line after colon is blank then still warn about running in XEngine if engine specified does not exist.
This is to take account of situations where the user was intending to specify a script engine using colon using its default language.
This probably generates few false positive as scripts are less likely to end a first line colon with a comment for other purposes.
2012-06-28 21:30:36 +01:00
Justin Clark-Casey (justincc)
25baa2d894 Avoid reporting false positives when a colon is in a comment in the first line of a script where the user was not trying to select a different script engine.
This works by only posting the "Selected engine unavailable" message if we're falling back on XEngine and the language is one handled by XEngine.
In cases where the language is not handled or not allowed, the user will still be notified by the later compiler error.
This avoids the overwhelming majority of false positives where the first line contains a : for other reasons (e.g. source control systems, vim settings, etc.)
Ultimately, I think it would be better to detect script language/engine with a mechanism that didn't just rely on : detection (e.g like #! in unix scripts).
2012-06-28 01:01:18 +01:00
Justin Clark-Casey (justincc)
f9769a9fcb minor: reuse colon index calculation in XEngine.OnRezScript. The index if a colon is found on the first line will always be the same as for the whole script. 2012-06-28 00:37:23 +01:00
Justin Clark-Casey (justincc)
bb48060b44 Fix issue in InventoryArchiveTestCase where it didn't call down to OpenSimTestCase.SetUp() 2012-06-27 00:50:36 +01:00
Justin Clark-Casey (justincc)
d043213317 refactor: Move ScenePresence <-> AgentData attachments copying code into AttachmentsModule. 2012-06-27 00:41:46 +01:00
Justin Clark-Casey (justincc)
5bec5bcf71 Automatically disable log4net before each regression test so that logging is confined to a single test if it's turned on.
This involves making test classes inherit from a common OpenSimTestCase.
This will be applied to more classes as required.
2012-06-27 00:01:51 +01:00
Justin Clark-Casey (justincc)
87ca820f9b Replace "kill uuid" console command with the more consistent "delete object uuid", which was present in the last opensim release. 2012-06-26 23:28:48 +01:00
Justin Clark-Casey (justincc)
0b29877790 Fix output for help on some object region console commands 2012-06-26 23:15:15 +01:00
Justin Clark-Casey (justincc)
97437feb06 Show region positions in "show regions" robust console command 2012-06-26 23:05:10 +01:00
Justin Clark-Casey (justincc)
2524517986 minor: correct GridService "show regions" cibsike cinnabd usage statement 2012-06-26 22:54:41 +01:00
Justin Clark-Casey (justincc)
99954c1498 refactor: Remove unnecessary AttachmentModuleTests.m_userId in favour of local variables 2012-06-26 22:53:08 +01:00
Justin Clark-Casey (justincc)
2b82c421ad refactor: Use local attachment module variables instead of global m_attMod.
This also avoids confusion between tests where one sets up m_attMod and another accidentally uses it after failing to set one up itself.
2012-06-26 22:31:25 +01:00
Justin Clark-Casey (justincc)
4329cc7b8a refactor: make m_presence a local variable in all AttachmentsModuleTests since it doesn't need to be global and some tests set up more than one sp 2012-06-26 22:21:54 +01:00
Justin Clark-Casey (justincc)
32a4ce94f0 Add regression test to check that attachments in source region are deleting when an agent teleports to a neighbouring region 2012-06-26 22:16:44 +01:00
Justin Clark-Casey (justincc)
340005c5bf Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-26 22:12:39 +01:00
Justin Clark-Casey (justincc)
4b6c3fd4bb If crossing attachments into another region pre-fatpack, clone objects before changing properties to avoid hud display race condition with update threads.
This matches behaviour in fatpack crossing, where attachments are cloned before their properties are changed.
This only applies to crossings to simulators running code released before April 2011.
2012-06-26 21:06:47 +01:00
BlueWall
988112d446 Add stub for llCastRay 2012-06-26 15:15:25 -04:00
Justin Clark-Casey (justincc)
1f22b29ca3 Add much easier ConsoleDisplayTable AddColumn() and AddRow() methods.
Use these for new "show regions" command rather than old cumbersome stuff.
2012-06-26 00:40:46 +01:00
Justin Clark-Casey (justincc)
5292b8b8be Add "show regions" console command to ROBUST to show all regions currently registered.
Command is not added in standalone, which has its own version of "show regions" that can also show estate name
2012-06-26 00:34:37 +01:00
Justin Clark-Casey (justincc)
854f2a913c Add "show region at" command to grid service to get the details of a region at a specific location. "show region" command becomes "show region name" to disambiguate
This is the same format as used by "show object name", etc.
"deregister region" also becomes "deregister region id"
2012-06-25 23:55:14 +01:00
Justin Clark-Casey (justincc)
f5316984ab minor: update currently commented out log message at top of AvatarFactoryModule.SetAppearance() for future use 2012-06-25 23:31:22 +01:00
Justin Clark-Casey (justincc)
e5b739aaeb When attachments are being saved and deleted for a closing root agent, delete first to avoid a hud race condition with update threads.
If delete doesn't occur first then the update thread can outrace the IsAttachment = false necessary to save attachments and send hud artifacts to other viewers.
2012-06-25 22:48:13 +01:00
Justin Clark-Casey (justincc)
5301648cff In AttachmentsModule.DetachSingleAttachmentToInvInternal(), remove attachment before changing properties for correct inventory serialization.
Serialization of attachments requires IsAttachment = false so that correct positions are serialized instead of avatar position.
However, doing this when a hud is still attached allows race conditions with update threads, resulting in hud artifacts on other viewers.
This change sets SOG.IsDeleted before serialization changes take place (IsDeleted itself is not a serialized property).
LLClientView then screens out any deleted SOGs before sending updates to viewers.
2012-06-25 21:08:19 +01:00
BlueWall
6d3ee8bb39 Fix script "Running" behavior
Unchecking "Running" box in script editor now persists. This fixes http://opensimulator.org/mantis/view.php?id=6057
2012-06-23 04:15:14 -04:00
Justin Clark-Casey (justincc)
78143769bf Resolve various race conditions between accessing and removing external script URLs by more consistently locking on m_UrlMap 2012-06-22 23:49:52 +01:00
Justin Clark-Casey (justincc)
dca04c7b61 Avoid a race condition where an incoming request to a script external URL can trigger an exception is the URL was being removed at the same time.
This involves three steps
1) Return gracefully in UrlModule.HttpRequestHandler() instead of throwing an exception when the url cannot be found in its index
2) Return true instead of false in HasEvents() if no matching request is found in the map.  This call will only happen in the first place for raced requests.
3) Return a 404 in GetEvents() if the request is not in the index, rather than a blank 200 OK.

Many thanks to Tom Haines in http://opensimulator.org/mantis/view.php?id=6051 for doing some of the work on this.
2012-06-22 23:16:18 +01:00
Justin Clark-Casey (justincc)
80a41e670d Avoid race condition between m_PrimObjects iteration in XEngine.PostObjectEvent and places where the list is modified by extending the m_PrimObjects lock. 2012-06-22 02:23:25 +01:00
Justin Clark-Casey (justincc)
9f3feeff8d If starting scripts on initial sim start, provide INFO level log feedback each time 50 scripts have been started.
This is to provide an indication of what's happening now that the default isn't to report every single script start.
Changes XEngine logging level in OpenSim.exe.config from WARN to INFO.
2012-06-22 02:10:27 +01:00
Justin Clark-Casey (justincc)
f907182ab2 Eliminate unnecessary extra call to TriggerEmptyScriptCompileQueue in XEngine.DoOnRezScriptQueue()
The later invocation of this function will happen on an empty compile queue.
2012-06-22 01:57:14 +01:00
Justin Clark-Casey (justincc)
4cf49369b5 Stop flicking IsAttachment false and then true in AttachmentsModule.UpdateAttachmentPosition() in order to avoid a hud update race condition.
Previously, setting IsAttachment to false then true was necessary to serialize the updated attachment object information.
However, UpdateAttachmentPosition no longer does this update.
Whilst IsAttachment is set to false there is a race condition where the update thread can wrongly send hud object updates to clients that do not own the hud, resulting in screen artifacts.
2012-06-22 01:43:26 +01:00
Justin Clark-Casey (justincc)
fda39c11bf Fix bug where attachments would not retain position if just rotated and not moved.
This was because we were not setting AttachedPos in SOG.UpdateGroupPositionPR, unlike UpdateGroupPosition
2012-06-22 01:33:27 +01:00
Justin Clark-Casey (justincc)
798846c5b6 refactor AttachmentsModule tests to use a common method for standard attachment item setup 2012-06-22 00:40:04 +01:00
Justin Clark-Casey (justincc)
06617ffd06 Add regression test for updating attachment position 2012-06-22 00:18:30 +01:00
Justin Clark-Casey (justincc)
d24122b706 Add item id, name, prim name and id to log message when state exists but loading fails.
Drop logging about memory limit exceeded to warn from error
2012-06-21 02:24:44 +01:00
Justin Clark-Casey (justincc)
afcabf5244 Retrigger build - last jenkins run was glitched 2012-06-21 02:13:03 +01:00
Justin Clark-Casey (justincc)
5709bed548 Add state file location to errors logged when there's some issue with retrieving state (e.g. exceeds memory limit) 2012-06-21 02:09:14 +01:00
Justin Clark-Casey (justincc)
68ea096f1b Use HasPrivateAttachmentPoint properties in SOG.DeleteGroupFromScene() instead of magic numbers 2012-06-20 23:25:07 +01:00
Justin Clark-Casey (justincc)
714db90832 refactor: use SOG.HasPrivateAttachmentPoint in SOP.SendTerseUpdateToClient() instead of attachmentpoint magic numbers. 2012-06-20 22:46:01 +01:00
Justin Clark-Casey (justincc)
b23425c7c4 As with LLSDInventoryItem from commit 01a2b0b, send type values in LLSDInventoryFolder for inventory CAPs as integers rather than strings.
Should also resolve some issues with exceptions being thrown in some inventory fetches.
2012-06-20 02:28:00 +01:00
Justin Clark-Casey (justincc)
9ec9dafae6 Lower warn logging on not having friends/group module on permissions to debug.
It's a valid configuration not to have these modules, but I think it's still worth logging the fact that certain permissions won't work (always return true)
2012-06-20 01:33:25 +01:00
Justin Clark-Casey (justincc)
6c312bce7f minor: Lower flotsam asset cache warning about not having a FlotsamCache.ini to debug
It's perfectly okay not to have this section.
2012-06-20 01:30:20 +01:00
Justin Clark-Casey (justincc)
7b6c0232a5 Change default logging level for XEngine to WARN instead of DEBUG.
This is to reduce log spam from script loading, which is especially spammy for avatar movements with scripted attachments.
All important messages are at warn or above.
If you still want/need to see these messages, set <level value="DEBUG"/> in the <logger name="OpenSim.Region.ScriptEngine.XEngine"> section of OpenSim.exe.config.
This affects no other package logs, which still output at the root configured level (currently DEBUG by default).
2012-06-20 01:10:18 +01:00
Justin Clark-Casey (justincc)
4cfaa01c0a Remove STARTUP COMPLETE message from the startuplogo.txt file and into main logging 2012-06-20 01:06:55 +01:00
Justin Clark-Casey (justincc)
6b3f9fcde0 Comment out the neighbour and land in connectors from info logging that they are starting up 2012-06-20 00:42:54 +01:00
Justin Clark-Casey (justincc)
625e5e913a Comment out recently added log message detailing number of scripts started when compile queue empties for now 2012-06-20 00:25:18 +01:00
Justin Clark-Casey (justincc)
881e92a726 Raise some IO associated Exception logging in XEngine to error level, in line with other similar cases.
Remove more unnecessary Close() calls - these are being triggered by the Dispose() called when exiting the using statement for these sdk io objects.
2012-06-20 00:19:50 +01:00
Justin Clark-Casey (justincc)
0fa303b1cf Log how many scripts are candidates for starting and how many are actually started.
Adds DebugLevel infrastructure to XEngine though currently commented out and unused.
2012-06-20 00:10:19 +01:00
Justin Clark-Casey (justincc)
9737e6d52e If RegionReady is active, don't falsely say that logins are enabled in the main scene loop before RegionReady is signalled when initial script compilation finishes.
Also raises this logging level to Info from Debug since this information is of high importance.  This matches the behaviour of the RegionReady module
2012-06-20 00:07:03 +01:00
Justin Clark-Casey (justincc)
e23d7ff9c0 minor: If logging because mesh/sculpt data isn't present for an object, log object UUID rather than local id, since UUID doesn't potentially vary between simulator starts. 2012-06-20 00:05:48 +01:00
Justin Clark-Casey (justincc)
ef686ead37 Like the assembly and text files, only write the c#-lsl linemap in XEngine.SetXMLState() if the trust binaries flag is set.
This doesn't affect other locations where the map is written, such as on script compilation.
2012-06-19 02:11:46 +01:00
Justin Clark-Casey (justincc)
bc06f3dcaf Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-19 01:55:31 +01:00
Justin Clark-Casey (justincc)
8e7032ece8 minor: Add a little more detail to IOException logging in XEngine.SetXMLState()
Also removes superflous Close() commands for statements taking place within using() constructs
Also adds some comment out debug log messages for future use.
2012-06-19 01:53:50 +01:00
BlueWall
5c5b359bcb Oops! putting back the entry for map urls 2012-06-16 07:26:16 -04:00
BlueWall
fc1522ab60 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-16 06:29:49 -04:00
BlueWall
2ed768cbf5 Adjust Robust*.ini.examples V3 webprofile entries 2012-06-16 06:29:15 -04:00
Justin Clark-Casey (justincc)
7119de56ff Change read config paramter from max_urls_per_simulator to max_external_urls_per_simulator, which is what it was meant to be 2012-06-16 04:12:53 +01:00
Justin Clark-Casey (justincc)
ed513fc7be Fix bug introduced in commit c6e3752 (13 Jun 2012) where poll responses would always return OK even if some other status code had been set 2012-06-16 03:43:45 +01:00
Justin Clark-Casey (justincc)
22f25dfcab Implement max_external_urls_per_simulator setting in [LL-Functions] to allow configuration of how many urls can be set up by llRequestURL()
Defaults remains as 100.
This setting is per simulator instead of per region due to how the url script module is structured.
2012-06-16 03:32:47 +01:00
Justin Clark-Casey (justincc)
aaa30dcebc Add region name to UseCircuitCode log messages 2012-06-15 05:01:36 +01:00
Justin Clark-Casey (justincc)
c935f03467 Put all debug console commands into a single Debug section rather than scattering them over other categories 2012-06-15 03:32:43 +01:00
Justin Clark-Casey (justincc)
94517c8d5c Make the "debug http" command available for robust as well as the simulator. This allows one to see incoming requests as they happen.
This required making everything use the common MainServer class for registering and retrieving http servers, rather than duplicate structures.
2012-06-15 02:51:52 +01:00
Justin Clark-Casey (justincc)
257b1b517d Add main instance to internal MainServer.m_Servers list to simplify internal logic.
This does require the server to be added before it is set as the main Instance
2012-06-15 02:03:50 +01:00
Justin Clark-Casey (justincc)
aeed4d3041 minor: Tell user the current debug http level if "debug http" console command is executed without a level parameter 2012-06-15 01:27:29 +01:00
Justin Clark-Casey (justincc)
478acfff34 When setting debug http level, do this for all known http servers, not just the main instance. 2012-06-15 01:24:36 +01:00
Justin Clark-Casey (justincc)
10e87f9cdc Make XMLRPCModule use an existing HTTP server if one already exists on the desired port. 2012-06-15 00:59:53 +01:00
Justin Clark-Casey (justincc)
6993a26ba5 Get rid of some unnecessary null checks in RegionApplicationBase.StartupSpecific() - a constructor can never return null.
Also adds some method doc to MainServer
2012-06-15 00:40:12 +01:00
Justin Clark-Casey (justincc)
93ba0332c4 minor: Extend 'debug http' usage statement to 0..3 from 0..2 2012-06-14 23:54:12 +01:00
Justin Clark-Casey (justincc)
9825861f4a Shuffle "debug http" levels so that 1 and 2 now cause different levels of warn to be logged if we receive invalid xml for xmlrpc. 2012-06-14 23:46:09 +01:00
Justin Clark-Casey (justincc)
f4b02f8e39 Fix a regression in BaseHttpServer.HandleXmlRpcRequests() from recent c6e3752
Accidentally make responseString null by default instead of String.Empty.
It needs to be something in case the XmlRpcRequest deserialize throws an exception due to bad xml (a failure which we silently swallow!)
2012-06-14 04:29:15 +01:00
Justin Clark-Casey (justincc)
2c6555021f Fix very recent regression in 917d753 where I put the ++updatesThisCall outside the batching part of ProcessEntityUpdates()
This stopped any batching happening and since this method is called periodically updates were sent very slowly
2012-06-14 03:49:54 +01:00
Justin Clark-Casey (justincc)
3888b9a670 If we're going to discard a terse update block because it's now someone else's hud, then don't still add it to the list of blocks for the update message. 2012-06-14 03:32:44 +01:00
Justin Clark-Casey (justincc)
1aa7469253 correct wrong incomplete comment from previous commit 3c3ea19 in AttachmentsModule 2012-06-14 02:30:40 +01:00
Justin Clark-Casey (justincc)
3c3ea19620 Fix a bug where scene objects attached as HUDs through scripts would not disappear for other avatars.
We do this by sending a kill message for that object to all other avatars apart from the one that has the hud.
2012-06-14 02:26:38 +01:00
Justin Clark-Casey (justincc)
0d2243a393 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-14 01:38:41 +01:00
Justin Clark-Casey (justincc)
917d753f1c Fix a race condition where an object update for a hud could be sent to non-owner avatars if the hud was attached directly from within the region.
If this happens, then the non-owners would see unremovable huds that they did not own until relog, and sometimes even beyond that.
This was due to a race between the entity update and the attachment code when moving an object from within scene to a hud.
2012-06-14 01:36:37 +01:00
Justin Clark-Casey (justincc)
a4290048e5 Add SOG.HasPrivateAttachmentPoint to tell if a SOG has a private attachment point. HUDs attachment points are private.
Change SOP.SendFullUpdateToClient() and SoundModule.PlayAttachedSound() to use this rather than different magic number formulations.
This also corrects a bug in PlayAttachedSound() where the code assumed that all attachment points over 30 were HUDs.
It appears this is no longer true with Neck and Root (Avatar Center)
2012-06-14 01:20:55 +01:00
Melanie
cba8b4f8b8 Fix not sending TransferInfo when an asset is not found. This clogs
up the sound pipeline in the viewer.
2012-06-14 00:58:17 +01:00
Justin Clark-Casey (justincc)
6a77a65675 minor: remove unnecessary IsAttachment = false setting for new object in UploadObjectAssetModule, property always starts as false 2012-06-14 00:35:26 +01:00
Justin Clark-Casey (justincc)
16ffc764bf minor: refactor part of LLClientView.ProcessEntityUpdates() to remove duplicate code 2012-06-13 23:54:32 +01:00
Justin Clark-Casey (justincc)
cf080a68d6 Remove long obsolete and unused IClientAPI.KillEndDone() 2012-06-13 23:42:22 +01:00
Justin Clark-Casey (justincc)
f726150afd Add ObjectUpdate as one of the packets that can be screened out when setting debug packet level 2012-06-13 23:39:23 +01:00
Justin Clark-Casey (justincc)
1f34c8277d In the osGetGrid functions, if the [GridInfo] section does not exist then return "Configuration Error", as already happens if there is no GridInfoURI 2012-06-13 04:05:02 +01:00
Justin Clark-Casey (justincc)
66cb533f26 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-13 03:51:13 +01:00
Justin Clark-Casey (justincc)
5145356467 Add "deregister region" by uuid command to grid service to allow manual deregistration of simulators.
Useful if a simulator has crashed without removing its regions and those regions have been reconfigured differently
2012-06-13 03:49:22 +01:00
Melanie
77f579dcc8 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-06-13 02:34:25 +01:00
BlueWall
7c0843aad1 Add the updated OpenSimDefaults.ini for the prior timer_Interval patch. 2012-06-12 21:55:31 -04:00
Melanie
4e18e71089 Committing the Avination implementation of llCastRay. This is a complete rewrite
wich does it's thing independently of physics. Enjoy!
2012-06-13 02:32:25 +01:00
Justin Clark-Casey (justincc)
94bbbf96c7 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-13 02:25:42 +01:00
Justin Clark-Casey (justincc)
c6e375291a Don't include time to transmit response back to requester when assessing slow handling of requests.
This is to avoid logging a 'slow' request when the source of delay is the viewer in processing a response.
This is not something we can do much about on the server end - it's server-side delay that we're interested in.
To ensure consistency, this commit also had to refactor and simplify inbound non-poll network request handling, though there should be no functional change.
IOSHttpResponse no longer exposes the Send() method, only classes in OpenSim.Framework.Servers.HttpServer should be doing this.
Only the GetTextureHandler was sending its own response.  Now it leaves this to BaseHttpServer, like all other core handlers.
2012-06-13 00:03:44 +01:00
BlueWall
c53c55fed0 Add variable timer configureation for the timer_Script
Added "timer_Interval" to the OpenSimDefaults.ini, leaving the default value set to 1200, as the previous default setting. The value represents seconds. To change the default, copy the entry to OpenSim.ini and multiply the number of minutes for the interval by 60.
2012-06-12 17:15:56 -04:00
Justin Clark-Casey (justincc)
2ca31a9841 Remove accidental timeout left in during earlier debugging. Has been in since two commits ago (b099f26) 2012-06-12 02:46:14 +01:00
Justin Clark-Casey (justincc)
1b1f0a2d77 OnConnectionClosed listeners, retrieve data from IClientAPI.SceneAgent rather than scanning all scene for the presence with the right id
Stop checking IsLoggingOut on these listeners, if called with a root agent then we always want to perform these actions.
This covers cases where the client is closed due to manual kick, simulator shutdown, etc.
2012-06-12 02:43:33 +01:00
Justin Clark-Casey (justincc)
b099f26376 Set IClientAPI.IsActive = false early on client removal due to ack timeout rather than using IsLoggingOut flag.
IsActive is more appropriate since unack timeout is not due to voluntary logout.
This is in line with operations such as manual kick that do not set the IsLoggingOut flag.
It's also slightly better race-wise since it reduces the chance of this operation clashing with another reason for client deactivation (e.g. manual kick).
2012-06-12 02:16:36 +01:00
Justin Clark-Casey (justincc)
c89db34fc4 If the simulator closes a root agent due to ack timeout, then send the client a kick message with that reason, in case it is somehow still listening. 2012-06-12 02:03:31 +01:00
Justin Clark-Casey (justincc)
8c7149063b In PresenceDetector.OnConnectionClose(), use the IsChildAgent check already available on IClientAPI.SceneAgent rather than retrieving it again by scanning all scenes. 2012-06-12 01:25:09 +01:00
Justin Clark-Casey (justincc)
bab7dab4c5 Comment out the scene presence sitting debug log messages for now 2012-06-11 23:37:16 +01:00
Justin Clark-Casey (justincc)
51fe97a00c Set CreateDefaultAvatarEntries = true in Robust.HG.ini.example to match Robust.HG.ini
Thanks to Ai Austin for the spot.
2012-06-11 23:33:32 +01:00
Justin Clark-Casey (justincc)
daad0a3e11 Revert "Bind ~ and ! operators in LSL tighter in order to resolve issues in LSL where these aren't evaluated propertly."
This reverts commit a8a9d13dc0.

Accidentally committed, this patch might not be the correct approach.
2012-06-11 23:30:58 +01:00
Justin Clark-Casey (justincc)
a927787434 Add last frame time monitor to MonitorModule now that this value is useful 2012-06-11 23:30:11 +01:00
Justin Clark-Casey (justincc)
cbb5ddd944 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-11 23:27:48 +01:00
Melanie
71ba85137f Commitig the Avination implementation of llTeleportAgent and
llTeleportAgentGlobalCoords. These do NOT use PERMISSION_TELEPORT like
their SL counterparts because that permission is not yet understood by TPVs
based on v1.x.
2012-06-11 16:45:52 +01:00
Justin Clark-Casey (justincc)
a8a9d13dc0 Bind ~ and ! operators in LSL tighter in order to resolve issues in LSL where these aren't evaluated propertly.
Addresses http://opensimulator.org/mantis/view.php?id=3268
2012-06-09 05:11:08 +01:00
Justin Clark-Casey (justincc)
1f3218e53f Create avatar entries necessary to stop new v3 avatars being clouds (pants, shape, etc.) by default in grid mode.
This only affects avatars created through the "create user" console command or createuser XMLRPC.
This matches the default setting for standalone
2012-06-09 01:11:15 +01:00
Justin Clark-Casey (justincc)
08cd5d2503 Add documentation to AllowGodFunctions setting in [LL-Functions] 2012-06-09 00:33:17 +01:00
Justin Clark-Casey (justincc)
817f2d341d Fix regression in 5f4f9f0 (Fri Jun 8 2012) which stopped "show stats" and json stats from working 2012-06-08 23:36:53 +01:00
Justin Clark-Casey (justincc)
794d184c25 Stop sending a DisableSimulator packet in LLClientView.Close(), which is a duplicate for child agents and unnecessary for root agents.
Close() already calls Scene.RemoveClient() which sends the right eq or udp DisableSimulator message to child agents.
2012-06-08 04:32:51 +01:00
Justin Clark-Casey (justincc)
f94b92df46 Instead of retrieving the known client again in LLUDPServer.RemoveClient(), check the IsLoggingOut flag instead.
This is slightly better thread-race wise
2012-06-08 04:12:22 +01:00
Justin Clark-Casey (justincc)
c215b1ad16 If logging a client out due to ack timeout, do this asynchronously rather than synchronously on the outgoing packet loop.
This is the same async behaviour as normal logouts.
This is necessary because the event queue will sleep the thread for 5 seconds on an ack timeout logout as the client isn't around to pick up the final event queue messages.
2012-06-08 03:53:03 +01:00
Justin Clark-Casey (justincc)
5f4f9f0230 Add regression test for client logout due to ack timeout. 2012-06-08 03:12:23 +01:00
Justin Clark-Casey (justincc)
d73805d7f4 Remove null checks at top of LLUDPServer.ProcessInPacket(). Neither packet nor client are ever null. 2012-06-08 01:51:28 +01:00
Justin Clark-Casey (justincc)
d71c6dea7e Store already retrieve IClientAPI in IncomingPacket structure for later use rather than doing another retrieve on dequeue.
Instead of checking whether the client still exists by trying to retrieve again from the client manager, this patch gets it back from IncomingPacket and checks the IClientAPI.IsActive state.
2012-06-08 01:43:58 +01:00
Justin Clark-Casey (justincc)
30f4a33f01 Don't make duplicate call to ScenePresence.Close() separately in ETM.DoTeleport() if an agent needs closing.
This is always done as part of Scene.RemoveClient()
Also refactors try/catching in Scene.RemoveClient() to log NREs instead of silently discarding, since these are useful symptoms of problems.
2012-06-08 01:26:43 +01:00
Justin Clark-Casey (justincc)
5c162ccd57 Go back to calling IncomingCloseAgent() in the "kick user" command for consistency instead of IClientAPI.Close() directly.
This no longer double counts child agent removals
2012-06-08 00:59:39 +01:00
Justin Clark-Casey (justincc)
d547bcf8d1 Remove duplicate update of user count in Scene.IncomingCloseAgent()
This is already done in Scene.RemoveClient() which IncomingCloseAgent() always ends up calling.
2012-06-08 00:40:38 +01:00
Justin Clark-Casey (justincc)
af2954898e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-08 00:24:39 +01:00
Justin Clark-Casey (justincc)
b56673c920 Fix bug with "kick user" reducing agent counts by 2 instead of 1.
This is done by making the kick user command call IClientAPI.Close() rather than routing through Scene.IncomingCloseAgent(), which also called IClientAPI.Close()
DisableSimulator for child agents is moved from IncomingCloseAgent() to RemoveClient(), this is not a functional change since IncomingCloseAgent() always ends up calling RemoveClient()
2012-06-08 00:18:25 +01:00
Justin Clark-Casey (justincc)
0c5fefacb4 Record the fact that child agents can have asset transactions.
Also change code to grab the agent asset transaction module once.
2012-06-07 23:51:04 +01:00
Justin Clark-Casey (justincc)
de87e4871b Don't send kill object messages to clients when a child agent is closed. 2012-06-07 23:35:21 +01:00
Melanie
39cb2063bf Add collision sounds to the asset set 2012-06-07 23:35:08 +01:00
Talun
d5cc959683 Mantis 6044 Building master currently fails.
Add missing reference to System.Core

Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-06-07 11:16:18 -04:00
BlueWall
a1e857932a Make change to fix Windows builds 2012-06-07 10:17:37 -04:00
Justin Clark-Casey (justincc)
7550b97e65 Log warning if we try to remove a UDP client that has already been removed. 2012-06-07 04:00:29 +01:00
Justin Clark-Casey (justincc)
98b46d48fe Allow the thread watchdog to accept an alarm method that is invoked if the timeout is breached.
This alarm can then invoke this to log extra information.
This is used in LLUDPServer to show which client was being processed when incoming and outgoing udp watchdog alarms are triggered.
2012-06-07 02:44:13 +01:00
Justin Clark-Casey (justincc)
514dd85199 minor: Change log messages on Warp3DImageModule to show they are from this module 2012-06-06 04:18:38 +01:00
Justin Clark-Casey (justincc)
53c25a4778 Rename MapImageModule for Warp3D to Warp3DImageModule to match its class name and make it easier to distinguish between map image modules. 2012-06-06 04:15:00 +01:00
Justin Clark-Casey (justincc)
2b0de66216 Actively dispose of Bitmaps in Warp3D image module and world map module once we've finished with them.
This might help with memory leakage issues though I suspect it won't.
2012-06-06 04:11:16 +01:00
SignpostMarv
3b25021180 enabling all corners of a sim to be set in one call 2012-06-06 02:47:47 +01:00
Justin Clark-Casey (justincc)
abf94627f6 Ensure closure of bitmap and memory stream with using() statements in WorldViewModule.
If this has any effect then it will only be to the map images returned via requests to the /worldview simulator HTTP path (not enabled by default)
2012-06-06 02:45:36 +01:00
Justin Clark-Casey (justincc)
6adc810eaa Stop accidentally reading 4 Int16s instead of 2 in SIZE section of Terragen file when loaded from a stream.
Fixes a bug introduced 2 weeks ago in 67ebe80
Thanks to Plugh for pointing this out.
2012-06-05 19:40:16 +01:00
Justin Clark-Casey (justincc)
a5410c2c19 minor: Add user feedback when executing fix-phantoms 2012-06-05 01:37:40 +01:00
Justin Clark-Casey (justincc)
42179578fc Allow fix-phantoms command to appear even if CombineContiguousRegions = false, since this allows one to go back from a megaregion to normal regions.
Adapted from a patch by Garmin Kawaguichi in http://opensimulator.org/mantis/view.php?id=6027
Garmin says that fix-phantoms allows one to reset objects when going back from megaregion to normal regions as well as the othe rway around.
Thanks!
2012-06-05 01:33:58 +01:00
Talun
008c6a4610 Mantis 4597 AgentPaused packet is ignored.
The packet was actually being handled but not acted on.
This change extends the default timeout for paused clients to 5 minutes
and makes both the paused and non-paused timeout periods configurable.
2012-06-05 01:22:05 +01:00
Justin Clark-Casey (justincc)
01280e9b94 Remove unused ScenePresence list structure in llGetAgentList() 2012-06-05 00:34:18 +01:00
Justin Clark-Casey (justincc)
96d1ba90d7 Scale down per frame MS stats to match scaled simulator FPS stat.
This makes frame time stats properly tally with fps, which saves confusion and makes it easier to interpret numbers.
In some ways this is not so artifical - physics FPS runs at the higher rate.
2012-06-05 00:27:51 +01:00
Justin Clark-Casey (justincc)
655625ab87 Start sending spare frame time MS viewer stat. Make frame time correctly display total frame time, not just non-spare time.
This makes it easier to see when components of frame time exceed normal permitted frame time.
Currently reflect scene frame times.
2012-06-05 00:17:55 +01:00
Justin Clark-Casey (justincc)
c3d9acc9a9 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-06-05 00:15:29 +01:00
Justin Clark-Casey (justincc)
a7f4804f53 Properly show per frame millisecond statistics per frame, not as amount of time taken per second.
This is to make these statistics actually match their names (and also be more accurate as number of frames can vary under heavy load)
Currently using scene frames (11.23 every second) instead of physics frames (56.18 per second)
2012-06-04 23:07:53 +01:00
BlueWall
3229e32b4e Add replaceable region modules to the "show modules" command 2012-06-04 17:25:38 -04:00
Melanie
9707a2d57c Remove profile from basic configuration 2012-06-04 18:24:02 +01:00
Melanie
d9d4fb10d9 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-06-04 18:22:43 +01:00
Robert Adams
f94ef37b46 Correct the delegate specification in EventManager.TriggerTerrainTainted. Looks like the wrong one was cut and pasted. 2012-06-04 10:26:39 -07:00
Melanie
5c646e2603 Remove the "Profile" config as it's covered by the replaceable interface 2012-06-04 18:22:09 +01:00
Justin Clark-Casey (justincc)
729d90173f Fix build break whree accidentally did inv.Folders rather than inv.Folders.Count in a minor change. 2012-06-02 05:03:56 +01:00
Justin Clark-Casey (justincc)
2de5479c3f minor: tidy up some comments 2012-06-02 05:01:56 +01:00
Justin Clark-Casey (justincc)
01a2b0b289 Fix various issues with http inventory
1) The return messages were being wrongly populated with the names of asset, inventory and sale types when their corresponding integers should have been used instead.
2) Folders with links were including the linked items in the descendents figure, when only the links should be included.
3) Links and linked items in link folders were not being included in the return data, and not in the correct order.

Now that these issues have been addressed, outfits and attachments appear to work consistently when HTTP inventory is enabled (as is now the default).
2012-06-02 04:57:10 +01:00
Justin Clark-Casey (justincc)
72219eae7d Instead of updating sim stats root agent, child, objects and scripts accounts every single scene frame, update in the once every 3 seconds SimStatsReporter run 2012-06-01 04:47:11 +01:00
Justin Clark-Casey (justincc)
6375db1533 Add optional total avatars, total prims and active prims stats to ODE plugin.
These will act as a sanity check with the main scene stats, to show that physics scene entities are being managed properly.
Total prims will not match scene total prims since physics total does not include phantom prims
2012-06-01 04:23:36 +01:00
Justin Clark-Casey (justincc)
4e06a46dc5 If OdeScene.Near() returns no collision contacts, then exit as early as possible. All subsequent code is only relevant if there are contacts. 2012-06-01 04:07:39 +01:00
Justin Clark-Casey (justincc)
200376b3c4 Add optional stat for the other collision time per frame not spent in ODE native spaces or geom collision code 2012-06-01 03:49:42 +01:00
Justin Clark-Casey (justincc)
d34b84b531 Add avatar forces calculation, prim force and raycasting per frame millisecond optional stats 2012-06-01 03:23:19 +01:00
Justin Clark-Casey (justincc)
9ff8efc720 Collection optional avatar and prim taint frame millisecond times 2012-06-01 03:03:48 +01:00
Justin Clark-Casey (justincc)
d1b5f8d9d7 Remove recent optional native collision frame milliseconds stat
Unnecessary since this has now been broken down into space collisions and geom collisions
2012-06-01 02:35:11 +01:00
Justin Clark-Casey (justincc)
31343aa7c3 Add optional stat that records milliseconds spent notifying collision listeners in physics frames 2012-06-01 02:33:44 +01:00
Justin Clark-Casey (justincc)
5f44be99ef Add avatar and prim update milliseconds per frame optional stats 2012-06-01 02:25:42 +01:00
Justin Clark-Casey (justincc)
5cc9b820e5 Add option native step frame ms stat 2012-06-01 01:58:28 +01:00
Justin Clark-Casey (justincc)
f2c8c7a7b8 Add total ODE frame time optional stat, as a sanity check on the main scene physics stat 2012-06-01 01:37:19 +01:00
Justin Clark-Casey (justincc)
8333b928fa Break down native ODE collision frame time stat into native space collision and geom collision stats 2012-06-01 01:27:19 +01:00
Justin Clark-Casey (justincc)
c33c8db825 Rename new collision stats to 'contacts' - there are/can be multiple contacts per collision and this is what is actually being measured. 2012-06-01 01:15:27 +01:00
Justin Clark-Casey (justincc)
e1f8d2adb0 Stop adding an unnecessary duplicate _perloopcontact if the avatar is standing on a prim.
This has already been added earlier on in the method.
2012-06-01 01:12:30 +01:00
Justin Clark-Casey (justincc)
8301f7b17f minor: comment out currently unused OdeScene.sCollisionData 2012-06-01 00:57:55 +01:00
Justin Clark-Casey (justincc)
93fa9e8991 Add ODE avatar and prim collision numbers if extra stats collection is enabled. 2012-06-01 00:56:13 +01:00
Justin Clark-Casey (justincc)
878b67b333 Fix OdeScene.GetTopColliders() to return the top 25 colliders rather than the first 25 that had non-zero collision scores.
Also zeros collisions scores on all prims after report collection, not just the top 25.
As before, this collision scores are only reset after a report is requested, which may give unrealistic numbers on the first request.
So to see more realistic scores, ignore the first report and then refresh the request after a couple of seconds or so.
2012-06-01 00:26:11 +01:00
Justin Clark-Casey (justincc)
0b02a4d42e Add an optional mechanism for physics modules to collect and return arbitrary stats.
If active, the physics module can return arbitrary stat counters that can be seen via the MonitoringModule
(http://opensimulator.org/wiki/Monitoring_Module)
This is only active in OdeScene if collect_stats = true in [ODEPhysicsSettings].
This patch allows OdeScene to collect elapsed time information for calls to the ODE native collision methods to assess what proportion of time this takes compared to total physics processing.
This data is returned as ODENativeCollisionFrameMS in the monitoring module, updated every 3 seconds.
The performance effect of collecting stats is probably extremely minor, dwarfed by the rest of the physics code.
2012-05-31 01:52:26 +01:00
Justin Clark-Casey (justincc)
bf0b8170f7 Add console command "teleport user" to allow teleport from the region console
See "help teleport user" on the console for more details
2012-05-29 23:35:20 +01:00
Melanie
b660c4991b Fix collision filtering. The filter should be checked on the receiving part! 2012-05-29 18:18:47 +01:00
Justin Clark-Casey (justincc)
79f3ce2e9f refactor: factor out entity transfer state machine into a separate class to make code more analyzable 2012-05-28 23:06:00 +01:00
Justin Clark-Casey (justincc)
8f87f55d05 If handling the failure of teleport, move agent state to CleaningUp when we start the handling.
Also fixes the log warning from ResetInTransit() if the state is cleared direct from Transferring or ReceiveAtDestination, as pointed out in mantis 5426
2012-05-28 22:16:06 +01:00
Justin Clark-Casey (justincc)
7fd38788b4 minor: code formatting from 0b72f773 2012-05-26 02:14:32 +01:00
Talun
0b72f773c7 Mantis 6025 llRequestPermissions auto grant for NPCs.
If the script requesting permissions is owned by either the NPC or
the NPCs owner (if the NPC is created as owned) then grant any
permissions automatically.
2012-05-26 02:09:22 +01:00
Justin Clark-Casey (justincc)
43a6f28620 If restating a region, clean up the physics scene after the main scene has been closed not before.
If this is done before then on ODE agent update calls still incoming can fail as they try to use a raycastmanager that has been disposed.
Bullet plugin does nothing on Dispose()
However, I wouldn't be at all surprised if individual region restarting was buggy in lots of other areas.
2012-05-26 01:55:35 +01:00
Justin Clark-Casey (justincc)
3ac3be99ae Add Blake/Techplex to CONTRIBUTORS. Thanks! 2012-05-26 01:35:33 +01:00
Blake.Bourque
33b66009e4 One can now get hyoergrid region co-ordinates with llRequestSimulatorData 2012-05-26 01:32:42 +01:00
Justin Clark-Casey (justincc)
d6476b6277 Use GetInventoryItem() in LSL_Api.InventoryKey(string name, int type).
Also removes small bug where calling this method would add 1 to LPS, evne though all callers already did this.
2012-05-26 01:03:53 +01:00
Justin Clark-Casey (justincc)
f2a5fad18f Use SceneObjectPartInventory.GetInventoryItem() in OSSL.AvatarStopAnimation instead of searching the task inventory manually. 2012-05-26 00:54:00 +01:00
Justin Clark-Casey (justincc)
ff53add54d refactor: replace LSL_Api.InventoryKey(string) largely with SceneObjectPartInventory.GetInventoryItem(string)
Also gets llStopAnimation() to call KeyOrName rather than duplicating logic.
2012-05-26 00:36:01 +01:00
Talun
120f8145fc Mantis 6028 osAvatarStopAnimation not stopping animations via UUID
Corrected to stop animations using the animation UUID similar to llStopAnimation.
See http://opensimulator.org/wiki/OsAvatarStopAnimation
2012-05-25 23:45:03 +01:00
Justin Clark-Casey (justincc)
67ebe80dd9 Resolve some mono compiler warnings. 2012-05-25 04:03:16 +01:00
Justin Clark-Casey (justincc)
ab59c0a658 on agent cross, remove from physics scene after its been placed in transit, not before. 2012-05-25 03:39:10 +01:00
Justin Clark-Casey (justincc)
888210ea4a refactor: make ETM.CrossAgentToNewRegionAsync neighbourRegion == null check return earlier to simplify method 2012-05-25 03:06:26 +01:00
Justin Clark-Casey (justincc)
9f1fc7ea88 Remove a call stack debugging line accidentally left in from a few days ago at SceneObjectPartInventory.ApplyNextOwnerPermissions(). 2012-05-25 02:54:37 +01:00
Justin Clark-Casey (justincc)
96cde407ab Fix bug where a failed QueryAccess to a remove region would always have the reason "Communications failure" no matter what the destination region actually returned 2012-05-25 02:37:22 +01:00
Justin Clark-Casey (justincc)
40c78b0624 Stop it being possible for an agent to teleport back to its source region before the source region has finished cleaning up old agent data and structures.
If this is allowed, then the client usually gets forcibly logged out and data structures might be put into bad states.
To prevent this, the binary state machine of EMT.m_agentsInTransit is replaced with a 4 state machine (Preparing, Transferring, ReceivedAtDestination, CleaningUp).
This is necessary because the source region needs to know when the destination region has received the user but a teleport back cannot happen until the source region has cleaned up.
Tested on standalone, grid and with v1 and v3 clients.
2012-05-25 02:02:53 +01:00
Justin Clark-Casey (justincc)
7cceab1295 In remote QueryAccess, also receive the actual status (true|false) instead of always true no matter what the callee actually returned.
This was due to two things
1) SimulationServiceConnector.QueryAccess was always looking to the outer result["success"].
But if a "_Result" map is returned (which is certainly the case right now), then the true success is _Result["success"], result["success"] is always true no matter what
2) If QueryAccess was false at the destination, then AgentHandlers.DoQueryAccess() was never putting this in the result.
The default action of SerializeJsonString() is not to put false booleans in the JSON!!!, so this has to be explicitly set.
2012-05-25 01:41:00 +01:00
Justin Clark-Casey (justincc)
93ff27053a Don't actually proceed on a within-region teleport if another is already taking place, rather than just (falsely) logging that we're not going to proceed.
An oversight from recent commit 9ab0c81
2012-05-24 22:59:52 +01:00
Justin Clark-Casey (justincc)
cc53d91d2f On inter-region teleport, only stand the avatar up if the QueryAccess call to the destination scene actually succeeds. 2012-05-24 22:46:45 +01:00
Justin Clark-Casey (justincc)
cd225215b1 Now that the EntityTransferModule is per-region, fetch the event queue module once rather than repeatedly via scene presences 2012-05-24 22:40:24 +01:00
Justin Clark-Casey (justincc)
5c9086ade6 Fix issue where a dns resolution failure on the final destination might leave the user unable to teleport since the transit flag was not being reset.
This moves the 'already in transit' check further up and resets the flag if dns resolution fails and in the new required places.
2012-05-24 22:26:02 +01:00
SignpostMarv
99cebec4ab adding status codes from rfc 6585
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-05-24 12:09:15 -04:00
SignpostMarv
87f9aa9d08 porting IDE tooltip-friendly documentation tweaks from Aurora-Sim
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-05-24 12:09:15 -04:00
Justin Clark-Casey (justincc)
f4cd4c8e28 Comment out accidentally left in log line that was printing out the control file on OAR save 2012-05-24 04:33:36 +01:00
Justin Clark-Casey (justincc)
38ce9d45a5 Make ISimulationScene.GetScene() used the more efficient region id for lookup rather than the region handle. 2012-05-24 01:00:18 +01:00
Justin Clark-Casey (justincc)
459c7635af If an agent is still registered as 'in transit' by the source region, don't allow an immediate teleport back.
This is to help relieve a race condition when an agent teleports then immediately attempts to teleport back before the source region has properly cleaned up/demoted the old ScenePresence.
This is rare in viewers but much more possible via scripting or region module.
However, more needs to be done since virtually all clean up happens after the transit flag is cleared .
Possibly need to add a 'cleaning up' state to in transit.
This change required making the EntityTransferModule and HGEntityTransferModule per-region rather than shared, in order to allow separate transit lists.
Changes were also required in LocalSimulationConnector.
Tested in standalone, grid and with local and remote region crossings with attachments.
2012-05-24 00:31:14 +01:00
PixelTomsen
bc543c1797 Environment Module - allows Environment settings for Viewer3 warning: includes database region store migrations for mssql, mysql, sqlite
enable/disable this module:
Cap_EnvironmentSettings = "localhost" (for enable)
Cap_EnvironmentSettings = "" (for disable) at ClientStack.LindenCaps section (OpenSimDefaults.ini file)
 or owerwrite in OpenSim.ini

mantis: http://opensimulator.org/mantis/view.php?id=5860

Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-05-23 17:04:19 -04:00
BlueWall
b490050165 Format cleanup 2012-05-23 16:58:04 -04:00
BlueWall
682d4075e3 Fix llGetSimulatorHostname to return configured hostname 2012-05-23 15:08:39 -04:00
Justin Clark-Casey (justincc)
4d1986c0e4 minor: Change [OBJECT COMMANDS MODULE] log strings to [REGION COMMANDS MODULE] strings, though all these are currently commented out anyway 2012-05-23 04:20:54 +01:00
Justin Clark-Casey (justincc)
ee98b9c394 Add "show scene" command which lists stats for the currently selected console scene(s)
This includes prim count, script count, avatar count, etc.
Information is currently the same as "show stats", though show stats can only show one scene at a time because it listens for the latest outgoing stats packet (a bad approach that needs to change).
Might be better to tie this module into the other stats module to display arbitrary stats rather than fetching directly from scene.SimStatsReporter.
Console command is "show scene" because "show region" already exists for the grid service, which is unfortunate.
Might need to make a distinction between "scene" relating to a live scene and "region" relating to more static region data (url, coords, etc.)
2012-05-23 04:10:45 +01:00
Justin Clark-Casey (justincc)
8f88c17df9 refactor: Rename ConsoleTableRow and ConsoleTableColumn to ConsoleDisplayTableRow and ConsoleDisplayTableColumn 2012-05-23 03:23:37 +01:00
Justin Clark-Casey (justincc)
059a1e90b9 Add ConsoleDisplayList for more consistent formatting of console output in list form.
Convert "show region" to use this structure rather than hand-constructing
2012-05-23 03:19:25 +01:00
Justin Clark-Casey (justincc)
2222d979cc refactor: rename ConsoleTable -> ConsoleDisplayTable for clarity 2012-05-23 02:37:38 +01:00
Justin Clark-Casey (justincc)
c6ce41bfba Add missing Y co-ord in "show region" console command information 2012-05-23 02:31:53 +01:00
Justin Clark-Casey (justincc)
050007b44d Lay out "show region" information in an easier to read line by line format 2012-05-23 02:30:16 +01:00
Justin Clark-Casey (justincc)
68918d632f Fetch the dialog module reference in AttachmentsModule in RegionLoaded() not AddRegion()
The reference is not guaranteed to be there when AddRegion() is called but will definitely be present at RegionLoaded() if it's going to be present at all.
2012-05-23 02:09:31 +01:00
Justin Clark-Casey (justincc)
ec8745cf51 minor: Make log class names in InventoryAccessModule uniform 2012-05-23 02:05:48 +01:00
Justin Clark-Casey (justincc)
ff429a259b Fix bug where an avatar that had an object they owned attached through llAttachToAvatar() or osForceAttachToAvatar() would wrongly have next permissions come into play when they detached that object and rezzed it in scene.
This is because the attachments module code was setting the 'object slam' bit by using PermissionMask.All
Solution here is to route the attachment item creation call through the existing inventory code in BasicInventoryAccessModule rather than copy/pasted code in AttachmentsModule itself.
2012-05-23 01:58:10 +01:00
Justin Clark-Casey (justincc)
9ab0c81c1d Setting 'in transit' on a local teleport as well as inter-region teleports.
This is to eliminate possible race conditions if two teleport calls are made concurrently, where at least one is a local teleport.
This is pretty much impossible on a manual user teleport but can happen on script-invoked teleports.
2012-05-21 21:33:59 +01:00
Justin Clark-Casey (justincc)
7e97f0e898 minor: extend commented out LinkInventoryItem log message for future use 2012-05-21 21:00:22 +01:00
Justin Clark-Casey (justincc)
16d303f7cd Fix bug where outfit folders could not be renamed.
Outfit folders are a type of system folder whose details are allowed to change.
2012-05-21 19:38:43 +01:00
Justin Clark-Casey (justincc)
0db60eea85 Improve locking of RegionCombinerModule.m_regions 2012-05-19 04:59:36 +01:00
Justin Clark-Casey (justincc)
5759313f7f Add size of region to OAR control file. Megaregions (sw root OARs when saved) will have a size larger than 256x256
Not yet read.  Do not rely on this information yet, it may change.
2012-05-19 04:56:47 +01:00
Justin Clark-Casey (justincc)
824a3a114b refactor: Add RegionConnection.PosX and PosY to return position in meters rather than copy/pasting the necessary calculations in lots of places. 2012-05-19 04:22:30 +01:00
Justin Clark-Casey (justincc)
fb8705dd4d refactor: Rename connection paramaters from "conn" and "regionConnections" so that it's easy to tell whether they refer to the root region connection or a new region connection 2012-05-19 04:01:05 +01:00
Justin Clark-Casey (justincc)
d7f90dee1c Correct some log messages in RegionCombinerModule about the position of the root region of a megaregion relative to an added region 2012-05-19 03:56:25 +01:00
Justin Clark-Casey (justincc)
4e5ac27928 Make the megaregion total area given to the physics module accurate instead of over-inflated.
This was previously over-inflated because adding a region to the NE of the root region resulted in double counting of regions already added.
An accurate extent will also be necessary for other purposes.
2012-05-19 03:45:58 +01:00
Justin Clark-Casey (justincc)
3f2a727b6d Remove recent IRegionCombinerModule.IsMegaregion(). In theory, there can be more than one megaregion in a simulator, separated by water.
Rename IsRootRegion() to IsRootForMegaregion()
2012-05-19 03:17:21 +01:00
Justin Clark-Casey (justincc)
26dfcf5395 Add some method doc to RegionCombinerModule. Clean up log messages. 2012-05-19 03:07:24 +01:00
Justin Clark-Casey (justincc)
33247c8d85 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-19 02:46:37 +01:00
Justin Clark-Casey (justincc)
2b60a5c5d6 Add is_megaregion flag into oar control file. Not currently read - for future use. Please do not rely on this remaining here.
An adaptation of part of Garmin's patch from http://opensimulator.org/mantis/view.php?id=5975, thanks!
Flag only written if the SW corner OAR is saved - this is the only one that captures object data presently (though not land or terrain data).
This adds an IRegionCombinerModule interface and the necessary methods on RegionCombinerModule
2012-05-19 02:45:17 +01:00
BlueWall
247a56593f Further refinement on properties 2012-05-18 20:02:32 -04:00
BlueWall
e338c15433 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-18 19:34:19 -04:00
BlueWall
895dadbdbd Cleanup + change properties to set fields with private set : Thanks Justin for the tip. 2012-05-18 19:34:12 -04:00
Justin Clark-Casey (justincc)
9fa0577c7e Enable FetchInventoryDescendents2 and FetchInventory2 caps by default. This appears to be required now for LL 3.3.1 to work properly.
Without this, LL 3.3.1 continually pushes LLInventoryModelFetchDescendentsResponder::error 499 to its log.
This cap will be ignored by older viewers - UDP inventory will work normally.
2012-05-19 00:00:52 +01:00
Justin Clark-Casey (justincc)
fc5d274229 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-18 23:56:44 +01:00
Justin Clark-Casey (justincc)
896cd45939 Fix issue where a new outfit folder is not created when a new outfit is saved if there are no previous outfits
This was because AddFolder() was disallowing these though they are legal.
2012-05-18 23:55:18 +01:00
BlueWall
c05f87b50c Provide Telehub setting to allow use of landmarks
Setting to allow use of landmarks to override telehub routing. Default is off.
2012-05-18 17:51:38 -04:00
Justin Clark-Casey (justincc)
0147dc6302 Fix build break. Comment out EQG deregister/register logging. 2012-05-18 03:50:23 +01:00
Justin Clark-Casey (justincc)
90722875e8 Add millisecond logging to pCampBot for debugging purposes 2012-05-18 03:44:31 +01:00
Justin Clark-Casey (justincc)
45af29291a Add level 2 debug eq logging which logs event queue polls.
Refactor: eq message logging into common method.
2012-05-18 03:43:36 +01:00
Justin Clark-Casey (justincc)
565c73751c Invoke log4net configurator in pCampBot.exe in order to get OpenSim sylte logging 2012-05-18 00:49:39 +01:00
Justin Clark-Casey (justincc)
6501b1b1bb refactor: move EventQueueGet path generation into common method. Rename some local variables in line with code conventions. Add commented out EQG log lines for future use. 2012-05-18 00:38:29 +01:00
Justin Clark-Casey (justincc)
b18c8c8e78 Don't eagerly clear frame collision events when physics actors subscribe and unsubscribe from collisions, in order to avoid a race condition.
Since this is done directly from ScenePresence, it can lead to a race condition with the simulator loop.
There's no real point doing it anyway since the clear will be done very shortly afterwards by the simulate loop and either there are no events (for a new avatar) or events don't matter (for a departing avatar).
This matches existing behaviour in OdePrim
2012-05-17 23:59:43 +01:00
Justin Clark-Casey (justincc)
521ad080f1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-17 23:56:36 +01:00
Justin Clark-Casey (justincc)
4d34763f8c Check agent limit against root agent count rather than both root and child agents
From sl docs such as http://community.secondlife.com/t5/English-Knowledge-Base/Managing-Private-Regions/ta-p/700115
agent should apply to avatars only.
This makes sense from a user perspective, and also from a code perspective since child agents with no physics or actions take up a fraction of root agent resources.
As such, the check is now only performed in Scene.QueryAccess() - cross and teleport check this before allowing an agent to translocate.
This also removes an off-by-one error that could occur in certain circumstances on teleport when a new child agent was double counted when a pre-teleport agent update was performed.
This does not affect an existing bug where limits or other QueryAccess() checks are not applied to avatars logging directly into a region.
2012-05-17 23:33:26 +01:00
BlueWall
2af11fea37 Merge branch 'master' of /home/opensim/lib/osgrid/opensim 2012-05-17 00:49:33 -04:00
BlueWall
295bb3227d Force the default Telehub router if no matches are found in the config. 2012-05-17 00:47:19 -04:00
BlueWall
bd39f5f803 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-16 23:20:37 -04:00
BlueWall
0aa7baf49a Fix boo-boo in OpenSim.ini.example affecting telehub sequential routing
Configuration value should be "sequence" instead of "sequential"
2012-05-16 23:17:42 -04:00
Justin Clark-Casey (justincc)
c45b5a3d1c minor: improve method doc for TestSameSimulatorSeparatedRegionsCreateAgentFails() 2012-05-17 03:27:05 +01:00
Justin Clark-Casey (justincc)
d19fb6fb0c Add regression TestSameSimulatorSeparatedRegionsCreateAgentFails() 2012-05-17 03:12:31 +01:00
Justin Clark-Casey (justincc)
f0c9cb8dc0 Comment out TestSameSimulatorSeparatedRegionsQueryAccessFails() regression test logging accidentally left in 2012-05-17 01:34:04 +01:00
Justin Clark-Casey (justincc)
6b6a00a3d5 minor: Remove redundant EstateOwner != UUID.Zero check in IsAdministrator because checking EstateOwner == user
Due to an earlier check we already know that user != UUID.Zero so if EstateOwner == UUID.Zero, EstateOwner == user can never be true
2012-05-17 01:30:50 +01:00
Justin Clark-Casey (justincc)
bdcf2d1348 Add regression TestSameSimulatorSeparatedRegionsQueryAccessFails() 2012-05-17 01:27:59 +01:00
Justin Clark-Casey (justincc)
e444cb9da4 Remove redundant "Teleport failed:" from reason when QueryAccess fails for the destination simulator. This part of the string is already provided by the viewer.
Also adds more reason logging for diagnostics when teleports are refused/fail.
2012-05-17 00:33:04 +01:00
Justin Clark-Casey (justincc)
23ae24b406 Route OAR SOG loading through the common SceneObjectSerializer.FromXml2Format() rather than the functionally identical but buggy Xml2ToSOG().
Remove buggy Xml2ToSOG().
2012-05-16 00:10:42 +01:00
Justin Clark-Casey (justincc)
e644e34545 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-15 23:47:42 +01:00
Justin Clark-Casey (justincc)
1b5ce8c10e Fix issue where loading OARs could sometimes result in link numbers being reordered.
This was because the parts in scene objects were sometimes not serialized in link order.
This is perfectly fine since the parts still have the right link numbers, but an extra fix to adjust for this
had not been done in the SerialiserModule methods that OAR loading used.
Add regression test for same.
Addresses http://opensimulator.org/mantis/view.php?id=5948, http://opensimulator.org/mantis/view.php?id=5749
2012-05-15 23:43:59 +01:00
Justin Clark-Casey (justincc)
02f3b116c6 Allow use of regular expressions in "show object name", "show part name" and "delete object name" console commands if --regex switch is used.
Deleteing objects by name, creator uuid or owner uuid now requires confirmation to avoid accidental deletion.
2012-05-15 23:42:49 +01:00
Melanie
ef94c31ef8 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-05-15 03:17:42 +01:00
dahlia
1ce576b115 Add another null check to Melanie's last commit. Seems to eliminate sqlite errors in log but no idea if it's working properly 2012-05-14 19:34:18 -07:00
Melanie
65e1d7b2d7 Guard against null root part on SQLite. This really needs to be fixed so SQLite
loads roots before children like MySQL does.
2012-05-15 03:16:12 +01:00
Melanie
069bcd45e5 Try to fix sqlite breakage 2012-05-15 02:27:21 +01:00
Melanie
e7819ce909 Port Avination's collision fixes to core. 2012-05-15 01:02:38 +01:00
Oren Hurvitz
52a32878a9 Save the Telehub and its Spawn Points in the OAR 2012-05-14 19:59:45 +01:00
Justin Clark-Casey (justincc)
d7fd9b159a set executable bit for Ionic.Zip.dll for running OpenSimulator under cygwin 2012-05-14 19:36:26 +01:00
Justin Clark-Casey (justincc)
af6c85308a minor: add explanative comment to 'missing baked texture' logging commonly seen on inter-simulator teleports where avatar baked textures are not available from the asset service. 2012-05-14 18:57:42 +01:00
Justin Clark-Casey (justincc)
deeac69312 minor: comment out individual attachment transfer log messages for now 2012-05-14 18:48:40 +01:00
Justin Clark-Casey (justincc)
c2aa3b90d9 Set the agent in transit teleport flag at the first available opportunity (i.e. when IsInTransit() was being checked) to close down a race condition.
On EntityTransferModule.DoTeleport() there was an IsInTransit() check to prevent multiple simultaneous teleport attempts.
However, the SetInTransit() was only performed later on, which left a window in which multiple threads could pass the IsInTransit() check.
This has been seen in the field and the results aren't pretty.
This commit effectively combines the IsInTransit() and SetInTransit() checks so there is no such window.
More failure cases are made to to call ResetInTransit() to adjust to this move.
2012-05-14 18:36:26 +01:00
Justin Clark-Casey (justincc)
42557d7d4c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-14 18:33:20 +01:00
Justin Clark-Casey (justincc)
fad557485c Add more region information to some teleport related logging 2012-05-14 18:06:48 +01:00
BlueWall
847127f83c Oops - missed the config changes 2012-05-14 00:15:56 -04:00
BlueWall
171480f235 Merge branch 'master' of /home/opensim/src/OpenSim 2012-05-13 17:40:03 -04:00
BlueWall
b80db81cdd Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-13 17:39:05 -04:00
Chris Koeritz
30a272ba31 Modifications for SMTP in OpenSimulator. Email size limit was fixed (was out of step with documentation at 1024, so boosted to 4096). Added configuration item for maximum email size. Redundant sleep inside email module was fixed (LSL Api was already sleeping). Added sleep time configuration item for snooze between email sending for LSL Api. Added two new configuration items (email_max_size and email_pause_time) into the example OpenSim.ini, plus fixed a spelling error (llimits) and odd tabbing.
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-05-13 17:34:20 -04:00
BlueWall
7c229c8b81 Add configurable SpawnPointRouting
Will use one of three selected methods to route avatar landing
	points when using Telehubs. The setting is in [Startup] using
        SpawnPointRouting = closest/random/sequence

	closest: The default setting. Routes avatar to the nearest SpawnPoint
	to the location.

	random: Picks random SpawnPoints to land the avatar.

	sequence: Follows a sequence to place the avatar on the next available
	SpawnPoint location

Conflicts:

	OpenSim/Region/Framework/Scenes/Scene.cs
2012-05-13 17:20:54 -04:00
Justin Clark-Casey (justincc)
9d66792c2a Fix mono compiler warning.
Last jenkins failure looked like a glitch.
2012-05-12 03:04:47 +01:00
Justin Clark-Casey (justincc)
8b958e7e74 Revert "Save the Telehub and its Spawn Points in the OAR"
This reverts commit b0b7b45b94.

Sorry BlueWall, I wanted to discuss an aspect of the data storage but I couldn't assign bugs in 'patch included' state to myself until I changed mantis just now and I forgot to mention it on irc.
I wouldn't normally revert but thinks get tricky when it comes to data formats.
Essentially, I would like to see the Yaw, Pitch and Distance values as separate XML entities (as used in other aspects such as vectors, quaternions) rather than as a . delimited string
We can discuss this more with Oren in opensimulator.org/mantis/view.php?id=6008
2012-05-12 02:36:56 +01:00
Oren Hurvitz
b0b7b45b94 Save the Telehub and its Spawn Points in the OAR
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-05-10 22:56:37 -04:00
Justin Clark-Casey (justincc)
480216f50f Print out more information on connecting bots 2012-05-11 02:38:29 +01:00
Justin Clark-Casey (justincc)
f231ac39de Increase minimum period between bot actions to 3 seconds, so that teleport doesn't fall under the minimum 2 second limits that clients take to process it 2012-05-11 02:23:18 +01:00
Justin Clark-Casey (justincc)
9c392f6a68 Stagger multiple bot logins by 5 seconds to make this part of the test more 'realistic'
TODO: Need to make this value configurable by a command line parameter to pCampbot
2012-05-11 02:05:32 +01:00
Justin Clark-Casey (justincc)
0ddf3c5289 Do bot startup on another thread so console is responsive during this process 2012-05-11 01:56:00 +01:00
Justin Clark-Casey (justincc)
93b615c51d Do each bot shutdown on its own threads to prevent one slow shutdown holding up all the rest.
This does increase the aggressiveness of shutdown
Also prevents the bot list being locked for a long period, which was preventing commands such as "show bots" from working during shutdown
2012-05-11 01:37:03 +01:00
Justin Clark-Casey (justincc)
dc39ec82fa Change bot.IsConnected to be ConnectionState with Disconnected, Connecting, Connnected and Disconnecting states 2012-05-11 00:53:21 +01:00
Justin Clark-Casey (justincc)
ab4e6a02a5 If a bot is not connected, show region name "(none)" instead of throwing an exception in the "show bots" command of pCampbot 2012-05-11 00:37:20 +01:00
Justin Clark-Casey (justincc)
903cff9264 Add ConsoleTable framework class for future uniform formatting of console output tables.
Still subject to change - if you use this be prepared to change your output code if/when the methods change.
Make new "attachments show" command use this.
2012-05-10 23:47:39 +01:00
Justin Clark-Casey (justincc)
abc029d1f4 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-10 23:43:38 +01:00
Justin Clark-Casey (justincc)
bce3e7cb06 Add "attachments" show console command that will show the server's record of which attachments an in-scene avatar has.
For debugging purposes.
2012-05-10 22:48:03 +01:00
Dan Lake
117c183fde Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-10 14:43:02 -07:00
Dan Lake
f374b63ac8 Add even for terrain tainting and synchronize terrain module with physics scene before physics simulation step rather than after 2012-05-10 14:42:46 -07:00
Mic Bowman
de44734fe9 Saving estate state is really slow (relatively) and it gets
completely rewritten every time a region starts up. This
makes the data write only when the data was not already
read from the database.

There is a still a major race condition whenever two regions
share the same estate data, but at least it won't be triggered
on startup.
2012-05-10 09:08:40 -07:00
Justin Clark-Casey (justincc)
d8a78374aa Where necessary, rename OpenSim/Services/Connectors/*.cs files to reflect the actual class names.
This is usually because the file name was singular (*Service*) but the class name was plural (*Services*).
This is to make configuration easier rather than having to look in the c# code itself to find the slightly different name of the connector.
This does not affect existing configuration since the files are being renamed rather than the classes.
2012-05-09 23:25:01 +01:00
Justin Clark-Casey (justincc)
6987aef38d Improve logging on the prim inventory script asset request path for future use.
This adds name and description of the request handler to http request logging when DebugLevel >= 1
2012-05-09 23:12:30 +01:00
Justin Clark-Casey (justincc)
e813f41478 Escape and unescape xml element names if necessary in ServerUtils.BuildXmlData() and ParseElement()
If AvatarService appearance data is retrieved over the network, then ServerUtils was attempting to transfer names such as "Wearable 0:0" directly to xml element names, resulting in an exception.
Space is not valid in xml element names.  Neither is : in this case since the intention is not to namespace.  Using names directly as keys is not a good idea.
To get around this problem this patch escapes and unescapes the element names as appropriate.
This has no impact on existing xml (since it had to be valid in the first place) but allows AvatarService data to be used over the network.
Setting appearance (from simulator to AvatarService) did not suffer this problem since the values are passed in the query string which is already properly escaped.
2012-05-09 21:11:14 +01:00
Talun
61e99bcdcb Mantis 6015 new LSL function llGetAgentList.
Details in the lsl wiki
2012-05-09 00:14:24 +01:00
Justin Clark-Casey (justincc)
e5dbb652d5 Remove physics actor related race conditions in SetVehicleFlags() and SetPhysicsAxisRotation()
sop.PhysActor can currently become null at any time.
2012-05-09 00:11:10 +01:00
Dan Lake
3bc5620d74 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-08 16:06:02 -07:00
Dan Lake
20952c75c5 Trigger event when scene presences are updated 2012-05-08 16:05:34 -07:00
Talun
c21c9e13ef Mantis 1456 same region teleport of a sitting avatar.
Region to region was fixed some time ago in EntityTransferModule.
This applies the same fix for same region teleports.
2012-05-09 00:02:13 +01:00
Justin Clark-Casey (justincc)
ef279c5a62 Add automated TestllBreakLink() 2012-05-08 23:36:23 +01:00
Justin Clark-Casey (justincc)
c0658a102e Add automated TestllCreateLink() 2012-05-08 23:29:51 +01:00
Justin Clark-Casey (justincc)
6406d5a5b9 refactor: Eliminate local id parameter from api initialize.
This is always available from m_host.LocalId
2012-05-08 23:20:27 +01:00
Justin Clark-Casey (justincc)
01b78235db Instead of constantly looking up unchanging self item in script code, pass in self item on initialization. 2012-05-08 23:05:01 +01:00
Justin Clark-Casey (justincc)
abbd050a13 Perform SceneGraph.DuplicateObject() under existing m_updateLock already used for link and delinking, in order to avoid race conditions.
DuplicateObject() relies on source object having correct link numbers for the duration of the dupe.
Both link and delink can change link numbers such that they are not consistent for short periods of time.
2012-05-08 21:31:35 +01:00
Justin Clark-Casey (justincc)
5d1d47e1f9 Revert "Better error handling if Load OAR or Save OAR fail"
This reverts commit 65c88b2ff4.

Yet again I accidentally committed something whilst evaluating it.
2012-05-07 20:01:17 +01:00
Oren Hurvitz
15844da3af Log the full exception when errors occur in BaseHttpServer 2012-05-07 19:56:00 +01:00
Oren Hurvitz
65c88b2ff4 Better error handling if Load OAR or Save OAR fail 2012-05-07 19:07:38 +01:00
Justin Clark-Casey (justincc)
a82dc263ab For osGetGridNick(), osGetGridName(), osGetGridLoginURI() and osGetGridCustom(), try to read from the [GridInfoService] section on standalone rather than [GridInfo]
[GridInfoService] is the section that's actually in bin/config-include/StandaloneCommon.ini.example
2012-05-07 19:05:21 +01:00
Justin Clark-Casey (justincc)
5053506d88 refactor: Instead of performing a ScenePresence lookup twice over LocateClientObject() and GetClientScene(), do the lookup just once in LocateClientObject() 2012-05-07 18:27:33 +01:00
Justin Clark-Casey (justincc)
cdf97ab3a6 Fix a bug in FriendsModule.StatusNotify() where all subsequent friends would not be notified once a non-local friend was found. 2012-05-07 17:21:45 +01:00
dahlia
4032455332 add a null check for Primitive.Sculpt in PrimitiveBaseShape constructor for OpenMetaverse.Primitive object 2012-05-07 00:33:50 -07:00
dahlia
4186fa10f0 remove default values from prior commit since mono cant deal with them 2012-05-07 00:08:56 -07:00
dahlia
b697d0e895 add OS_NPC_RUNNING option to osNpcMoveToTarget() to allow running speed for moving NPCs 2012-05-06 23:54:50 -07:00
Melanie
b60f51dafc Stop llSetPos from sending one update per child prim 2012-05-06 19:21:54 +01:00
nebadon
c11b3760da just another test :) 2012-05-05 14:49:10 -07:00
nebadon
f19fe50629 never say last test!! 2012-05-05 14:45:53 -07:00
nebadon
86dd5adceb one last test.. 2012-05-05 14:42:33 -07:00
nebadon
8d070cf47b last test clean up the mess.. 2012-05-05 14:32:40 -07:00
nebadon
531c52abe3 test #2 2012-05-05 13:59:40 -07:00
nebadon
9317b888f9 testing new opensimulator.org hardware out to make sure git still works! 2012-05-05 13:49:10 -07:00
Justin Clark-Casey (justincc)
01b00ad0d5 Fire the scripting changed event with CHANGED_OWNER when an object that has changed owners is rezzed.
This needs to occur after the script is resumed rather than before, when the event is just dropped.
Addresses http://opensimulator.org/mantis/view.php?id=5890 and http://opensimulator.org/mantis/view.php?id=5952
2012-05-05 00:29:14 +01:00
Justin Clark-Casey (justincc)
e18686528e Use the more efficient HashSet instead of List for FlotasmAssetCache.m_CurrentlyWriting 2012-05-04 23:03:33 +01:00
Justin Clark-Casey (justincc)
dec6ad2933 Don't try and update the access time of a file that is actively being cached.
This may cause IOErrors on Windows.
Aims to help with http://opensimulator.org/mantis/view.php?id=6003
2012-05-04 22:57:33 +01:00
Justin Clark-Casey (justincc)
da4819a170 Temporarily add debug log lines to lsl url request and release
To help with http://opensimulator.org/mantis/view.php?id=5993
2012-05-04 22:11:25 +01:00
Justin Clark-Casey (justincc)
c84ef57e52 minor: remove mono compiler warning 2012-05-04 21:04:42 +01:00
Talun
92fde6ed26 Mantis 60004 problems with damage and llSetDamage. In damage enabled areas this patch - Deletes any objects that have damage set > 0 that deliver that damage to an avatar Stops Gods receiving damage, Stops volume detect objects causing damage Deletes NPCS when their helth reduces to zero Gradually "heals" damage to an avatar Resets health on going to a non damage area 2012-05-04 21:01:09 +01:00
Justin Clark-Casey (justincc)
6096a1f30e Change LongCallTime on WebUtil to 3000, to match the time where request handling is considered "slow".
This may be the wrong thing to do but stops lots of log spam in HG setups now that the monitoring is extended to other outgoing calls.
LongCallTime may need to be made configurable.
2012-05-04 20:53:30 +01:00
Justin Clark-Casey (justincc)
e83bc049df refactor: Rename new DeleteFoldersEx/PurgeFoldersEx methods to DeleteFolders/PurgeFolders overloads as previously discussed with Oren - I think this makes more sense on balance
These overloads are not publicly available on core connectors or IInventoryService.
2012-05-04 20:37:21 +01:00
Oren Hurvitz
ad23774433 Allow deleting folders even if they're not in the Trash
The functions DeleteFolders() and PurgeFolder() still work as before, i.e. they only allow deleting folders that are in the Trash. However, the functions DeleteFoldersEx() and PurgeFolderEx() can now be used to delete any folder.
2012-05-04 20:30:46 +01:00
Justin Clark-Casey (justincc)
cccef2e56d Calculate the Daylight Savings Time information sent to the viewer based on US Pacific Standard Time rather than whatever timezone the login server is set to.
This is because the viewer doesn't receive a timezone from the server but bases its displays on Pacific Standard Time.
However, it still expects to receive notification from the server as to whether or not Daylight Savings Time for PST is in operation.
This commit introduces a new DSTZone setting in the [LoginService] config setting that accepts a list of timezone names valid across different platforms to calculate Pacific DST.
If you need the old behaviour of calculating DST based on the local timezone of the server running the login service, then please override DSTZone with "local".
A mailing list announcement will be made later.
Thanks to Olivier Van Helden and Gudule Lapointe for determining this behaviour and providing this patch.
From http://opensimulator.org/mantis/view.php?id=5972
2012-05-04 19:21:43 +01:00
Justin Clark-Casey (justincc)
fb99ee6774 minor: Tweak BaseHttpServer message to make it clear that this relates to slow handling of inbound requests. 2012-05-04 01:16:56 +01:00
Justin Clark-Casey (justincc)
c9faf0df74 Extend 'slow' request logging to other server outbound requests (forms, rest, async rest) as well as the existing logging on outbound OSD requests.
Also prints out the first 100 chars of any slow request data since this can contain useful info (such as agent ID).
2012-05-04 01:12:56 +01:00
Justin Clark-Casey (justincc)
c221eaf0b0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-05-03 22:39:04 +01:00
Justin Clark-Casey (justincc)
fcd5b0817b Reinsert a 2000ms delay before closing a no longer required agent on the source region after teleport to resolve Imprudence teleport problems.
Viewers 1 and 3 are fine with doing this immediately.  However, Imprudence has a small delay (<200ms, >500ms) after receiving the AgentCompleteMovement reply packet on the destination region before regarding that region as the currnet region.
If Imprudence receives a DisableSimulator in this period, it quits.
We are not restoring the full 5000ms delay since this brings back a bug where teleports permanently fail if an avatar tries to teleport back too quickly.
This commit also sends the AgentCompleteMovement packet to the client before telling the source region to release its old agent, in order to further cut down any possibility of the DisableSimulator being recieved before the AgentMovementComplete.
2012-05-03 22:30:36 +01:00
Snoopy Pfeffer
100e4ca67e Fixes Mantis #5999. llSetLinkPrimitiveParams with PRIM_BUMP_SHINY did cause a runtime error. 2012-05-03 19:00:09 +02:00
Justin Clark-Casey (justincc)
bf5f8b54ae Remove the somewhat misleading logging of the string length of some unknown requests, as this appeared to be some kind of numbered error code.
This brings these messages into line with similar messages that did not do this.
2012-05-03 02:22:06 +01:00
Justin Clark-Casey (justincc)
9ffc2c1062 minor: resolve some mono compiler warnings 2012-05-03 01:56:24 +01:00
Justin Clark-Casey (justincc)
231a3bf147 Implement optional name and description on http stream handlers so that we can relate a slow request to what the handler actually does and the agent it serves, if applicable.
This is most useful for capabilities where the url is not self-describing.
2012-05-03 01:45:49 +01:00
Justin Clark-Casey (justincc)
40f3c24562 Comment out the five second sleep in etm.DoTeleport() if the old agent needs to be closed because it is no longer in the child's view distance.
This sleep appears unnecessary since a sleep has already occurred in WaitForCallback() whilst waiting for the destination region to notify of teleport success.
There are no async operations between this sleep and the WaitForCallback()
If this sleep is present, then teleporting back to the source region within 5 seconds results in a disconnection.
If this sleep is commented out then teleporting quickly back and forth between two simulators appears to work without issue.
Tested on standalone, local grid and distributed grid.
Please revert if there's something that I've missed.
2012-05-01 23:49:02 +01:00
Justin Clark-Casey (justincc)
a29f7f7551 Remove some test code that accidentally crept in with 9d2e1c67 2012-05-01 23:25:30 +01:00
Justin Clark-Casey (justincc)
9d2e1c67a8 Add regression test for teleporting between neighbouring regions on the same simulator
This adds a non-advertised wait_for_callback option in [EntityTransfer].  Default is always true.
Teleport tests disable the wait for callback from the destination region in order to run within a single thread.
2012-05-01 23:14:12 +01:00
Justin Clark-Casey (justincc)
5786521103 Move max teleport distance check down into etm.DoTeleport() since this should apply to all teleport calls, not just those through Teleport() 2012-05-01 18:38:46 +01:00
Justin Clark-Casey (justincc)
37dd174697 refactor: Split most of EntityTransferModule.Teleport() into its same region and different region teleport components.
DoTeleport() now retrives IEventQueue itself rather than requiring it to be passed in.
2012-05-01 17:52:30 +01:00
Justin Clark-Casey (justincc)
b678ea18b2 Create TestHelpers.EnableLogging() and DisableLogging() to turn logging on and off within tests.
This makes *.Tests.dll.config files no longer needed, hence deleted.
2012-04-30 18:44:22 +01:00
Justin Clark-Casey (justincc)
cc482d2d56 Add TBG Renfold to contributors 2012-04-30 17:39:11 +01:00
TBG Renfold
9c2a73b61e llGenerateKey implementation. Creates a random UUID I.E: UUID.Random().ToString();
Signed-off-by: TBG Renfold <tbg.renfold@g2mv.co.uk>
2012-04-30 17:36:49 +01:00
Justin Clark-Casey (justincc)
d0598c63f3 refactor: Simplify by combining SafeSendControlsToScripts() from fe8e835 into SendControlsToScripts() (instead of SendControlToScripts()). 2012-04-30 17:33:08 +01:00
Oren Hurvitz
fe8e835bfc Fixed: scripted controls didn't work if the avatar was sitting down
This fixes a bug introduced in 6473674bbf
2012-04-30 17:18:15 +01:00
Justin Clark-Casey (justincc)
4ad45934c6 If there are no new prim items to store then don't bother opening the MySqlConnection only to do nothing with it. 2012-04-30 16:00:31 +01:00
Justin Clark-Casey (justincc)
522eff6138 Consistently use using() to make sure we dispose of used MySqlCommands where this is not already being done. 2012-04-30 15:54:35 +01:00
Justin Clark-Casey (justincc)
8380166251 Comment out debug [ASYNC DELETER] messages for now. 2012-04-28 00:39:40 +01:00
Justin Clark-Casey (justincc)
cd755fe598 Remove mono compiler warning. Adjust message log to error from info 2012-04-28 00:31:11 +01:00
Justin Clark-Casey (justincc)
133f05dc41 Add text about using double quotes to surround console command arguments containing spaces to "help" text.
e.g. show object name "My long object name"
2012-04-28 00:29:08 +01:00
Justin Clark-Casey (justincc)
2bad430ed8 Put scene object related console commands into new "Objects" help category rather than "Regions" 2012-04-28 00:08:04 +01:00
Justin Clark-Casey (justincc)
ab71779221 Revert "Revert "Implement bulk inventory update over CAPS (not recursive by design,""
This reverts commit a90b0e302c.

Sorry, accidentally reverted this completely by mistake, reverting the revert.
2012-04-27 23:54:45 +01:00
Justin Clark-Casey (justincc)
737e177163 Revert "Log the full exception when errors occur in BaseHttpServer"
This reverts commit e31e7c68c8.

Applied for patch assessment and accidentally committed too early.
2012-04-27 23:46:46 +01:00
Justin Clark-Casey (justincc)
a90b0e302c Revert "Implement bulk inventory update over CAPS (not recursive by design,"
This reverts commit 6e7f13a72d.
2012-04-27 23:46:33 +01:00
Justin Clark-Casey (justincc)
da29cbccfa Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-27 23:39:13 +01:00
Justin Clark-Casey (justincc)
d25469f66e Add flags information (phantom, physics, etc.) to "show object" and "show part" console commands 2012-04-27 23:38:25 +01:00
Oren Hurvitz
e31e7c68c8 Log the full exception when errors occur in BaseHttpServer 2012-04-27 21:52:04 +01:00
BlueWall
db566fbb09 Fix prebuild.xml
adding a reference to a dll requires 'path="..."'
2012-04-27 16:17:46 -04:00
Oren Hurvitz
6473674bbf Fixed: custom walking animations didn't stop when the avatar stopped walking.
This happened because the scripts were notified about control changes (e.g., the user stopped pressing the Forward key) when the animation was still WALK, so the script didn't stop the walking animation. Fixing this required: a) Update the movement animation *before* notifying the script; b) Add locking to prevent clashes with the Heartbeat thread (which also updates the animations); c) Handle the case of a user who stops walking just as the avatar is in the air: the avatar should STAND in that case, not WALK.

This reverts commit feef1dd732.
2012-04-27 20:47:02 +01:00
Oren Hurvitz
9622e8ac72 If a Grid God teleports then include the Godlike teleport flag. This can affect the starting position in the destination region. 2012-04-27 20:22:35 +01:00
Oren Hurvitz
37d770f814 Use DotNetZip to compress OARs and IARs.
DotNetZip provides much better compression than standard .NET.
2012-04-27 19:46:31 +01:00
Justin Clark-Casey (justincc)
9d1791def8 Add Stefan_Boom / stoehr to contributors 2012-04-27 19:42:12 +01:00
Justin Clark-Casey (justincc)
e39e4f6bfb minor: style adjustments in SensorRepeat, mainly related to patch from stoehr 2012-04-27 19:40:19 +01:00
Stefan_Boom
b35a1d5681 Fixing wrong position of llSensor, SensePoint wasnt following the rotation of the root prim. 2012-04-27 19:31:50 +01:00
Diva Canto
9bc94c502a MapImageService: changed the event at which the map tiles are uploaded, because they were being uploaded before the region was registered with the grid 2012-04-27 11:05:40 -07:00
Diva Canto
a9dbe39319 MapImage security issue. Compare strings instead of IPAddresses. 2012-04-27 10:39:20 -07:00
Diva Canto
292752bb78 MapImage security issue: better error messages 2012-04-27 10:22:43 -07:00
Diva Canto
ac64fe03d8 Amend to last commit: account for the existence of proxies. 2012-04-27 09:59:46 -07:00
Diva Canto
2970a18e54 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-27 09:26:14 -07:00
Diva Canto
c84f63f4dc Minor change in error message (HG teleport failures) 2012-04-27 09:24:50 -07:00
Diva Canto
e4e754ee93 MapImageService: added an additional security check for OSGrid and other grids like it. 2012-04-27 09:23:56 -07:00
Justin Clark-Casey (justincc)
07e62df558 Add regression test for teleporting an agent between separated regions on the same simulator.
This involves a large amount of change in test scene setup code to allow test scenes to share shared modules
SetupScene is now an instance method that requires an instantiation of SceneHelpers, though other SceneHelpers methods are still static
May split these out into separate classes in the future.
2012-04-27 00:58:54 +01:00
Oren Hurvitz
8a65f5a70d OSSL: Removed check for CanRunConsoleCommand() in osKickAvatar.
OSSL permissions are now controlled in OpenSim.ini.
2012-04-26 22:53:13 +01:00
Oren Hurvitz
0da8fe3124 Refactored how asset/inventory types are associated with content types: gathered all the knowledge into a single class. Added the Mesh content type. 2012-04-26 22:49:14 +01:00
Oren Hurvitz
ee13d817f1 When creating an OAR, objects where the user is the Creator are always included, regardless of their permissions.
The purpose of the permission checks is to prevent the unauthorized copying of assets, but users can always copy assets that they created.
2012-04-26 22:41:31 +01:00
Justin Clark-Casey (justincc)
cb6791fb30 Tweak log messages on local region to region teleport path to help with problem resolution. 2012-04-26 22:35:25 +01:00
Justin Clark-Casey (justincc)
d19aa9e792 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-26 21:54:50 +01:00
BlueWall
2542ca2a49 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-26 16:40:36 -04:00
BlueWall
fba802bb03 Merge branch 'master' of /home/opensim/var/repo/opensim 2012-04-26 16:13:47 -04:00
Talun
b8114d2b67 Add a version of osNpcSay that takes a channel number Mantis 5747
osNpcSay(UUID npc, string message) left untouched

New functions:-
osNpcSay(UUID npc, int channel, string message)
osNpcShout(UUID npc, int channel, string message)
osNpcWhisper(UUID npc, int channel, string message)

Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-04-26 16:13:29 -04:00
Justin Clark-Casey (justincc)
ca228c4770 Comment out old Scene.HandleLogOffUserFromGrid() to reduce client closing analysis complexity 2012-04-26 16:20:53 +01:00
Justin Clark-Casey (justincc)
f49912f92a minor: Add more detail to unauthorized caps client message 2012-04-26 16:10:24 +01:00
Justin Clark-Casey (justincc)
b0cbf16c19 minor: Add region name to dropped inbound packet message 2012-04-26 16:04:49 +01:00
Justin Clark-Casey (justincc)
4c4ffb9868 Add request verb and url to error messages in WebUtil that lack this.
Make exception printing consistent across windows and mono.
2012-04-26 00:43:31 +01:00
Justin Clark-Casey (justincc)
e52fe03fff minor: Add avatar name to removing agent log message 2012-04-26 00:42:37 +01:00
Justin Clark-Casey (justincc)
74dbfe6bb5 Comment out avatar move to target message for now. 2012-04-25 23:46:42 +01:00
Mic Bowman
133370f158 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-25 11:57:29 -07:00
Mic Bowman
a2d544c938 Add a configuration switch to turn on/off the use of the trash
folder when deleting objects from a scene. The use of the trash
folder causes assets to be created and stored everytime you delete
an object from the scene (slows down the delete and adds mostly useless
assets to your database).

Default is on (use the trash folder) which is the standard behavior.
2012-04-25 11:54:57 -07:00
Melanie
88553bb884 Port Avination link order to make OpenSim behave like SL. Make Primstar scripts work. Fixes Mantis #5990 2012-04-25 19:09:22 +01:00
Mic Bowman
1afae01311 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-25 09:52:44 -07:00
Mic Bowman
bec100a662 Add try/catch around Json script method registration to avoild some issues
with .NET 3.5 vs 4.0 differences.

See http://opensimulator.org/mantis/view.php?id=5971
2012-04-25 09:51:30 -07:00
Diva Canto
7aa25c6762 Slight rewording of output messages. 2012-04-24 22:40:07 -07:00
Diva Canto
fd281ded3f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-24 22:17:52 -07:00
Diva Canto
cf1c34605b HG: Moved User-level code down to the HGEntityTransferModule where it belongs. 2012-04-24 22:17:10 -07:00
Melanie
550ff3b4da Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-04-25 04:01:55 +01:00
Melanie
3be3189ee0 Commit the avination Teleport() methods (adaptedto justincc's changes) 2012-04-25 04:00:01 +01:00
Justin Clark-Casey (justincc)
af86e2939c zero out SP velocity before calling SP.Teleport(), as the client expects (though this is also effectively done by physics at the moment) 2012-04-25 03:47:26 +01:00
Justin Clark-Casey (justincc)
683cfc6f82 refactor: Combine ScenePresence.Teleport() and TeleportWithMomentum()
These are identical apart from setting Velocity = zero, which has no practical effect anyway since this is zeroed when the avatar is added back to the physics scene.
2012-04-25 02:07:55 +01:00
Justin Clark-Casey (justincc)
a65ca24701 Add regression test TestSameRegionTeleport() 2012-04-25 01:51:40 +01:00
Justin Clark-Casey (justincc)
f24289c47f Comment out AvatarService.SetAvatar debug log line for now 2012-04-25 01:09:23 +01:00
Justin Clark-Casey (justincc)
6b299a4287 Comment out some debug ATTACHMENTS log messages for now. 2012-04-25 00:52:33 +01:00
Justin Clark-Casey (justincc)
39a6d7cab4 Comment out the noisier AVFACTORY log messages for now.
Permanently comment out warnings about ScenePresence not being found - this is entirely expected if the avatar has alraedy logged out or left the scene.
2012-04-25 00:47:32 +01:00
Justin Clark-Casey (justincc)
0f470326aa Improve teleport log debug and error messages to tell us who is teleporting. 2012-04-25 00:19:38 +01:00
Justin Clark-Casey (justincc)
54d5ff6774 Go back to always using the local timezone for now - not all machines have US/Pacific or Olsen Amercia/Los_Angeles and this introduces variability that the server operator cannot control
Please see http://opensimulator.org/mantis/view.php?id=5972 soon for more comments.
2012-04-24 23:00:50 +01:00
Justin Clark-Casey (justincc)
ef1668adb3 Revert "Refactored how asset/inventory types are associated with content types: gathered all the knowledge into a single class. Added the Mesh content type."
This reverts commit d3a4d67a20.

Accidentally committed this when I didn't mean to yet.
2012-04-24 21:42:32 +01:00
Oren Hurvitz
2f398231ac Minor improvements to logging
Eliminated an extra newline in the console if the log line doesn't contain a category (example of a category: "[ASSETS]").
2012-04-24 21:38:09 +01:00
Oren Hurvitz
d3a4d67a20 Refactored how asset/inventory types are associated with content types: gathered all the knowledge into a single class. Added the Mesh content type. 2012-04-24 20:52:18 +01:00
Oren Hurvitz
da5fd53702 Fixed problem with MySQL: it was possible for one thread to use an incomplete list of column names if another thread was creating the list at the same time. Now this is thread-safe. 2012-04-24 20:49:28 +01:00
Oren Hurvitz
c70e85a327 When reading a region, use null objects to represent NULL fields.
Previously NULL fields were converted to an empty string due to the use of ToString(). But if the field was an Int (e.g., "locZ"), then the subsequent attempt to convert an empty string to an int caused an exception. Now the field is null so we don't try to convert it, so there's no exception.
2012-04-24 20:46:31 +01:00
Oren Hurvitz
6011bfa5e3 OSSL: fixed the threat level check for osParseJSONNew 2012-04-24 20:41:29 +01:00
Justin Clark-Casey (justincc)
cbe889e10b minor: formatting changes to top of LLLoginResponse.SetDefaultValues(), chiefly some break up of the long line. 2012-04-24 20:30:19 +01:00
Olivier van Helden and Gudule Lapointe (Speculoos.net)
0e3053e4c9 DST settings to match client default Pacific Time (mantis #5972) 2012-04-24 20:22:34 +01:00
Justin Clark-Casey (justincc)
c6f30e044b Restore _parent_scene.actor_name_map[prim_geom] = this; accidentally removed from ODEPrim.SetGeom.
This occurred in 7a574be3fd from Sat 21 Apr 2012.
This should fix collision detection.
Mnay thanks to tglion for the spot and the fix in http://opensimulator.org/mantis/view.php?id=5988
2012-04-24 20:15:10 +01:00
Diva Canto
fd27988978 Changed the Map-related messages from Info to Debug. They're debug messages. 2012-04-23 21:29:18 -07:00
Justin Clark-Casey (justincc)
6c21e15cb9 Add online/offline indicator to "friends show" region console command.
Improve output table formatting.
2012-04-24 00:32:01 +01:00
Justin Clark-Casey (justincc)
40e37d8b78 Add osForceAttachToAvatar() and osForceDetachFromAvatar()
These behave identically to llAttachToAvatar() and llDetachFromAvatar() except that they do not enforce the PERMISSION_ATTACH check
Intended for use in completely controlled dedicated environments where these checks are more a UI hinderance than a help.
Threat level high.
2012-04-24 00:03:57 +01:00
Justin Clark-Casey (justincc)
b798b32b19 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-23 22:54:11 +01:00
Justin Clark-Casey (justincc)
1f8d1bcdcf Replace common code to fetch self inventory item (as opposed to uuid) with GetSelfInventoryItem()
However, at some point it would be far more convenient to receive the TaskInventoryItem in the constructor rather than just the item UUID, so we don't have to constantly refetch our self item.
2012-04-23 22:52:46 +01:00
Justin Clark-Casey (justincc)
60065f06b3 refactor: Replace calls to InventorySelf() with existing m_itemID in LSL_Api
There's no point look up an item ID that we already have.
2012-04-23 22:23:47 +01:00
Talun
679da63da6 Mantis 5977 Corrections to llRegionSayTo
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
2012-04-23 07:16:33 -04:00
Justin Clark-Casey (justincc)
49ed68e98c refactor: simply some properties code in BasicPhysicsPlugin 2012-04-22 20:28:12 +01:00
Justin Clark-Casey (justincc)
58c890df5d Make TestSetPhysicsSinglePrim() actually add the object to the scene in order to test more code paths. 2012-04-22 20:03:34 +01:00
Justin Clark-Casey (justincc)
8205fe79ce Fix bug where setting phantom on a prim would result in a server log message rather than setting phantom.
This was an oversight when removing some race conditions from PhysicsActor setting recently.
Regression tests extended to probe this code path.
Extending regression tests required implementation of a BasicPhysicsPrim (there was none before).  However, BasicPhysics plugin is still of no current practical use other than to fill in as a component for other parts of regression testing.
2012-04-22 19:51:51 +01:00
Justin Clark-Casey (justincc)
ae2b8f7007 Comment out spurious Body != IntPtr.Zero code after disableBody(), since disableBody() sets Body == IntPtr.Zero on all code paths. 2012-04-21 03:42:54 +01:00
Justin Clark-Casey (justincc)
f609594595 refactor: Simplify ODEPrim.AddChildPrim() by returning early where appropriate. 2012-04-21 03:23:51 +01:00
Justin Clark-Casey (justincc)
77a7de87e1 Add test for setting physics in a linkset 2012-04-21 02:45:16 +01:00
Justin Clark-Casey (justincc)
d5c724e5b8 Add regression test for prim status when root prim in a new linkset is non-physical 2012-04-21 01:51:57 +01:00
Justin Clark-Casey (justincc)
9ac48b2aff Fix a bug where linking a non-physical prim with a physical prim as root would make the non-physical prim phantom rather than part of the physics object.
On region restart, the whole object would become physical as expected.
Observed behaviour from elsewhere is that all prims in a new linkset should take on the status of the root prim.
Add regression test for this behaviour.
2012-04-21 01:43:09 +01:00
Justin Clark-Casey (justincc)
17bf2a62db Add test for correct physics status on linking two physics objects
Also fixes last build break.
2012-04-21 01:09:42 +01:00
Justin Clark-Casey (justincc)
71900968b2 refactor: extract common setup code in SceneObjectStatusTests 2012-04-21 01:01:24 +01:00
Justin Clark-Casey (justincc)
ae789f6c16 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-21 00:55:27 +01:00
Justin Clark-Casey (justincc)
06552f217e Add TestSetPhysics() to SOP status tests 2012-04-21 00:54:48 +01:00
Justin Clark-Casey (justincc)
7a574be3fd Remove redundant prim_geom != IntPtr.Zero checks in ODEPrim.
prim_geom == IntPtr.Zero only before a new add prim taint is processed (which is the first taint) or in operations such as scale change which are done in taint or under lock.
Therefore, we can remove these checks which were not consistently applied anyway.
If there is a genuine problem, better to see it quickly in a NullReferenceException than hide the bug.
2012-04-21 00:12:07 +01:00
Justin Clark-Casey (justincc)
c8307cdf1e Improve bitmap disposal to do null checks and not to potentially try disposal of uninitialized variables.
This issue doesn't cause the mono 2.10.5 compiler to fail but appears to cause the windows compiler to fail.
Resolves http://opensimulator.org/mantis/view.php?id=5973
2012-04-20 23:35:11 +01:00
Justin Clark-Casey (justincc)
566327a948 If a physical prim is manually moved (e.g. by a user) then set the geometry position as well as the body position
This is necessary to stop the moved prim snapping back to the original position on deselection if moved only once
This resolves http://opensimulator.org/mantis/view.php?id=5966
2012-04-20 23:24:24 +01:00
Justin Clark-Casey (justincc)
75f117484b Always dispose of existing opened bitmap from file in SaveFile(), instead of simply dropping the reference if the existing file didn't contain a bitmap of the same size. 2012-04-20 03:57:22 +01:00
Justin Clark-Casey (justincc)
cba64ebc79 Explicitly dispose of bitmaps opened from files in GenericSystemDrawing and JPEG.cs 2012-04-20 03:46:33 +01:00
Justin Clark-Casey (justincc)
4ac2f839bd Remember to dispose of the bitmap opened from a file in GatekeeperServiceConnector.GetMapImage() 2012-04-20 03:32:38 +01:00
Garmin Kawaguichi
63cda3a6d0 concerns GenericSystemDrawing.cs
in OpenSim\Region\CoreModules\World\Terrain\FileLoaders\GenericSystemDrawing.cs
Ln 67
Apply Justin's solution

Signed-off-by: Garmin Kawaguichi <garmin.kawaguichi@magalaxie.com>
2012-04-20 03:26:02 +01:00
Justin Clark-Casey (justincc)
f3dda2d85d Add more exception detail to Exception and IOException throws in BaseHttpServer.HandleRequest() 2012-04-20 03:12:25 +01:00
Justin Clark-Casey (justincc)
2b98e2f106 Stop teleports from dropping tall avatars through or embedding them in the floor when lured by short avatars.
This involves giving the ceiling of the Z-component in a lure rather than the floor.
Ideally we would give the exact float compensating for relative avatar height but it looks like that isn't possible with the parcel id format used in lures
2012-04-20 02:50:36 +01:00
Melanie
beb7b8d189 Fix a logic error in app domain creation 2012-04-18 23:23:37 +01:00
Melanie
7a255efdb2 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-04-18 20:07:32 +01:00
Melanie
ea73a03553 Don't re-add the assembly resolver for each script if not creating the appdomain 2012-04-18 20:01:41 +01:00
Justin Clark-Casey (justincc)
c85f9d681a On "show part" command, show link number.
This replaces the Parts count which was rather pointless for a prim (it was either 1 if a child or the number of parts if the root).
This information is still avaliable on the "show object" command.
2012-04-18 00:39:39 +01:00
Justin Clark-Casey (justincc)
b430c0162c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-18 00:00:09 +01:00
Justin Clark-Casey (justincc)
859646ef5c minor: Add some method doc. Add warnings since calling SOG link/delink methods directly rather than through Scene may allow race conditions. 2012-04-17 23:54:51 +01:00
Mic Bowman
84891930aa clean up some more logging spam in the jsonstore modules 2012-04-17 14:23:43 -07:00
Mic Bowman
4db518b9a3 Fix the Csharp 3.0 vs 4.0 problem in JsonStore initialization.
Cut down on the logging spam.
2012-04-17 14:15:17 -07:00
Mic Bowman
2d45ba47ac add configuration for jsonstore module, disabled by default 2012-04-17 13:55:00 -07:00
Mic Bowman
5ff2bda587 This commit adds a new optional region module, JsonStore, that provides structured
storage (dictionaries and arrays of string values) for scripts and region modules.
In addition, there are operations on the storage that enable "real" distributed
computation between scripts through operations similar to those of a tuple space.
Scripts can share task queues, implement shared locks or semaphores, etc.

The structured store is limited to the current region and is not currently
persisted. However, script operations are defined to initialize a store from a notecard
and to serialize the store to a notecard.

Documentation will be posted to the opensim wiki soon.
2012-04-17 13:45:27 -07:00
Mic Bowman
4bb72c9ffe make the namespace for the ScriptModuleComms consistent with its file system location 2012-04-17 13:45:03 -07:00
Justin Clark-Casey (justincc)
cca6b6bd0d Add TestGetChildPartPositionAfterObjectRotation() 2012-04-17 02:14:10 +01:00
Justin Clark-Casey (justincc)
2f2181683c Add test TestGetChildPartPosition() 2012-04-17 01:51:13 +01:00
Justin Clark-Casey (justincc)
7e1ab216e3 Move some public methods on WebStatsModule to private to reduce some static analysis complexity.
There's no obvious reason for these methods to be public.
2012-04-17 01:33:55 +01:00
Justin Clark-Casey (justincc)
24a0cc5261 refactor: Rename EstateSettings.IsEstateManager() to EstateSettings.IsEstateManagerOrOwner() to reflect what it actually does.
This makes it consistent with other parts of OpenSimulator that are treating ESTATE_MANAGER and ESTATE_OWNER as different entities.
As per opensim-dev mailing list.
2012-04-17 01:25:41 +01:00
Talun
5655239f44 Null reference in llGetObjectMass on a seated avatar. 2012-04-17 00:56:46 +01:00
Justin Clark-Casey (justincc)
e6ec83125b Use INSERT OR REPLACE INTO sql in WebStatsModule for session update rather than separate insert and update statements 2012-04-17 00:46:43 +01:00
Justin Clark-Casey (justincc)
572440cd23 correct bug where f_invalid was being inserted on a webstats update for an existing session rather than d_world_kb 2012-04-17 00:33:23 +01:00
Justin Clark-Casey (justincc)
1bb3873338 Simplify WebStatsModule by removing the uncompleted migrations section.
Use "create table if not exists" instead.
Client stats data is transitory data that it is not worth migrating.
2012-04-17 00:19:36 +01:00
Justin Clark-Casey (justincc)
f213f55586 Fix bug in WebStatsModule where an exception would always be output on update if the user teleported to another region on that simulator.
This was because update was looking for an existing stats record unique in session id, agent id and region id.
But if the user teleports to another region then region id changes.
WebStatsModule promptly doesn't find the existing record and tries to insert a new one, but only session id is the primary key and that's still the same, which makes things go bang.
This makes the update search only on the unique session id.
This is only an issue with simulators that have multiple regions where the webstats module is enabled.
2012-04-17 00:02:58 +01:00
Justin Clark-Casey (justincc)
2c74e1bba8 Add GroupPosition and GetWorldPosition() checks to TestGetRootPartPosition() 2012-04-14 01:57:09 +01:00
Justin Clark-Casey (justincc)
da342d0b21 minor: make test names consistent 2012-04-14 01:53:40 +01:00
Justin Clark-Casey (justincc)
f61b234252 refactor: move common init code into SetUp() in SceneObjectSpatialTests 2012-04-14 01:52:16 +01:00
Justin Clark-Casey (justincc)
317aebcce6 refactor: put SOG position test in a separate TestSceneObjectGroupPosition() 2012-04-14 01:47:56 +01:00
Justin Clark-Casey (justincc)
40d01fb20b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-14 01:43:57 +01:00
Justin Clark-Casey (justincc)
3ae98611f2 Add simple RelativePosition and OffsetPosition checks to TestGetRootPartPosition 2012-04-14 01:43:03 +01:00
Melanie
e8898710d5 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-04-14 01:14:43 +01:00
nebadon
2254a718c8 Add Talun to the CONTRIBUTORS.txt, Thank you for the great patches
Talun
2012-04-13 17:09:23 -07:00
Talun
4d652c7041 Missing or unimplemented LSL memory functions.
Implemented to behave as if scripts were LSO.

Signed-off-by: nebadon <michael@osgrid.org>
2012-04-13 17:08:00 -07:00
Melanie
4bdd9d51bc Correct whitespace error introduced by previous commit 2012-04-14 01:04:26 +01:00
Justin Clark-Casey (justincc)
eeec1f32c6 Add very basic TestGetRootPartPosition() test 2012-04-14 01:01:28 +01:00
Kevin Cozens
a366c05ae2 Added ability to exclude inventory items or folders when saving IAR files. 2012-04-13 23:31:12 +01:00
Justin Clark-Casey (justincc)
eced091689 Change threat level of osNpcStopMoveToTarget from Low to High to match other NPC functions, and change OSSL permissions name to osNpcStopMoveToTarget instead of osNpcStopMoveTo
Thanks to Oren Hurvitz for pointing out these mistakes.
2012-04-13 22:52:24 +01:00
Justin Clark-Casey (justincc)
1ad3fdb40b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-13 22:34:36 +01:00
Justin Clark-Casey (justincc)
ab7c0e7547 Remove hardcoded god requirement from osSetRegionWaterHeight, osSetRegionSunSettings and, osSetEstateSunSettings no matter the threat level.
Change threat level on osSetRegionSunSettings and osSetEstateSunSettings from nuisance to high to match similar functions.
If you had enabled these functions but had relied on the hardcoded god check in the code, then please adjust your OSSL permissions config.
Thanks to Oren Hurvitz for pointing this out.
2012-04-13 22:32:33 +01:00
Talun
08e509978d Mantis 55025 Implement script time.
Signed-off-by: nebadon <michael@osgrid.org>
2012-04-12 18:44:00 -07:00
nebadon
30d8506bc2 make changes to FlotsamCache.ini.example as noted in mantis #5960
http://opensimulator.org/mantis/view.php?id=5960
2012-04-12 18:27:14 -07:00
Snoopy Pfeffer
8be14095fe HGFriendsModule: Type casts to fix compile error 2012-04-11 18:56:28 +02:00
Snoopy Pfeffer
1f4d3d3582 HGFriendsModule: Added optional user level based restriction to send friendship invitations to foreign users. 2012-04-11 18:52:07 +02:00
Diva Canto
f2ede8c7e0 HGFriendsModule: add the scaffolding for supporting permissions pertaining to HG friendships. Snoopy take it from here. 2012-04-11 08:13:11 -07:00
Snoopy Pfeffer
78fd487a70 New OS scripting functions osSetTerrainTexture and osSetTerrainHeight as originally proposed in SL Jira (https://jira.secondlife.com/browse/SVC-244). 2012-04-10 21:49:43 +02:00
Justin Clark-Casey (justincc)
4ab479bf58 Add uri to various log messages when region registration fails. Upgrade some debug log messages to error. 2012-04-10 20:40:59 +01:00
Justin Clark-Casey (justincc)
fb44e7b636 minor: convert tabs to spaces in config example files from recent 7c534e5 2012-04-10 17:46:34 +01:00
Justin Clark-Casey (justincc)
2b339bfd97 Correct max_listeners_per_region in OpenSimDefaults.ini to max_listens_per_region
Value for this setting in OpenSimDefaults.ini (1000) is same as setting in code (1000) so this should have no effect
Thanks to Ovi Chris Rouly for pointing this out.
2012-04-10 17:22:02 +01:00
Snoopy Pfeffer
f9dd4ed89c Do not timeout group member cache entry, as long as there are frequent group membership requests. These are caused by movements within the parcel boundaries. 2012-04-10 15:51:26 +02:00
Talun
78c0028179 Mantis5502 implementation of some of the new constants
Signed-off-by: Melanie <melanie@t-data.com>
2012-04-09 21:25:22 +01:00
Diva Canto
0f277dfa17 Addresses mantis #5846 2012-04-08 17:54:59 -07:00
Diva Canto
d4a370a5f2 A few more minor improvements on Suitcase inventory service. 2012-04-07 14:52:15 -07:00
Diva Canto
7c534e558d Added gatekeeper and uas addresses to grid info, so that viewers can take advantage of that info. 2012-04-07 14:38:32 -07:00
Diva Canto
0d566aa385 Better Suitcase Inventory Service. 2012-04-06 21:52:48 -07:00
Diva Canto
806082cd6e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-06 20:35:01 -07:00
Diva Canto
9637e50956 Moved the inventory manipulation from HGEntityTransferModule to HGInventoryAccessModule where it belongs. They need to exchange some events, so added those to EventManager. Those events (TeleportStart and TeleportFail) are nice to have anyway. 2012-04-06 20:34:31 -07:00
Justin Clark-Casey (justincc)
cce760dbfc Rather than having a FromFolderID property on every single prim and only ever using the root prim one, store on SOG instead.
This reduces pointless memory usage.
2012-04-07 00:40:55 +01:00
Justin Clark-Casey (justincc)
7d8bb33c5b Store FromItemID for attachments once on SOG instead of on every SOP and only ever using the root part entry.
This eliminates some pointless memory use.
2012-04-07 00:33:02 +01:00
Justin Clark-Casey (justincc)
70b5a2dace refactor: Eliminate unnecessary SOP.m_physActor 2012-04-06 23:49:23 +01:00
Justin Clark-Casey (justincc)
33e91f1088 Implement PRIM_POS_LOCAL on llSetPrimitiveParams() and other prim params LSL functions.
This is the same as PRIM_POSITION
2012-04-06 23:43:03 +01:00
Justin Clark-Casey (justincc)
4a58d4c5a4 refactor: Use clearer part.ParentGroup.IsAttachment in LSL_Api.GetPartLocalPos() 2012-04-06 23:36:13 +01:00
Justin Clark-Casey (justincc)
3af1cd65f9 Fix llGetLinkPrimParams for PRIM_POS_LOCAL for child prims whether in scene or attachments.
Return relative position to root prim rather than 0,0,0.
Should fix same issue with llGetLocalPos()
http://opensimulator.org/mantis/view.php?id=5951
2012-04-06 22:41:35 +01:00
Justin Clark-Casey (justincc)
47108bb351 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-06 21:15:31 +01:00
Justin Clark-Casey (justincc)
f2903db390 For llGetMass(), return the mass of the avatar is the object is attached.
As per http://lslwiki.net/lslwiki/wakka.php?wakka=llGetMass
This is the mass as used by the physics engine (ODE or Bullet).
2012-04-06 21:14:19 +01:00
Talun
c3a8c00ce0 Addition of missing constants for llGetObjectDetails including for Mantis 5502
Signed-off-by: nebadon <michael@osgrid.org>
2012-04-06 12:42:46 -07:00
Justin Clark-Casey (justincc)
627efc172b Make llGetMass() return total mass of object when called on root prim.
As per http://lslwiki.net/lslwiki/wakka.php?wakka=llGetMass
Aims to resolve http://opensimulator.org/mantis/view.php?id=5954
2012-04-06 20:32:39 +01:00
Justin Clark-Casey (justincc)
908cebbea8 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-06 20:29:54 +01:00
Diva Canto
6a9f36788d Deleted the unused and commented code from 2 commits ago. 2012-04-06 12:28:15 -07:00
Diva Canto
4c32f79c10 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-04-06 11:52:38 -07:00
Diva Canto
7435582b70 If an AddItem fails, try adding it to the right folder type. 2012-04-06 11:52:05 -07:00
Diva Canto
25b3edc21c WARNING: LOTS OF COMMENTED AND UNUSED CODE IN THIS COMMIT. This is on purpose; it's an historical record of what works and what doesn't wrt manipulating inventory at the viewer. I'll remove the unused code in a subsequent commit, but wanted to place it in history. The uncommented code works. 2012-04-06 11:51:12 -07:00
Diva Canto
953fe46811 A few minor tweaks here and there in XInventoryService. 2012-04-06 11:48:41 -07:00
Diva Canto
6eaff18961 Finish the implementation of GetUserInventory, even though it's still not used. 2012-04-06 11:38:47 -07:00
Diva Canto
8fd86c9156 Packing of folder in SendBulkUpdateInventory always set the folder type to -1. Not sure if there's a reason for it, but I'm changing it to the given folder type. 2012-04-06 11:24:34 -07:00
Diva Canto
e324fb2415 Guard against null inventory contents. 2012-04-06 11:22:30 -07:00
Diva Canto
cdbe34716f Thank you, BaseHttpServer, for telling me where things go wrong. 2012-04-06 11:21:27 -07:00
Snoopy Pfeffer
67537f3596 Added missing refresh of group membership client side cache to the groups module. Before memberships of non active groups often were not stored in the cache (n_groupPowers). 2012-04-05 13:03:57 +02:00
Snoopy Pfeffer
8f45eb913c Revert last commit 2012-04-05 11:10:05 +02:00
Snoopy Pfeffer
e4406c846d Group based access restrictions to parcels require group membership, but not that this group is active for that user. 2012-04-05 10:25:54 +02:00
Snoopy Pfeffer
600a86bcae Little bug fix in HasGroupAccess, to properly store the case "true" in the cache. 2012-04-05 10:02:18 +02:00
Melanie
a5d6b624f6 Simplify group access checks and break them out into a separate method.
Use existing cache if the avatar is within the region and use an
ExpiringCache to cache status if the avatar is not in the region. The
30 second delay now applies to scripted objects ony and only when the owner
is not present.
2012-04-05 00:45:58 +01:00
Snoopy Pfeffer
36c8fa16c0 Implements group based access restrictions for parcels of land. Because of caching there can be a delay of up to 30 seconds until the access rights are effectively changed for a user. 2012-04-05 00:53:40 +02:00
Garmin Kawaguichi
9a9923405a terrain save-tile extensions Signed-off-by: Garmin Kawaguichi <garmin.kawaguichi@magalaxie.com>
Signed-off-by: Melanie <melanie@t-data.com>
2012-04-03 20:06:03 +01:00
Justin Clark-Casey (justincc)
633f4bb3d8 remove possible PhysActor unexpectedly null race conditions when changing prim collision status
factor out common SOP physics scene adding code into a common SOP.AddToPhysics() that is the counterpart to the existing RemoveFromPhysics()
2012-04-03 09:28:17 +01:00
Justin Clark-Casey (justincc)
e480e25d8b Fix more SOP.PhysActor race conditions in LSL_Api 2012-04-03 06:01:05 +01:00
Justin Clark-Casey (justincc)
7468299673 Eliminate race condition where many callers would check SOP.PhysicsActor != null then assume it was still not null in later code.
Another thread could come and turn off physics for a part (null PhysicsActor) at any point.
Had to turn off localCopy on warp3D CoreModules section in prebuild.xml since on current nant this copies all DLLs in bin/ which can be a very large number with compiled DLLs
No obvious reason for doing that copy - nothing else does it.
2012-04-03 05:51:38 +01:00
Melanie
6e7f13a72d Implement bulk inventory update over CAPS (not recursive by design,
do NOT CHANGE THIS, needed for HG 2.0)
2012-03-31 02:32:47 +01:00
Justin Clark-Casey (justincc)
32a953fed7 refactor: Rename SOG.GetChildPart() to GetPart() since it can also return the 'root' part. 2012-03-31 01:52:06 +01:00
Justin Clark-Casey (justincc)
f0406f9fe2 Rename SOG.HasChildPrim(uint) to SOG.ContainsPart(uint) to match existing ContainsPart method and remove method duplication.
HasChildPrim is also misleading since the 'root' prim can also be returned.
2012-03-31 01:45:37 +01:00
Justin Clark-Casey (justincc)
387d7fdad5 Allow llRegionSayTo() to work on the PUBLIC_CHANNEL, as per http://wiki.secondlife.com/wiki/LlRegionSayTo
Addresses http://opensimulator.org/mantis/view.php?id=5950
2012-03-31 01:29:13 +01:00
Justin Clark-Casey (justincc)
38d241a317 Add MSSQL login processing fix for servers run on different locales.
This may no longer be an issue with better locale enforcement in OpenSimulator but it doesn't hurt to have this patch.
http://opensimulator.org/mantis/view.php?id=4680
Thanks to controlbreak for this
2012-03-31 01:12:04 +01:00
Justin Clark-Casey (justincc)
69fc8c4985 minor: small message adjustment and unnecessary code elimination when notifying client of no build permission 2012-03-31 01:07:14 +01:00
Justin Clark-Casey (justincc)
c2b98cfd4e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-31 01:04:38 +01:00
PixelTomsen
874140f950 fix Infinite loading on No Rez http://opensimulator.org/mantis/view.php?id=5932 2012-03-31 01:01:59 +01:00
Diva Canto
5a8ed50639 Added missing dependency for MS 2008. I hope. (I don't have 2008 to test this) mantis #5949 2012-03-30 12:39:45 -07:00
Justin Clark-Casey (justincc)
e5343bccdf Add Extended flavour option to opensim version information.
This flavour is for changes in addition to the 0.7.3-post-fixes branch that are too large to be considered fixes but should be reasonably stable.
This flavour will almost certainly never see a formal release.
2012-03-30 02:11:32 +01:00
Justin Clark-Casey (justincc)
269e479cdc minor: remove some now unneeded code from FriendsCommandsModule 2012-03-30 02:00:01 +01:00
Justin Clark-Casey (justincc)
3525c876c8 Make default "show friends" console command show friends fetched from the friends service.
There is no a --cache option which will show friends from the local cache if available.
2012-03-30 01:57:38 +01:00
Justin Clark-Casey (justincc)
1ef62ca75e Lock NullFriendsData.m_Data for consistency and against concurrent read/write 2012-03-30 01:23:34 +01:00
Justin Clark-Casey (justincc)
bce7964ac2 refactor: Move "friends show cache" console command out into separate FriendsCommandsModule.
Expose required methods on IFriendsModule.  Rename GetFriends() -> GetFriendsFromCache() for self-documentation
2012-03-30 01:05:29 +01:00
Justin Clark-Casey (justincc)
59157d9d63 Add simple login test with online friends. Add IFriendsModule.GrantRights() for granting rights via a module call.
Rename IFriendsModule.GetFriendPerms() -> GetRightsGrantedByFriend() to be more self-documenting and consistent with friends module terminology.
Add some method doc.
2012-03-30 00:42:55 +01:00
Justin Clark-Casey (justincc)
b8d383da0a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-30 00:38:23 +01:00
Diva Canto
30db0ac5e2 Finish up the SuitcaseInventory service. 2012-03-29 16:25:55 -07:00
Justin Clark-Casey (justincc)
bf09d6a22b refactor: Stop passing both IClientAPI and agentID to friend event listeners, these are redundant. Replace a few magic numbers with FriendRights enum already used elsewhere. 2012-03-29 18:31:57 +01:00
Justin Clark-Casey (justincc)
012b01f224 Add simple regression test for logging in with offline friends. Don't expect to receive any in this instance. 2012-03-29 03:19:45 +01:00
Justin Clark-Casey (justincc)
cd3f3cbdde Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-29 01:29:00 +01:00
Justin Clark-Casey (justincc)
22a85b947a Add back parts of reverted changes that were not concerned with child agent caching.
This adds ScenePresence to IClientAPI.SceneAgent earlier on in the add client process so that its information is available to EventManager.OnNewClient() and OnClientLogin()
Also add a code comment as to why we're caching friend information for child agents.
2012-03-29 01:26:30 +01:00
Melanie
62b1c807c2 Also add OSS header to interface 2012-03-29 01:14:50 +01:00
Melanie
bd83676d6c Change namespace on CallingCardModule and correct interface file placemant. Also ass OpenSource header 2012-03-29 01:13:08 +01:00
Justin Clark-Casey (justincc)
93ac47f0d3 Revert "Simplify friends caching by only doing this for root agents - no functions require caching for child agents."
We need to cache child agents so that friends object edit/delete permissions will work across boarders on regions hosted by different simulators.

This reverts commit d9f7b8549b.
2012-03-29 01:08:47 +01:00
Justin Clark-Casey (justincc)
a1de9bc33f Revert "Add comment about setting client.SceneAgent in AddNewClient()"
This reverts commit 964cae4f37.
2012-03-29 01:08:37 +01:00
Melanie
c52ff5cf7b Committing the Avination calling card module 2012-03-29 00:47:09 +01:00
Melanie
5a82d939e6 Adding the Avination calling card interface 2012-03-29 00:34:28 +01:00
Melanie
532e3dad26 Pushing the Avination Calling card hooks. Module to follow. 2012-03-29 00:31:11 +01:00
Justin Clark-Casey (justincc)
964cae4f37 Add comment about setting client.SceneAgent in AddNewClient() 2012-03-29 00:21:14 +01:00
Justin Clark-Casey (justincc)
d9f7b8549b Simplify friends caching by only doing this for root agents - no functions require caching for child agents.
This allows us to avoid unnecessary multiple calls to the friends service.
All friends functions originate from the root agent and only go to other root agents in existing code.
This also allows us to eliminate complex ref counting.
2012-03-28 23:40:25 +01:00
Justin Clark-Casey (justincc)
7aa0c05fba Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-28 23:38:04 +01:00
Justin Clark-Casey (justincc)
33df0c2efd Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-28 23:36:30 +01:00
Robert Adams
4138880464 BulletSim: update 64 bit libraries and change Linux configuration to use the files in the lib32 and lib64 directories as needed. 2012-03-28 15:36:20 -07:00
Diva Canto
6bf4d88397 HG 2.0 Suitcase inventory: proof of concept now working properly with the heavy SendBulkInventoryUpdate message. Waiting for Melanie to finish the light-weight version of that message. 2012-03-28 15:32:19 -07:00
Justin Clark-Casey (justincc)
874bf1f8e5 Enable voice by default on parcels to weaken effects of viewer 2/3 ParcelVoiceInfoRequest bug
Viewer 2/3 contains a bug where the viewer will constantly retry ParcelVoiceInfoRequest requests on voice-disabled parcels where voice is otherwise available.
Attempts to fix this server-side have not been successful - sending a non-OK http code (e.g. a 404) just makes the viewer request again immediately.
Dropping the request entirely is a bit better but the viewer still retries after a minute.
Estate settings already enabled voice by default so doing the same for parcels.  This only has an effect if you have any voice system active at all.
Ultimately, the re-request bug needs to be fixed viewer-side (LL suffers from the same issue!) but it might be worth implementing the drop request hack.
2012-03-28 23:30:28 +01:00
Diva Canto
51dc1e709c HG 2.0: added the beginning of HGSuitcaseInventoryService. Plus moved the hack away from ScenePresence. This is better but it still doesn't restore the inventory upon arrival. 2012-03-28 15:01:37 -07:00
Diva Canto
03766c010f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-27 20:38:02 -07:00
Diva Canto
af96b99356 More on switching the root folder from under the viewer. More experiments. 2012-03-27 20:36:54 -07:00
Melanie
614c404923 Typo fix 2012-03-28 03:45:52 +01:00
Diva Canto
4007f62158 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-27 19:09:03 -07:00
Diva Canto
300968e933 HG: Switch root folders from under the viewer. Towards HG 2.0. This is guarded by an obscure config that no one but me should be using at this point. 2012-03-27 19:08:29 -07:00
Melanie
b24605d526 Fix typos 2012-03-28 02:55:29 +01:00
Justin Clark-Casey (justincc)
514a9fdf8e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-28 02:52:11 +01:00
Justin Clark-Casey (justincc)
12d3ea3029 Add "friends show cache <first-name> <last-name>" command for debugging purposes.
This adds a reverse lookup (name -> ID) to IUserManagement instead of hitting the UserAccountService directly.
2012-03-28 02:51:34 +01:00
Melanie
a43e804e59 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-03-28 02:46:31 +01:00
Melanie
0463a00d34 Start on Bulk inventory update via CAPS. Not functional yet. HG v2 2012-03-28 02:45:50 +01:00
Melanie
8c0f1e9058 Add a corresponding method for items. HG v2 2012-03-28 02:10:07 +01:00
Melanie
710c14fb57 Add SendRemoveInventoryFolders which allows to remove one or more
folders from the viewer's inventory view. For HG v2.0. More to come
2012-03-28 01:49:06 +01:00
Justin Clark-Casey (justincc)
445e8bc560 minor: Add some documentation to OnNewClient and OnClientClosed events 2012-03-28 01:08:56 +01:00
Justin Clark-Casey (justincc)
cb41fb64be Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-28 01:06:18 +01:00
Melanie
37603ca6da Reverse a conditional in XInventory that made updating system folder evrsion numbers impossible 2012-03-27 23:11:06 +01:00
Diva Canto
db5f46fa23 Let grided simulators retrieve the user's inventory skeleton 2012-03-27 15:24:55 -07:00
Justin Clark-Casey (justincc)
b74a89bc12 minor: clean up some code formatting in VivoxVoiceModule.cs 2012-03-27 22:33:42 +01:00
Diva Canto
5e07336672 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-27 14:25:36 -07:00
Diva Canto
91950b3147 Amend to previous commit regarding the config name. Bugs bite. 2012-03-27 14:24:59 -07:00
Snoopy Pfeffer
19837ff4dd Two new scripting functions osInviteToGroup(userID) and osEjectFromGroup(userID) that invite/eject users to/from groups the object containing the script is set to. These functions also work for closed groups. 2012-03-27 22:30:02 +02:00
Snoopy Pfeffer
5d37a31436 Merge branch 'master' of ssh://snoopy@opensimulator.org/var/git/opensim 2012-03-27 22:16:25 +02:00
Snoopy Pfeffer
7223b63563 User level based restrictions for HyperGrid teleports, asset uploads, group creations and getting contacted from other grids. Incoming HyperGrid teleports can also be restricted to local users. 2012-03-27 22:09:58 +02:00
Dan Lake
971d32fda3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-27 12:51:58 -07:00
Dan Lake
0247d738e2 When loading objects from DB, first add to scene, then call TriggerOnSceneObjectLoaded. 2012-03-27 12:50:58 -07:00
Diva Canto
de242a29ca HG: beginning of a more restrictive inventory access procedure (optional). Experimental: we'll try switching the root folder from under the viewer. 2012-03-27 11:54:13 -07:00
Diva Canto
2e2634896d Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-27 10:09:08 -07:00
Diva Canto
8131a24cde Send the config section name up to the service classes themselves (XInventory and Assets). 2012-03-27 10:08:13 -07:00
Justin Clark-Casey (justincc)
b78224176e Add Garmin Kawaguichi to CONTRIBUTORS.txt 2012-03-27 02:10:39 +01:00
Justin Clark-Casey (justincc)
09c85a6a6c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-27 02:10:02 +01:00
Garmin Kawaguichi
1aa1a9eb3d In TerrainModule.cs, the command terrain save-tile is modified to remove an unnecessary double argument "minimum Y tile" 2012-03-27 02:05:57 +01:00
Robert Adams
872d513daa BulletSim: make avatar animations update properly.
It seems that ODE calls the avatar collision handling routine even
if there are no collisions. This causes the animation to be updated.
So, for instance, going from HOVER to FLY is caused by the physics engine
calling the collision routine each frame with 0 collisions.
2012-03-26 17:36:33 -07:00
Robert Adams
84c9bd52d3 BulletSim: update BulletSim binaries and configuration fixing a crash which happens when there are more than a few hundred physical objects. 2012-03-26 13:48:15 -07:00
Melanie
ad865ab4fc Add some more overloads to allow registering overloaded methods and lists
of methods.
2012-03-26 16:46:07 +01:00
Robert Adams
2fcdecf090 BulletSim: fix typo introducted by previous checkins (git merge sometimes makes mistakes) 2012-03-26 08:57:40 -07:00
Robert Adams
f8879e06d2 Merge branch 'bulletsim1' 2012-03-26 08:49:12 -07:00
Robert Adams
3691e39178 BulletSim: update BulletSim.dll and libBulletSim.so with latest versions 2012-03-26 08:48:51 -07:00
Melanie
3810e98474 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim
Conflicts:
	OpenSim/Region/OptionalModules/Scripting/ScriptModuleComms/ScriptModuleCommsModule.cs
2012-03-26 14:21:15 +01:00
Melanie
7e0936e4b6 Add a hust UUID to the script invocations 2012-03-26 14:19:55 +01:00
Mic Bowman
055269805d Fix compile error in ScriptModuelComms and add some debugging into the modInvoke
routines to simplify finding method registration issues.
2012-03-25 22:59:06 -07:00
Melanie
98a6c78943 Fix the omission on the interface declaration 2012-03-26 03:33:39 +01:00
Melanie
c9c01d5226 Further simplify ScriptComms 2012-03-26 03:20:40 +01:00
Melanie
ac0f1ff0a6 Dynamically create the delegate type to reduce complexity in the caller 2012-03-26 01:47:20 +01:00
Melanie
d7cc194e83 Correct the design error I introduced into ScriptComms. Untested but about to
be.
2012-03-26 01:47:14 +01:00
Melanie
cb44808504 Simplify the module invocation registration. The types and method name
can be pulled fromt he delegate so we don't need to pass them explicitly
2012-03-25 19:52:38 +01:00
Mic Bowman
a07fa0395f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-24 22:45:17 -07:00
Mic Bowman
a14437ad5a Add support for key, vector, rotation and list types for both
arguments and return values to the modInvoke family of functions.

See http://opensimulator.org/wiki/OSSL_Script_Library/ModInvoke
2012-03-24 22:43:42 -07:00
Justin Clark-Casey (justincc)
4f17537555 Allow the user to enter help topics in upper or lowercase.
Forcing uppercase (e.g. help Assets) is too annoying.
Thanks to WhiteStar for pointing this out.
2012-03-24 03:07:01 +00:00
Justin Clark-Casey (justincc)
f03c3c062e Hack example on to "terrain save-tile" extended help.
Thanks to Garmin Kawaguichi for the initially suggested text.
2012-03-24 02:41:45 +00:00
Justin Clark-Casey (justincc)
f53c6b2594 Use system provided temporary file in "terrain save-tile" to avoid problems with drive letters on windows
Thanks to Garmin Kawaguichi for picking up on this and providing an initial solution (which I adapted).
2012-03-24 02:30:43 +00:00
Justin Clark-Casey (justincc)
cf61c74e90 Give feedback when "terrain save-tile" is not successfully invoked. 2012-03-24 02:16:44 +00:00
Robert Adams
07388071d4 Merge branch 'bulletsim1' of ssh://island.sciencesim.com/home/sceneapi/radams1/bs-opensim into bulletsim1
Conflicts:
	OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
2012-03-23 16:20:53 -07:00
Robert Adams
ff54b3c366 BulletSim: change default of shouldDisableContactPoolDynamicAllocation from False to True. It seems that collisions don't happen well when it is False (things fall through terrain). 2012-03-23 15:50:32 -07:00
Robert Adams
3f53b7bc91 BulletSim: Add new configuration parameters to get and set console commands 2012-03-23 13:15:24 -07:00
Robert Adams
142de1d02f BulletSim: add a bunch of internal Bullet configuration parameters to OpenSimDefaults.ini and the code. 2012-03-23 13:15:23 -07:00
Robert Adams
1273f259e4 BulletSim: remove confusion between angularVelocity and rotationalVelocity (there is still confusion in the rest of OpenSim). Enhance some debug statements to include the object ID. 2012-03-23 13:15:22 -07:00
Robert Adams
2f6e8564fe BulletSim: add updated (but not working) BulletSim dlls 2012-03-23 13:15:20 -07:00
Robert Adams
1a738caeca BulletSim: update TODO list. Rearrange code for readability. Add per object friction and restitution runtime settable parameters. 2012-03-23 13:15:18 -07:00
Robert Adams
de24feb275 BulletSim: Add AvatarRestitution parameter. Centralize computation of buoyancy for flying. Tweek avatar default friction and resititution 2012-03-23 13:15:17 -07:00
Robert Adams
6ecdadb329 BulletSim: set buoyancy in only one place 2012-03-23 13:15:16 -07:00
Robert Adams
b22d040169 BulletSim: add some new runtime setable parameters to match the dll. 2012-03-23 13:15:14 -07:00
Robert Adams
6c50442625 BulletSim: update BulletSim.dll to Bullet 2.80 and add libBulletSim.so to the new lib32 and lib64 binary directories 2012-03-23 13:15:13 -07:00
Robert Adams
975184b3f9 BulletSim: Update list of TODO tasks 2012-03-23 13:15:11 -07:00
Robert Adams
164706043d Have the PhysicsParameters module output console command responses
directly to the console rather than logging at INFO (which doesn't
output anything for WARN).

There should really be a WriteLine method on ICommandConsole so all
of the different commands don't have to figure out where the command
output should go.
2012-03-23 13:11:58 -07:00
nebadon
6b87a29c86 fix yield prolog so it compiles with mono 2.11 there has been a bugzilla
report files with mono project in regards to this change, this simply
lets us move forward with using mono 2.11 for now :
https://bugzilla.xamarin.com/show_bug.cgi?id=4052
2012-03-23 02:22:57 -07:00
Justin Clark-Casey (justincc)
d4beb2f5bc Comment out log message about sending periodic appearance updates. 2012-03-23 03:39:39 +00:00
Justin Clark-Casey (justincc)
e5b182fb41 Add information about SendPeriodicAppearanceUpdates to OpenSimDefaults.ini for now.
Default remains false.
2012-03-23 03:38:33 +00:00
Justin Clark-Casey (justincc)
54887bf386 Add experimental SendPeriodicAppearanceUpdates = true/false setting to [Startup] in OpenSim.ini
On osgrid and other places, I have observed that manually sending appearance updates from the console often relieves grey avatar syndrome.
Despite hunting high and low, I haven't been able to find where this packet is sometimes being lost - it might be a persistent viewer bug for all I know.
Therefore, this experimental setting resends appearance data for everybody in the scene every 60 seconds.  These packets are small and the viewer only fetches texture
data if it doesn't already have it.
Default is false.
2012-03-23 03:33:07 +00:00
Justin Clark-Casey (justincc)
4ed833bc9d Add a scene maintenance thread in parallel to the heartbeat thread. The maintenance thread will end up running regular jobs that don't need to be in the main scene loop.
The idea is to make the critical main scene loop as skinny as possible - it doesn't need to run things that aren't time critical and don't depend on update ordering.
This will be done gradually over time to try and uncover any issues.  Many non-criticial scene loop activities are being launched on separate threadpool threads anyway.
This may also allow modules to register their own maintenance jobs without having to maintain their own timers and threads.
Currently the maintenance loop runs once a second, as opposed to the 89ms scene loop.
2012-03-23 02:49:29 +00:00
Justin Clark-Casey (justincc)
349454ca27 Remove unnecessary shutting down check in Scene.Heartbeat(). Add some method doc. Rename HeartbeatThread, shuttingdown to conform to code standards. 2012-03-23 01:46:11 +00:00
BlueWall
c0672cb7db Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-22 21:27:03 -04:00
BlueWall
176bba4f67 Merge branch 'master' of /home/opensim/src/opensim 2012-03-22 21:26:30 -04:00
Justin Clark-Casey (justincc)
18b3f1132e Rename Scene.StartTimer() to Start() - this method no longer uses a timer. Comment out more effectively unused old heartbeat code. 2012-03-23 01:21:43 +00:00
Justin Clark-Casey (justincc)
4ee8b3e23e Fix build break 2012-03-23 01:11:43 +00:00
Justin Clark-Casey (justincc)
a9995ede65 Fix bug in ScenePresenceAnimator.RemoveAnimation() introduced in commit 1a8769e
Forgot to uppercase the animation name for default animations, since for some reason we store and use them in upper rather than lowercase.
2012-03-23 01:08:13 +00:00
Justin Clark-Casey (justincc)
bc2963d42a Comment out unused scene loop restart code.
This has actually been unused since at least 0.7.2 due to earlier changes.
2012-03-23 01:03:10 +00:00
Justin Clark-Casey (justincc)
08b8ebcc7e Use m_lastFrameTick instead of m_lastUpdate in Scene.GetHealth(). m_lastUpdate is no longer properly updated and is redundant anyway. 2012-03-23 00:55:11 +00:00
BlueWall
c903813e00 RegionReady logging
Some maintenance to clean up logging messages
2012-03-22 20:49:45 -04:00
Justin Clark-Casey (justincc)
40b9b519b8 Add commented out section on collisions switch in Scene.SetSceneCoreDebug().
This was not implemented before the recent changes but should be at some point.
2012-03-23 00:12:14 +00:00
Robert Adams
efe61b2481 BulletSim: remove confusion between angularVelocity and rotationalVelocity (there is still confusion in the rest of OpenSim). Enhance some debug statements to include the object ID. 2012-03-22 17:04:06 -07:00
Justin Clark-Casey (justincc)
15c2499ccd Comment out login parameters debug output accidentally included with c4b2d24 2012-03-22 23:31:41 +00:00
Justin Clark-Casey (justincc)
c1d064e1ca Comment out a terrain save-tile debugging message that accidentally crept in with c4b2d24 2012-03-22 23:16:52 +00:00
Justin Clark-Casey (justincc)
5bf45b9b98 refactor: simplify code for checks when part.OwnerID != destPart.OwnerID in MoveTaskInventoryItem() 2012-03-22 22:40:38 +00:00
Justin Clark-Casey (justincc)
760010d6fb Fix llGiveInventory() so that it checks the destination part for AllowInventoryDrop, not the source.
This allows llAllowInventoryDrop() to work.
Regression test added for this case.
2012-03-22 22:33:37 +00:00
Justin Clark-Casey (justincc)
3bcf71c647 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-22 22:33:16 +00:00
Justin Clark-Casey (justincc)
c4b2d24f33 Add llGiveInventory() test from object to object where both objects are owned by the same user. 2012-03-22 22:17:07 +00:00
Diva Canto
df624c13c9 HG Friends: don't notify if the server isn't there. 2012-03-22 15:08:57 -07:00
Diva Canto
25e5b6a76c Added new simple_build_permissions config to the .ini and .example files. 2012-03-22 14:21:07 -07:00
Melanie
6bc1ccf234 Change a false false to be truly true - or is this statement false?
Fixes perms boo-boo
2012-03-22 20:39:18 +00:00
Melanie
b5d0bc2488 Rework Diva's patch to simplify it 2012-03-22 20:25:20 +00:00
Melanie
45b588cf00 Revert "Simple build permissions feature. NOTE: EXPERIMENTAL, DISABLED BY DEFAULT. Turns out that this can't be expressed by cascading Permission modules, so I did it as per this patch."
This reverts commit 6146e7ef25.
2012-03-22 20:10:38 +00:00
Diva Canto
6146e7ef25 Simple build permissions feature. NOTE: EXPERIMENTAL, DISABLED BY DEFAULT. Turns out that this can't be expressed by cascading Permission modules, so I did it as per this patch. 2012-03-22 12:57:12 -07:00
Justin Clark-Casey (justincc)
a8c87bab64 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-22 01:56:07 +00:00
BlueWall
c98e3a6422 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-21 20:34:51 -04:00
BlueWall
06c81a2afe Fix typo
Add enclosing " to urls
2012-03-21 20:33:45 -04:00
Robert Adams
4bfd9e28ca BulletSim: add updated (but not working) BulletSim dlls 2012-03-21 17:24:17 -07:00
Justin Clark-Casey (justincc)
9949ac2f9f refactor: Rename AvatarAnimations -> DefaultAvatarAnimations for code clarity since non-default animations are handled completely separately from this class 2012-03-22 00:10:41 +00:00
Justin Clark-Casey (justincc)
71ec84d77f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-22 00:00:05 +00:00
Justin Clark-Casey (justincc)
1a8769e6ef Instead of loading default avatar animations in both SLUtil and AvatarAnimations, load just in AvatarAnimations instead.
This lets us remove the dependency of OpenSim.Framework.dll on data/avataranimations.xml, which is not necessary for ROBUST.
This commit also takes care of the odd situation where animations are stored and used internally with uppercase names (e.g. "STAND")
but scripts refer to them with lowercase names (e.g. "sit").
2012-03-21 23:57:39 +00:00
Robert Adams
7783c93802 BulletSim: update TODO list. Rearrange code for readability. Add per object friction and restitution runtime settable parameters. 2012-03-21 16:16:47 -07:00
Robert Adams
cb2727cf6e BulletSim: Add AvatarRestitution parameter. Centralize computation of buoyancy for flying. Tweek avatar default friction and resititution 2012-03-21 16:16:46 -07:00
Robert Adams
6c55fd93a3 BulletSim: set buoyancy in only one place 2012-03-21 16:16:45 -07:00
Robert Adams
898a16802b BulletSim: add some new runtime setable parameters to match the dll. 2012-03-21 16:16:44 -07:00
Robert Adams
3e7e166124 BulletSim: update BulletSim.dll to Bullet 2.80 and add libBulletSim.so to the new lib32 and lib64 binary directories 2012-03-21 16:16:42 -07:00
Robert Adams
eafc3d6c47 BulletSim: Update list of TODO tasks 2012-03-21 16:16:41 -07:00
Diva Canto
5170cd7577 Updated the UserAccountsClient a little bit, plus some more sanity checks on the service connector. 2012-03-21 11:22:39 -07:00
Diva Canto
4a9ca3ca8f HG Friends: reroute the status notifications to the HGFriends service, so that they can scale better. They were previously being handled by the UAS; that is still there, but it's now obsolete and will be removed in a future release. 2012-03-21 10:35:06 -07:00
Diva Canto
d8bcb78b10 HG Friends: pulled sim-bound notification code to HGStatusNotifier, so that we can better manage this traffic. 2012-03-21 09:14:17 -07:00
Diva Canto
8ad426f329 Removed extraneous debug message 2012-03-21 08:08:43 -07:00
Diva Canto
1089e9b842 Removed extraneous debug message 2012-03-21 08:08:12 -07:00
Diva Canto
5abe1b4fce Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-20 21:36:46 -07:00
Diva Canto
91cc09b7bf HG Friends config for Robust.HG.ini.example 2012-03-20 21:36:24 -07:00
Diva Canto
d49dd5573b Removed extraneous debug messages. Added a check for UUID.Zero. 2012-03-20 21:36:02 -07:00
Justin Clark-Casey (justincc)
54a8a5baba If "debug scene updates true" then print out to log when a garbage collection occurs. 2012-03-21 02:02:14 +00:00
Justin Clark-Casey (justincc)
de53aa32e0 Add Scene.DebugUpdates switch which, if turned on, will print out a warning when a frame updates takes longer than twice the desired time
This is controlled via "debug scene updates true|false" on the region console.
Also fix an oversight with "debug scene teleport true|false"
2012-03-21 01:27:09 +00:00
Justin Clark-Casey (justincc)
ab243f4a57 Incorporate scene teleporting debugging into "debug scene teleport true|false" command 2012-03-21 01:13:44 +00:00
Justin Clark-Casey (justincc)
9671e43497 Replace "scene debug true false true" console command with "scene debug scripting true" or other parameters as appropriate.
This is to allow individual switching of scene debug settings and to provide flexibiltiy for additional settings.
2012-03-21 01:02:58 +00:00
Melanie
7a0d7be44c Refix the fixed fix! 2012-03-21 00:17:58 +00:00
Diva Canto
69a9a6993e Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-20 17:33:26 -07:00
Justin Clark-Casey (justincc)
91a001d3cf fix compile error from last commit 2012-03-21 00:31:31 +00:00
Diva Canto
9e8b194356 Fixed borkness with map search introduce by my last changes to it. 2012-03-20 17:29:34 -07:00
Diva Canto
742acc0a3c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-20 17:26:18 -07:00
Diva Canto
f7c61790b7 Fixed borkness with previous merge. 2012-03-20 17:25:52 -07:00
Justin Clark-Casey (justincc)
022366a074 refactor: simplify EstateManagementModule.handleEstateDebugRegionRequest() 2012-03-21 00:23:46 +00:00
Diva Canto
841b4232f6 Line endings 2012-03-20 17:19:55 -07:00
Diva Canto
3fa51f66ec Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Conflicts:
	OpenSim/Framework/Util.cs
2012-03-20 17:19:14 -07:00
Diva Canto
d08ad6459a HG Friends: allow the establishment of HG friendships without requiring co-presence in the same sim. Using avatar picker, users can now search for names such as "first.last@grid.com:9000", find them, and request friendship. Friendship requests are stored if target user is offline. TESTED ON STANDALONE ONLY. 2012-03-20 17:14:19 -07:00
Justin Clark-Casey (justincc)
7bf628ab31 Add ability to log warn if a frame takes longer than twice the expected time. Currently commented out. 2012-03-21 00:02:08 +00:00
Justin Clark-Casey (justincc)
4c41b53a4b Add prim name to "[MESH]: No recognized physics mesh..." log message 2012-03-20 23:35:50 +00:00
Justin Clark-Casey (justincc)
02f9caf6ce remove some mono compiler warnings 2012-03-20 23:34:10 +00:00
Justin Clark-Casey (justincc)
3701f893d3 remove unnecessary tmpFrameMS, use maintc instead for frame time calculation 2012-03-20 23:31:57 +00:00
Justin Clark-Casey (justincc)
c39fba8f9d minor: remove some mono compiler warnings 2012-03-20 23:19:11 +00:00
Justin Clark-Casey (justincc)
8bdd38b804 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-20 23:14:15 +00:00
Justin Clark-Casey (justincc)
30b2a8c778 Move frame loop entirely within Scene.Update() for better future performance analysis and stat accuracy.
Update() now accepts a frames parameter which can control the number of frames updated.
-1 will update until shutdown.
The watchdog updating moves above the maintc recalculation for any required sleep since it should be accounted for within the frame.
2012-03-20 23:12:21 +00:00
nebadon
bd1f848bf6 slight increase in jump power to make running jump slightly better. 2012-03-20 14:17:15 -07:00
nebadon
9ed3532c1b reduce avatar verticle jump from the absurd 5 meter jump to a less
absurd 3m vertical jump to better match what you would see in Second
Life and be more in line with what users would expect.
2012-03-20 13:45:38 -07:00
Justin Clark-Casey (justincc)
86bd287b53 refactor: precalculate the fixed movement factor for avatar tilting (sqrt(2)) rather than doing it multiple times on every move. 2012-03-20 20:39:33 +00:00
Justin Clark-Casey (justincc)
5f2a65c976 refactor: Eliminate unnecessary duplicate avCapsuleTilted 2012-03-20 20:28:58 +00:00
Justin Clark-Casey (justincc)
a3abd65e3d Remove pointless ThreadAbortException catching in a test that isn't run anyway. 2012-03-20 01:41:32 +00:00
Justin Clark-Casey (justincc)
8c911ddaf0 Remove some pointless catching/throwing in the scene loop. 2012-03-20 01:39:19 +00:00
Justin Clark-Casey (justincc)
4cbaf053cf Fix small typo 2012-03-20 00:53:33 +00:00
Justin Clark-Casey (justincc)
1c0f3a1f21 Fix crash where two scene loop threads could changes m_MeshToTriMeshMap at the same time.
Have to lock m_MeshToTriMeshMap as property is static and with more than one region two scene loops could try to manipulate at the same time.
2012-03-20 00:40:03 +00:00
Justin Clark-Casey (justincc)
e9271ec653 Add some doc about the EventManager.OnLoginsEnabled event. 2012-03-19 22:48:26 +00:00
Justin Clark-Casey (justincc)
e2b1c569da Fix a bug where logins to standalones would fail if the RegionReady module was not active
Unfortunately, the OnLoginsEnabled event is currently only guaranteed to fire if the RegionReady module is active.
However, we can instantiate the AuthorizationService in the module RegionLoaded method since by this time all other modules will have been loaded
2012-03-19 22:45:03 +00:00
Justin Clark-Casey (justincc)
437f18bc41 Stop console command "xengine status" throwing an exception if there are no scripts in a region.
Addresses http://opensimulator.org/mantis/view.php?id=5940
2012-03-19 21:43:23 +00:00
Justin Clark-Casey (justincc)
4972491efb Move startup/shutdown command .txt files to .txt.example files to avoid clobbering on updates.
Thanks to Whitestar in http://opensimulator.org/mantis/view.php?id=5938 for pointing out this problem.
2012-03-19 00:29:02 +00:00
Justin Clark-Casey (justincc)
ab54ce1907 Fix configuration problems where XAssetDatabasePlugin was picked up accidentally.
The asset data plugin now implements IXAssetData rather than IAssetData so the ordinary AssetService should no longer pick it up.
This replaces the changes in 92b1ade.  There is no longer any need to adjust your StandaloneCommon.ini/Robust.ini/Robust.HG.ini files.
This may explain very recent issues in the last few weeks where textures have been disappearing or turning white (as they were going to different places).
Unfortunately, you will need to rollback to an earlier database backup or reupload the textures.
2012-03-19 00:18:04 +00:00
Diva Canto
d1256536b5 Added GetUUID(first, last) on UserAgentsService so that we can finally make direct user connections. 2012-03-17 21:27:28 -07:00
Diva Canto
441ef301a3 Amend to previous commit: normalize strings ToLower. 2012-03-17 19:41:47 -07:00
Diva Canto
7dfa0309c6 More on HG access control. This commit splits the UserManagementModule into the Basic one and the HG one, so that we can do everything that needs to be done for HG ACLs to work without interfering with the vanilla opensim. For the moment, it finds foreign users who have left a trace in the region, e.g. an object. This makes it possible to ban/IM/etc these users using the regular avatar picker. TODO: contact the UAS directly given a name of the form First.Last @foo.com. 2012-03-17 15:36:20 -07:00
Diva Canto
92b1ade78e BAD JUSTIN!
People using standalone in master, please update your StandaloneCommon.ini according to this change.
People using robust in master, please update your Robust.HG.ini.example[.HG].ini according to this change.
2012-03-17 15:01:10 -07:00
Diva Canto
1a4fdd2666 Moved HandleAvatarPickerRequest from the generic Scene.PacketHandlers to the UserManagementModule where it belongs. No functional changes. 2012-03-17 10:48:22 -07:00
Diva Canto
d87a5758fb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-17 10:00:43 -07:00
Diva Canto
33c14cb107 Region access control! Region operators can now specify things like DisallowForeigners (means what it says) and DisallowResidents (means that only admins and managers can get into the region). This puts the never-completed AuthorizationService to good use. Note that I didn't implement a grid-wide Authorization service; this service implementation is done entirely locally on the simulator. This can be changed as usual by pluging in a different AuthorizationServicesConnector. 2012-03-17 10:00:11 -07:00
Justin Clark-Casey (justincc)
4a57112f19 Add osGetInventoryDesc() as per http://opensimulator.org/mantis/view.php?id=5927
This allows one to get description data for a given prim inventory item.
Thanks MarcelEdward and GuduleLapointe!
2012-03-17 04:02:23 +00:00
Justin Clark-Casey (justincc)
1e4180fc93 Clean up "save iar" help 2012-03-17 02:54:19 +00:00
Diva Canto
a4dca88a57 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-16 13:08:27 -07:00
Diva Canto
a2009ffe2e Terrain: added [Terrain] section with an option to load an initial flat terrain. Default is still pinhead island. I much rather have a flat land in the beginning. 2012-03-16 13:08:05 -07:00
Justin Clark-Casey (justincc)
59b6f6a6e0 minor: reuse threadpool count we just fetched instead of fetching it again 2012-03-16 03:56:56 +00:00
Justin Clark-Casey (justincc)
bece2023e7 Add total scripts count to "show threads"
However, this returns 0 on Mono (at least on 2.6.7)!  So not showing if it is zero.
2012-03-16 03:52:13 +00:00
Justin Clark-Casey (justincc)
9497a7c7bd refactor: separate out console and status report generation parts of XEngine 2012-03-16 03:32:14 +00:00
Justin Clark-Casey (justincc)
922d8c9312 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-16 03:28:17 +00:00
Justin Clark-Casey (justincc)
6e8f80f1ab Improve threadpool reporting to "show threads" console command (also gets printed out periodically) 2012-03-16 03:26:47 +00:00
Diva Canto
05bb2e4275 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-15 20:22:59 -07:00
Diva Canto
05a1493fff More on map search: send extra messages to the user regarding the region being found or not, because the UI is horribly confusing -- places profile is always "loading..." whether the region exists or not. 2012-03-15 20:22:26 -07:00
Justin Clark-Casey (justincc)
421b562a04 Add process working memory to "show stats" memory statistics.
This shows the actual amount of RAM being taken up by OpenSimulator (objects + vm overhead)
2012-03-16 02:43:33 +00:00
Justin Clark-Casey (justincc)
78e992dbd0 Move startup_commands.txt.example to startup_commands.txt for consistency with the existing shutdown_commands.txt.
Add comments to both files saying what they are (files that can contain console commands to execute on sim startup/shutdown) with an example.
2012-03-16 02:13:45 +00:00
Justin Clark-Casey (justincc)
b19be657b6 Remove unnecessary "backup" command in shutdown_commands.txt
The simulator is already doing this internally.
2012-03-16 02:10:59 +00:00
Justin Clark-Casey (justincc)
aa881e8065 Allow comments to appear in command scripts (e.g. shutdown_commands.txt).
These can start with ; # or //
2012-03-16 02:07:26 +00:00
Justin Clark-Casey (justincc)
34f6f87b6c Remove unused bin/ScriptEngines/Default.lsl
It would certainly be nice to change the default script on disk, but this is currently unused and isn't a suitable default.
At this location it would also stop an easy manual deletion of script engine compiles and state.
2012-03-16 01:51:16 +00:00
Justin Clark-Casey (justincc)
8550a4a07e In Top Scripts report, don't show scripts with no or less than 1 microsecond of execution time.
This is to make the report clearer and less confusing.
2012-03-16 01:46:21 +00:00
Justin Clark-Casey (justincc)
c386b68373 Aggregate script execution times by linksets rather than individual prims.
This is for the top scripts report.
2012-03-16 01:31:53 +00:00
Justin Clark-Casey (justincc)
7df4a544fe Fix owner name display in "Top Colliders" and "Top Script" region reports. 2012-03-16 00:53:36 +00:00
Justin Clark-Casey (justincc)
a4b01ef38a Replace script-lines-per-second with the script execution time scaled by its measurement period and an idealised frame time.
The previous lines-per-second measurement used for top scripts report was inaccurate, since lines executed does not reflect time taken to execute.
Also, every fetch of the report would reset all the numbers limiting its usefulness and we weren't even guaranteed to see the top 100.
The actual measurement value should be script execution time per frame but XEngine does not work this way.
Therefore, we use actual script execution time scaled by the measurement period and an idealised frame time.
This is still not ideal but gives reasonable results and allows scripts to be compared.
This commit moves script execution time calculations from SceneGraph into IScriptModule implementations.
2012-03-16 00:34:30 +00:00
Diva Canto
0548eeb571 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-15 16:03:33 -07:00
Diva Canto
18d1d6d3b4 More on SLURLs and V3. This is hacky, but it works. Basically, we have to redefine the encoding of HG URLs because the viewer messes them up. Examples of what works and doesn't work:
- secondlife://ucigrid00.nacs.uci.edu|8002/128/128 <-- works throughout the viewer
- secondlife://http|!!ucigrid00.nacs.uci.edu|8002+Test+Zone+1/128/128 <-- works throughout the viewer
- secondlife://http|!!grid.sciencesim.com!grid!hypergrid.php+Yellowstone01+74/128/128 <-- works throughout
- secondlife://http%3A%2F%2Fucigrid00.nacs.uci.edu%3A8002%20UCI%20Central%201/128/128 <-- works in chat, but not as URLs in the webkit
2012-03-15 16:03:09 -07:00
Diva Canto
df144eb9e2 Revert "Revert "More hacking around viewer bug""
This reverts commit e5612553ce.
2012-03-15 14:55:25 -07:00
Diva Canto
f52917288a These SLURLs are very confusing! -- reverting the revert. Hack is, indeed, needed.
Revert "Revert "Hack around https://jira.secondlife.com/browse/VWR-28570""

This reverts commit 5a9560db28.
2012-03-15 14:54:25 -07:00
Diva Canto
5a9560db28 Revert "Hack around https://jira.secondlife.com/browse/VWR-28570"
This reverts commit 697ac7fd9d.
2012-03-15 14:36:48 -07:00
Diva Canto
e5612553ce Revert "More hacking around viewer bug"
This reverts commit 10731732b4.
2012-03-15 14:36:29 -07:00
Mic Bowman
8b5298a62e Protect the scriptmodulecomms interface. 2012-03-15 13:37:43 -07:00
Mic Bowman
402ff75d78 Adds a new script command 'modInvoke' to invoke registered functions
from region modules. The LSL translator is extended to generate the
modInvoke format of commands for directly inlined function calls.

A region module can register a function Test() with the name "Test".
LSL code can call that function as "Test()". The compiler will translate
that invocation into modInvoke("Test", ...)
2012-03-15 13:16:02 -07:00
Diva Canto
fd4ad82367 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-15 11:06:08 -07:00
Diva Canto
10731732b4 More hacking around viewer bug 2012-03-15 11:05:43 -07:00
Diva Canto
697ac7fd9d Hack around https://jira.secondlife.com/browse/VWR-28570 2012-03-15 10:17:02 -07:00
Justin Clark-Casey (justincc)
acb1355ff2 Remove property/field duplication in ScriptInstance where it's unnecessary. 2012-03-15 02:02:31 +00:00
Justin Clark-Casey (justincc)
2d32401e23 Simplify some logic in the ScriptInstance constructor - running is set to false in both if/else branches 2012-03-15 01:32:16 +00:00
Justin Clark-Casey (justincc)
f0c1746063 minor: correct indentation levels 2012-03-15 01:26:38 +00:00
Justin Clark-Casey (justincc)
5ddda89238 Remove duplication of m_RunEvents and Running 2012-03-15 00:48:44 +00:00
Justin Clark-Casey (justincc)
2f81e53f63 Fix a problem where multiple near simultaneous calls to llDie() from multiple scripts in the same linkset can cause unnecessary thread aborts.
The first llDie() could lock Scene.m_deleting_scene_object.
The second llDie() would then wait at this lock.
The first llDie() would go on to remove the second script but always abort it since the second script's WorkItem would not go away.
Easiest solution here is to remove the m_deleting_scene_object since it's no longer justified - we no longer lock m_parts but take a copy instead.
This also requires an adjustment in XEngine.OnRemoveScript not to use instance.ObjectID instead when firing the OnObjectRemoved event.
2012-03-15 00:20:47 +00:00
Justin Clark-Casey (justincc)
12cebb12d5 Alleviate an issue where calling Thread.Abort() on script WorkItems can fail to release locks, resulting in a crippled simulator.
This seems to be a particular problem with ReaderWriterLockSlim, though other locks can be affected as well.
It has been seen to happen when llDie() is called in a linkset running more than one script.
Alleviation here means supplying a ScriptInstance.Stop() timeout of 1000ms rather than 0ms, to give events a chance to complete.
Also, we check the IsRunning status at the top of the ScriptInstance.EventProcessor() so that another event doesn't start in the mean time.
Ultimately, a better solution may have to be found since a long-running event would still exceed the timeout and be aborted.
2012-03-15 00:06:52 +00:00
Diva Canto
d6dd3c42d1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-13 20:16:19 -07:00
Diva Canto
479dd65a63 Teleports: bounce off repeated requests of teleporting the same agent. Some scripts do that, and that fails the whole thing. 2012-03-13 20:15:38 -07:00
Diva Canto
5a09572393 Minor sanity check on simulation agent handler (content type) 2012-03-13 20:14:51 -07:00
Justin Clark-Casey (justincc)
95ec96bf86 refactor: rename ScriptInstance.m_CurrentResult to m_CurrentWorkItem to make it more understandable as to what it is and what it does (hold a thread pool work item for a waiting of in-progress event)
Also add other various illustrative comments
2012-03-14 00:29:36 +00:00
Diva Canto
37828c9b9a Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-13 08:07:11 -07:00
Diva Canto
4eb2605c79 Datasnapshot: added "secret" to the registration/deregistration query so that data providers can verify authenticity if they want. 2012-03-13 08:06:30 -07:00
Justin Clark-Casey (justincc)
25592bbd85 Add max thread and min thread information to "xengine status" region console command 2012-03-12 21:16:05 +00:00
Robert Adams
e0dd38f672 Rename the stream extension method WebUtil.CopyTo() to WebUtil.CopyStream().
.NET 4.0 added the method Stream.CopyTo(stream, bufferSize). For .NET 3.5
and before, WebUtil defined an extension method for Stream with the signature
Stream.CopyTo(stream, maxBytesToCopy). The meaning of the second parameter
is different in the two forms and depending on which compiler and/or
runtime you use, you could get one form or the other. Crashes ensue.
This change renames the WebUtil stream copy method to something that
cannot be confused with the new CopyTo method defined in .NET 4.0.
2012-03-12 10:07:04 -07:00
Melanie
1547fe959e Change OpenSim.ini.example to reflect how to actually enable prim limits,
as opposed to how it was first designed.
2012-03-12 16:06:35 +00:00
Diva Canto
13fb582c12 DataSnapshot: renamed gridserverURL to gatekeeperURL, and normalimzed the capitalization of 'name' to lower case, also in the same <grid> section. 2012-03-12 07:55:17 -07:00
Diva Canto
824eb7ed20 Added osGetGridGatekeeperURI() 2012-03-10 19:51:28 -08:00
Diva Canto
291dc39691 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-10 08:09:43 -08:00
Justin Clark-Casey (justincc)
05e821c444 Fix TestSaveOarNoAssets() by not launch a no-assets request on a separate thread.
This was previous behaviour anyway.
2012-03-10 03:11:28 +00:00
Justin Clark-Casey (justincc)
6e26f17923 minor: In IAR save, log when we start adding the control file rather than saying afterwards that we added it. 2012-03-10 02:13:17 +00:00
Justin Clark-Casey (justincc)
5507752dc5 minor: rearrange some save oar messages so they say what they're about to do rather than what they've just done. 2012-03-10 02:11:30 +00:00
Justin Clark-Casey (justincc)
1693799623 On OAR saving, try fetch assets serially rather than firing all the requests at the asset service at once.
This may (or may not) improve reliability for http://opensimulator.org/mantis/view.php?id=5898
Quick tests show that save time is the same.
2012-03-10 02:03:07 +00:00
Justin Clark-Casey (justincc)
3a5928f813 Add satguru and Fernando to contributors 2012-03-10 01:31:27 +00:00
Justin Clark-Casey (justincc)
d6ebf2d6ca Add ability to specify a default estate to be used when creating regions.
This is configured in the new [Estates] section of OpenSim.ini.
If a default estate is configured then all new regions are automatically joined to it instead of asking the user.
If the default estate does not already exist then it is created.
Current default behaviour remains the same - the user is asked for estate details when necessary.
Thanks to Frenando Oliveira for the patch which I adapated further.
2012-03-10 01:27:05 +00:00
Mic Bowman
7b8e9d88e3 Serialize all web requests to a particular host:port pair; only applied to the PostToService variants. 2012-03-09 16:53:51 -08:00
Justin Clark-Casey (justincc)
bdc968f1fc Factor out common default animations code into SLUtil. LLClientView now makes use of the SLUtil copy via a method rather than each LLClientView loading a separate copy.
As per opensim-users mailing list discussion.
2012-03-09 23:57:24 +00:00
Melanie
5c5a493791 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-03-09 22:59:23 +00:00
satguru srivastava
35f2479858 fix for NPC not playing internal animations 2012-03-09 22:58:59 +00:00
Diva Canto
a58152bd2a More on inventory transfer hold ups:
- Added an inventory cache for caching root and system folders
- Synchronized the remote inventory connector, so that all the remote inventory calls are serialized
This will not make much difference in the hold ups. We'd have to move the FireAndForget high up to AddInventoryItem, but that opens up a can of worms regarding the notification of the recipient... the recipient would be notified of the offer before the items are effectively in his inventory, which could lead to surprises.
2012-03-09 12:59:24 -08:00
Diva Canto
81869c4a3f More on HG inventory transfers. Move the FireAndForget higher up. 2012-03-09 09:48:12 -08:00
Diva Canto
f545d669de Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-08 19:32:21 -08:00
Diva Canto
7db5ba7702 More on the freeze on HG inventory transfers: spawn a threadlet on the functional asset posts so that the client threads doesn't freeze (but the network posts are serialized). 2012-03-08 19:31:53 -08:00
Justin Clark-Casey (justincc)
06dda14505 Simplify minimap coarse location code by just reference SP.AbsolutePosition
This is rather than checking whether the avatar is sitting and doing its own calculation.
2012-03-09 02:50:57 +00:00
Justin Clark-Casey (justincc)
205c36d3a4 Get rid of unnecessary ParentID == 0 check on SP.Get_AbsolutePosition since this is handled by the necessary ParentPart check 2012-03-09 02:44:08 +00:00
Justin Clark-Casey (justincc)
94e58ff6b9 Use SP.ParentPart instead of ParentID in places where it's more efficient (saving extra null checks, etc.)
However, it looks like we should retain SP.ParentID since it's much easier to use that in places where another thread could change ParentPart to null.
Otherwise one has to clumsily put ParentPart in a reference, etc. to avoid a race.
2012-03-09 02:38:11 +00:00
Justin Clark-Casey (justincc)
b454326273 refactor: cleanup SP.HandleAgentSit so that everything is done within one if (part != null), rather than having unnecessary multiple checks 2012-03-09 02:33:48 +00:00
Diva Canto
c22446ede0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-08 18:29:08 -08:00
Diva Canto
8a34d1b710 HG inventory/asset transfers: serialize asset posts. I'm using the same pattern as suggested in the patch mantis #5921. Testing it in this smaller context to see how it works. 2012-03-08 18:28:46 -08:00
Justin Clark-Casey (justincc)
73c47f7205 Remove a race condition from SP.Set_AbsolutePosition where we assume the ParentPart is still not null if the ParentID != 0
Another thread could come in and stand the avatar between those two instructions.
2012-03-09 02:22:22 +00:00
Melanie
42a7a85062 FireAndForget scripted rez - port from Avination 2012-03-09 00:57:49 +00:00
Justin Clark-Casey (justincc)
df4b06aed1 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-09 00:20:10 +00:00
Justin Clark-Casey (justincc)
034c9d6bcc Merge branch 'xassetservice' 2012-03-09 00:19:42 +00:00
Justin Clark-Casey (justincc)
3c5bd7c35a minor: move some compression related var setup inside compression if/then switch 2012-03-09 00:16:49 +00:00
Justin Clark-Casey (justincc)
0cbdf9dad2 Put big fat EXPERIMENTAL warning in xassetservice database plugin
This should not currently be used in any circumstances except for experimentation.
Database tables used by this plugin can still change at any time with no migration path.
2012-03-09 00:05:34 +00:00
Diva Canto
9c8ef96301 Fixes mantis #5923 2012-03-08 15:55:43 -08:00
Melanie
675d40357c Hold a ref to the prim we're sat on rather than querying scene each time
the check for significant is carried out. Prevents a deadlock condition.
2012-03-08 19:14:34 +00:00
Justin Clark-Casey (justincc)
fa2a64564a Move "change region" command into general category 2012-03-08 02:24:37 +00:00
Justin Clark-Casey (justincc)
dfdb0e140c Uses shorter AddCommand form for "show estates" 2012-03-08 02:23:52 +00:00
Justin Clark-Casey (justincc)
650d761c06 Display help commander topics in capitalized form - the commands themselves are still lowercase.
Also convert the estate commands to simply AddCommand() calls so that commands from two different modules can be placed in the same category
2012-03-08 02:17:45 +00:00
Justin Clark-Casey (justincc)
430304c176 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-08 01:59:00 +00:00
Justin Clark-Casey (justincc)
749c3fef8a Change "help" to display categories/module list then "help <category/module>" to display commands in a category.
This is to deal with the hundred lines of command splurge when one previously typed "help"
Modelled somewhat on the mysql console
One can still type help <command> to get per command help at any point.
Categories capitalized to avoid conflict with the all-lowercase commands (except for commander system, as of yet).
Does not affect command parsing or any other aspects of the console apart from the help system.
Backwards compatible with existing modules.
2012-03-08 01:51:37 +00:00
Justin Clark-Casey (justincc)
6bdea15ecf minor: make NPC tests run in a given order, comment out log lines in mock region data plugins, null out scene in script and npc torture tests, add other doc comments to torture tests 2012-03-07 01:11:37 +00:00
Melanie
a1b28a61a6 Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-03-07 01:04:09 +00:00
Melanie
7769362687 Always zero the PhysActor on dupes to prevent side effects on the orignal prim 2012-03-07 01:03:26 +00:00
Justin Clark-Casey (justincc)
f3678d217f Stop individually deleting objects at the end of each ObjectTortureTest.
We can now do this since the entire scene and all objects within it are now successfully gc'd at the end of these tests.
This greatly improves the time taken to run each test (by reducing teardown time, not the time to actually do the test work that we're interested in).
Slightly simplifies config read in Scene constructor to help facilitate this.
2012-03-07 00:31:18 +00:00
Justin Clark-Casey (justincc)
23aba007dd Add documentation to make more explicit the difference between OnRezScript and OnNewScript in the event manager
OnNewScript fires when a script is added to a scene
OnRezScript fires when the script actually runs (i.e. after permission checks, state retrieval, etc.)
2012-03-07 00:04:24 +00:00
Justin Clark-Casey (justincc)
3376979923 Remove static m_MainInstance in LocalGridServiceConnector.
I believe this was originally required back when there could be two LocalGridServiceConnectors but this is no longer the case.
Having such statics makes performance testing much more difficult since they prevent GC of objects unless static references are explicitly nulled.
2012-03-06 23:51:50 +00:00
Justin Clark-Casey (justincc)
98251cdab3 Add sensor, dataserver requests, timer and listener counts to "xengine status" command.
This is for diagnostic purposes.
2012-03-06 23:21:17 +00:00
Justin Clark-Casey (justincc)
e9d8eb5a27 Remove unnecessary explicit ElapsedEventHandler in SimReporter 2012-03-06 22:31:25 +00:00
Justin Clark-Casey (justincc)
0f4cdc0c5b Explictly close down the StatsReporter so that we can shutdown its timer
This is another step necessary for the scene to be garbage collected between performance tests
2012-03-06 19:05:32 +00:00
Justin Clark-Casey (justincc)
b3449e998a Fix TestSyntaxError() and TestSyntaxErrorDeclaringVariableInForLoop()
They were all failing assertions but the exceptions these threw were caught as expected Exceptions.
I don't think we can easily distinguish these from the Exceptions that we're expecting.
So for now we'll do some messy manually checking with boolean setting instead.
This patch also corrects the assertions themselves.
2012-03-06 02:30:22 +00:00
Justin Clark-Casey (justincc)
a92153ed88 Get all test methods in OpenSim.Region.ScriptEngine.Tests.dll to report that they're running 2012-03-06 02:21:19 +00:00
Justin Clark-Casey (justincc)
85198a45cb Fix off by one error in script error reporting. 2012-03-06 02:01:47 +00:00
Justin Clark-Casey (justincc)
1dc03e5c4f Simplify NPCModuleTests code by putting the NPCModule in an instance variable rather than making each test fetch it seperately.
Also rename instance variables in the test to conform to naming standards and for understandability
2012-03-06 01:47:43 +00:00
Justin Clark-Casey (justincc)
d44b7c486a Go back to setting appearance directly in NPCModule.SetAppearance() to fix mantis 5914
The part reverted is from commit 2ebb421.
Unfortunately, IAvatarFactoryModule.SetAppearance() does not transfer attachments.
I'm not sure how to do this separately, unfortunately I'll need to leave it to Dan :)
Regression test added for this case.
Mantis ref: http://opensimulator.org/mantis/view.php?id=5914
2012-03-06 01:27:30 +00:00
Chris Hart
413bc1e77e Updates to MSSQL store for 0.7.3 to include:
* Telehub support
* Bugfix to Friends lookups
* Updates to Creator fields to store up to 255 characters for HG item creator storage
2012-03-06 00:27:49 +00:00
Justin Clark-Casey (justincc)
441449e240 Switch to sha256 from sha1 in order to avoid future asset hash collisions.
Some successful collision attacks have been carried out on sha1 with speculation that more are possible.
http://en.wikipedia.org/wiki/Cryptographic_hash_function#Cryptographic_hash_algorithms
No successful attacks have been shown on sha256, which makes it less likely that anybody will be able to engineer an asset hash collision in the future.
Tradeoff is more storage required for hashes, and more cpu to hash, though this is neglible compared to db operations and network access.
2012-03-06 00:14:21 +00:00
Justin Clark-Casey (justincc)
fd2b285b1b remove unnecessary hash local variable 2012-03-05 23:50:41 +00:00
BlueWall
ac934e2dbb Add WebProfiles config to other config example 2012-03-04 11:11:01 -05:00
BlueWall
33a154e446 Merge branch 'master' of /home/opensim/var/repo/opensim into v3_support 2012-03-04 10:42:37 -05:00
Justin Clark-Casey (justincc)
3780df8a32 Make asset compression optional. Currently set to false and not configurable from outside MySQLXAssetData. 2012-03-03 01:43:36 +00:00
Justin Clark-Casey (justincc)
75dc8b1aed Implement basic gzip compression for xassetdata
Whether this is worthwhile is debatable since here we are not transmitting data over a network
In addition, jpeg2000 (the biggest data hog) is already a compressed image format.
May not remain.
2012-03-03 01:28:58 +00:00
Justin Clark-Casey (justincc)
2535a4cafc If asset data already exists with the required hash then don't rewrite it 2012-03-03 00:05:02 +00:00
Justin Clark-Casey (justincc)
94b323d1d8 Perform asset storage transactionally 2012-03-02 23:41:54 +00:00
Justin Clark-Casey (justincc)
7113b44bdd Merge branch 'master' into xassetservice 2012-03-02 23:30:19 +00:00
Justin Clark-Casey (justincc)
98ad6ed255 comment out "[CAPS]: ScriptTaskInventory Request" log spam 2012-03-02 23:29:35 +00:00
Justin Clark-Casey (justincc)
e81b3502ef Make xassetservice execute one query to retrieve the asset, not two 2012-03-02 23:26:03 +00:00
Justin Clark-Casey (justincc)
c2c102d33e Remove outdated comment about checking attachment prims in Scene.PipeEventsForScript() 2012-03-02 22:52:26 +00:00
Justin Clark-Casey (justincc)
089fd61a3b Allow a script to receive events if its root prim is in an area where it's allowed to run rather than checking its own prim.
This allows scripts to run in child prims that are outside region boundaries.
This is an interim patch applied from http://opensimulator.org/mantis/view.php?id=5899 though it does not resolve that bug
Thanks tglion!
2012-03-02 22:43:24 +00:00
BlueWall
d242d47e5c OpenID auth needs hashing before authenticating 2012-03-02 15:05:06 -05:00
BlueWall
6fc350725d Merge branch 'master' into v3_support 2012-03-02 15:02:09 -05:00
Dan Lake
64a036b4cf Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-03-02 09:19:35 -08:00
Dan Lake
8d249f8456 ScenePresence line endings and fix AllowMovement default to true. 2012-03-02 09:19:13 -08:00
Justin Clark-Casey (justincc)
6e3523e25e minor: remove mono compiler warning 2012-03-02 04:08:07 +00:00
Justin Clark-Casey (justincc)
2a2656f629 Merge branch 'master' into xassetservice 2012-03-02 04:01:53 +00:00
Justin Clark-Casey (justincc)
be4199c3bc Make XAssetService a de-duplicating asset service.
This is an extremely crude implemenation which almost works by accident.  Nevertheless it does work.
It can be tested with the instructions at http://opensimulator.org/wiki/Feature_Proposals/Deduplicating_Asset_Service#Testing
It does not interact at all with the existing asset service or any data stored there.
This code is subject to change without notice and should not be used for anything other than gawking.
2012-03-02 03:57:55 +00:00
Diva Canto
8fccd2b555 Send the right name and creation date on the BasicProfileModule. 2012-03-01 19:55:51 -08:00
Dan Lake
e8779cd9e5 In ScenePresence, removed several private variables used to store public parameters. They were only used by the get/set and make code harder to refactor. 2012-03-01 19:22:05 -08:00
Justin Clark-Casey (justincc)
dd63cd1656 Start by adding XAssetService as a copy of the existing AssetService.
This is the start of exploring the creation of a bundled OpenSimulator asset service that does de-duplication and possibly file storage of assets.
Along the lines of coyled's SRAS, but not intended to replace, merely to act as a more performant bundled default.
Might end up nicking stuff from kcozen's patch at http://opensimulator.org/mantis/view.php?id=5429
More details at http://opensimulator.org/wiki/Feature_Proposals/Deduplicating_Asset_Service
Feedback and discussion welcome as commits are made.
2012-03-02 02:23:35 +00:00
Justin Clark-Casey (justincc)
ec48a2f32b minor: Rename pCampbot console prompt to "pCampbot" rather than "Region" 2012-03-02 01:54:48 +00:00
Justin Clark-Casey (justincc)
94971bf3b9 Provide feedback on bot login states in pCampbot 2012-03-02 01:31:28 +00:00
Justin Clark-Casey (justincc)
d8c4985527 Move SenseRepeaters.Count check inside the SenseRepeatListLock.
No methods in the List class are thread safe in the MS specification/documentation
2012-03-02 00:28:37 +00:00
Justin Clark-Casey (justincc)
dcfd05c8ea lock SenseRepeatListLock when added a new sensor during script reconstitution.
This is already being done in the other place where a sensor is added.
Adding a sensor whilst another thread is iterating over the sensor list can cause a concurrency exception.
2012-03-02 00:22:23 +00:00
Mic Bowman
8a375f3c30 Adds an OSSL command for regular expression-based string replacement. Parameters
are osReplaceString(string source, string patter, string replace, integer count, integer start)
The count parameter specifies the total number of replacements to make, -1 makes
all replacements.
2012-03-01 14:49:49 -08:00
BlueWall
7a88d21e59 Merge branch 'master' of /home/opensim/src/opensim 2012-03-01 14:20:46 -05:00
BlueWall
a2b0ed537e Fix indexing on string trim
Thanks to zadark for pointing this out,
	smxy for deciphering the ?: operator and
	Plugh for the fix \o/ yay for IRC
2012-03-01 14:18:48 -05:00
Justin Clark-Casey (justincc)
0007711eb5 Use a fully stubbed out MockConsole for unit tests rather than inheriting from CommandConsole.
This is so that the static MainConsole.Instance doesn't retain references to methods registered by scene and other modules to service commands.
This prevents the scene from being garbage collected at the end of a test.
This is not the final thing preventing GC - next up is the timer started by SimStatsReporter that holds a reference to Scene that prevents end of test gc.
2012-03-01 03:23:10 +00:00
Justin Clark-Casey (justincc)
255afbf08a Remove more now unused third party libraries. 2012-03-01 02:11:15 +00:00
Justin Clark-Casey (justincc)
aabbbb32ff Flick master up to 0.7.4 2012-02-29 23:45:14 +00:00
Justin Clark-Casey (justincc)
1e95b01f13 Extend distsrc target to cleanup the files generated by running prebuild 2012-02-29 21:51:46 +00:00
BlueWall
69c999033b Revert "Fix authentication for OpenID provider"
This reverts commit 9f597c2d42. Fixing OpenID causes issues with other parts of the code.
2012-02-29 15:52:15 -05:00
BlueWall
1a54e76948 Trigger a build 2012-02-29 14:54:06 -05:00
BlueWall
df75f5ae37 Merge branch 'master' of /home/opensim/src/opensim 2012-02-29 14:42:36 -05:00
BlueWall
afc9a7d3f9 Merge branch 'master' of /home/opensim/src/opensim into v3_support 2012-02-29 14:39:51 -05:00
BlueWall
9f597c2d42 Fix authentication for OpenID provider 2012-02-29 14:39:07 -05:00
Justin Clark-Casey (justincc)
a181fae722 Don't start pCampbot if the user doesn't supply bot firstname, lastname stub and password 2012-02-29 03:00:56 +00:00
Justin Clark-Casey (justincc)
40c838896c Use correct casing of RegionSettings.Sandbox in the various database modules.
MySQL and MSSQL have it as Sandbox, sqlite as sandbox.
In various different places in every plugin the wrong casing is used...
Consistency, who needs it?  Or one day sqlite can change to Sandbox.
2012-02-29 00:33:17 +00:00
Justin Clark-Casey (justincc)
670c7842a4 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-29 00:03:55 +00:00
Justin Clark-Casey (justincc)
2fce7dd593 Call Dispose() via using() on SqliteCommands in WebStatsModule after use. 2012-02-28 22:54:21 +00:00
Kevin Cozens
a813e7ffdd Fixed two typos. White space cleanups.
Signed-off-by: nebadon <michael@osgrid.org>
2012-02-28 14:12:39 -07:00
Mic Bowman
4268427ac3 Some clean up in WebUtil, remove unused ServiceRequest function. 2012-02-27 15:15:03 -08:00
Diva Canto
142f8a4aec HG: Remove async in posting assets to foreign grid. Mono hates concurrency there. 2012-02-25 21:00:19 -08:00
BlueWall
4177571a78 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim into v3_support 2012-02-25 14:33:56 -05:00
PixelTomsen
01f454242d PRIM_SCULPT_FLAG_INVERT, PRIM_SCULPT_FLAG_MIRROR implemented
http://opensimulator.org/mantis/view.php?id=5763
2012-02-25 15:33:33 +00:00
Justin Clark-Casey (justincc)
4a5f9fe6a2 Move libopenjpeg native libraries into lib32 and lib64 as appropriate. 2012-02-25 04:26:32 +00:00
Justin Clark-Casey (justincc)
6159110258 Remove some more unused Bullet libraries. 2012-02-25 04:22:59 +00:00
Justin Clark-Casey (justincc)
ca19b9078f Remove old libbulletnet native libraries. These are not used in the current generation bullet physics plugin. 2012-02-25 03:36:43 +00:00
Justin Clark-Casey (justincc)
6138662716 Move other sqlite and ode 32-bit and 64-bit libraries into lib32 or lib64 as appropriate. 2012-02-25 03:25:56 +00:00
Justin Clark-Casey (justincc)
3fbcd21916 Remove xunit.dll, Fadd.Globalization.Yaml.dll and Fadd.dll. It looks like these were once connected with HttpServer.dll but are now unused. 2012-02-25 03:12:41 +00:00
Justin Clark-Casey (justincc)
b48b0b1e58 Remove EXPERIMENTAL tags from load iar/save iar commands. 2012-02-25 00:48:41 +00:00
Justin Clark-Casey (justincc)
f9066e7d86 Establish a distsrc nant target for producing the source distribution.
This is in addition to the distbin target.  The distbin target now needs distsrc to be run first.
Still needs some extra tweaking that I shall eventually put in as sed invocations or similar.
2012-02-25 00:36:28 +00:00
PixelTomsen
7b5e42c744 llGetLinkMedia, llSetLinkMedia, llClearLinkMedia implementation mantis: http://opensimulator.org/mantis/view.php?id=5756 http://opensimulator.org/mantis/view.php?id=5755 http://opensimulator.org/mantis/view.php?id=5754 2012-02-24 23:10:41 +00:00
Justin Clark-Casey (justincc)
bafef292f4 Take watchdog alarm calling back outside the m_threads lock.
This is how it was originally.  This stops a very long running alarm callback from causing a problem.
2012-02-24 05:25:18 +00:00
Justin Clark-Casey (justincc)
9e6ffe7798 Rename Watchdog.GetThreads() to GetThreadsInfo() to reflect what it actually returns and for consistency. 2012-02-24 05:15:47 +00:00
Justin Clark-Casey (justincc)
84735b644c Get rid of some of the identical exception catching in Scene.Update(). 2012-02-24 05:12:56 +00:00
Justin Clark-Casey (justincc)
f67f37074f Stop spurious scene loop startup timeout alarms for scenes with many prims.
On the first frame, all startup scene objects are added to the physics scene.
This can cause a considerable delay, so we don't start raising the alarm on scene loop timeouts until the second frame.
This commit also slightly changes the behaviour of timeout reporting.
Previously, a report was made for the very first timed out thread, ignoring all others until the next watchdog check.
Instead, we now report every timed out thread, though we still only do this once no matter how long the timeout.
2012-02-24 05:02:33 +00:00
Justin Clark-Casey (justincc)
fe229f10e6 In osSetSpeed(), if no avatar for a uuid is found then don't attempt to set speed. 2012-02-24 04:08:59 +00:00
PixelTomsen
0b9f4d7e74 llLinkSitTarget implementation http://wiki.secondlife.com/wiki/LlLinkSitTarget 2012-02-24 00:58:11 +00:00
Justin Clark-Casey (justincc)
f034958bdc Load appropriate 32-bit/64-bit Windows sqlite dll if using WebStatsModule.
This should resolve http://opensimulator.org/mantis/view.php?id=5901
2012-02-23 23:11:47 +00:00
Justin Clark-Casey (justincc)
90ea00a109 Try to resolve some problems with viewers crashing after hitting parcel banlines or freezing on the banline.
This involves
1) On forcible teleport, call m_scene.RequestTeleportLocation() rather than ScenePresence.Teleport() - only EntityTransferModule now should call SP.Teleport()
2) When avatar is being forcibly moved due to banlines, use a 'stop movement' tolerance of 0.2 to requested position rather than 1
This prevents the avatar sometimes being stuck to banlines until they teleport somewhere else.
This aims to fix some problems in http://opensimulator.org/mantis/view.php?id=5822
2012-02-23 22:56:42 +00:00
BlueWall
af377470e1 Merge branch 'master' into v3_support 2012-02-22 22:29:30 -05:00
Melanie
9ed4245d9e Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim 2012-02-23 01:42:08 +00:00
Melanie
1dfc990264 Add a position parameter to region crossing of objects. This avoids the
potential bad update that places an object at the opposite side of the
origin sim for a moment before actually crossing it. Especially important in
grids like OSG where lag between sims is high.
2012-02-23 01:40:30 +00:00
BlueWall
165ae251ec V3 Support
The V3 webapps need SSO capability and use OpenID. We need to send both our OpenID server url and a token for the user in the login response.
2012-02-22 16:36:28 -05:00
BlueWall
67bea681e2 Add web profile url setting to ini 2012-02-21 23:04:49 -05:00
Justin Clark-Casey (justincc)
5d31267185 Remove two spurious m_sceneGraph != null checks in Scene.cs. It's set in constructor and never subsequent set to null. 2012-02-22 00:55:16 +00:00
Justin Clark-Casey (justincc)
cf9b3e7708 Restore the taskItem null check that I accidentally blatted in 5397a6d
This is a valid check because the caller could supply an invalid uuid.
2012-02-21 23:41:48 +00:00
PixelTomsen
1c533eb520 Fix:LINK_ROOT flag for llGetLinkName() by SinglePrim 2012-02-21 23:15:33 +00:00
Justin Clark-Casey (justincc)
5397a6d4c6 Fix problem with dragging child part inventory item to user inventory.
This fixes the problem by fixing the permissions module to look at root part permissions rather than having to do this for every caller.
Resolves http://opensimulator.org/mantis/view.php?id=5569
2012-02-21 22:54:30 +00:00
Justin Clark-Casey (justincc)
76f411147d Revert "Fix:Cannot drag inventory from child prim into inventory http://opensimulator.org/mantis/view.php?id=5569"
This reverts commit 15ce73caca.

As per the COMMENTS in http://opensimulator.org/mantis/view.php?id=5569, I was going to fix this in a more general way.
2012-02-21 22:49:06 +00:00
PixelTomsen
15ce73caca Fix:Cannot drag inventory from child prim into inventory http://opensimulator.org/mantis/view.php?id=5569 2012-02-21 22:07:12 +00:00
BlueWall
7cf970fb27 V3 Support:
This starts V3 support by adding a profile server url to the login response. This requires viewer support - which is also being worked on.
2012-02-21 14:21:03 -05:00
Justin Clark-Casey (justincc)
a27e5a9c95 Both 32-bit and 64-bit BulletSim.dll must have the same name. Rename the 64 bit one in lib64 2012-02-21 04:12:17 +00:00
Justin Clark-Casey (justincc)
daee2eda93 Load 32-bit or 64-bit BulletSim Windows library automatically as appropriate.
This uses the same approach as ODE.
radams, if this doesn't work for you please feel free to revert.
2012-02-21 04:10:39 +00:00
Justin Clark-Casey (justincc)
a15b00d3ef Replace previous windows 64-bit sqlite3.dll with one from http://system.data.sqlite.org/downloads/1.0.79.0/sqlite-netFx35-binary-bundle-x64-2008-1.0.79.0.zip
In this zip, it's called System.Data.SQLite.dll.  We rename it to lib64/sqlite3.dll
This is a little unexpected but it works.  For some reason my hand-rolled one in Visual Studio 2008 did not.
This is sqlite 3.7.10.  Other libraries are still currently 3.7.6 but this should make no difference.
This should make it possible to use OpenSim.exe on 64-bit Windows now, though currently the bullet physics plugin will still complain (can be ignored if you are not using bullet).
2012-02-21 04:01:27 +00:00
Justin Clark-Casey (justincc)
1b906ef2ad Replace win 64-bit sqlite3.dll with another version, though I suspect this one won't work either. 2012-02-21 03:24:01 +00:00
Justin Clark-Casey (justincc)
68a4ef5ef6 Add 64 bit Windows sqlite3.dll and use this if running a 64-bit windows process. 2012-02-21 02:52:20 +00:00
Justin Clark-Casey (justincc)
90dc5f47e7 Fix bug where NPCs would establish child agents on other neighbour regions that had come up after the NPC was created. 2012-02-21 01:57:19 +00:00
Justin Clark-Casey (justincc)
19d271d3fc Remove PhysXPlugin and wrappers.
In over 4 years this never progressed beyond an unimplemented stub.
This doesn't mean that it can't come back if someone is interested in implementing PhysX support.
2012-02-21 01:45:17 +00:00
Diva Canto
4a329098e8 Amend to last commit: synchronize access to queues. 2012-02-20 11:12:02 -08:00
Diva Canto
99b9c1a9d5 More improvements on agent position updates: if the target sims fail, blacklist them for 2 min, so that we don't keep doing remote calls that fail. 2012-02-20 10:58:07 -08:00
Diva Canto
1c3ee5d1ce One more tweak related to the previous 2 commits. 2012-02-19 16:42:01 -08:00
Diva Canto
b489c85226 Amend to last commit. This should have been committed too. 2012-02-19 15:37:37 -08:00
Diva Canto
dcea23906b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-19 12:28:47 -08:00
Diva Canto
20c65ac438 A few more tweaks on position updates and create child agents. Mono hates concurrent uses of the same TCP connection, and even of the connections to the same server. So let's stop doing it. This patch makes movement much smoother when there are lots of neighbours. 2012-02-19 12:28:07 -08:00
BlueWall
bcb9577495 Use localy defined name, TPFlags, for Constants.TeleportFlags 2012-02-19 12:09:57 -05:00
PixelTomsen
d22715126c Fix:Fly setting for Parcel dosen't work http://opensimulator.org/mantis/view.php?id=5887
Signed-off-by: nebadon <michael@osgrid.org>
2012-02-19 01:58:28 -07:00
PixelTomsen
a114367b9b Fix:OmegaX, OmegaY and OmegaZ not saved for child prims http://opensimulator.org/mantis/view.php?id=5893
Signed-off-by: nebadon <michael@osgrid.org>
2012-02-19 01:00:01 -07:00
Diva Canto
2ffc055f7e This should smooth movement in heteregeneous networks by a lot: cache the region by position instead of looking it up all the time -- this was being done during the main update loop! 2012-02-18 21:59:42 -08:00
BlueWall
14e9bf894c Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-18 00:51:23 -05:00
BlueWall
f4cd35322f Route logins according to Estate, Telehub and TeleportFlags 2012-02-18 00:45:43 -05:00
BlueWall
7bdcf9eb26 Propagate our teleport flags on logins 2012-02-18 00:32:09 -05:00
Justin Clark-Casey (justincc)
9846a1e56e Report an error if the required native Windows ODE library can't be found. 2012-02-18 02:52:29 +00:00
Justin Clark-Casey (justincc)
4cc97df8f3 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-18 02:46:44 +00:00
Justin Clark-Casey (justincc)
0ef64fbe03 Actually add the Windows 64-bit ode.dll file.
This might be why it didn't work.
2012-02-18 02:46:07 +00:00
BlueWall
fbccff4994 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-17 21:15:18 -05:00
Justin Clark-Casey (justincc)
84184708de Fix a bug where changing shape parameters of a child prim in a linkset would not persist.
Resolves http://opensimulator.org/mantis/view.php?id=5819
2012-02-18 01:15:43 +00:00
BlueWall
8f8b478d36 Parcel sales support to SQLite 2012-02-17 20:04:38 -05:00
Justin Clark-Casey (justincc)
b817c337dc On Windows automatically load the correct native ODE library depending on whether the process is 32-bit or 64-bit
In theory, this means that a 64-bit Windows OS user can now run OpenSim.exe with ODE and use more than 2 (or 3) GB of memory.
However, this is completely untested since I don't currently own a 64-bit Windows box.  Feedback appreciated.
Using OpenSim.32BitLaunch.exe should continue to work.  Other platforms are unaffected.
This will currently not work with sqlite - I will add that too if this works.
2012-02-18 00:33:52 +00:00
BlueWall
d03e878d53 Fillin missing SQLite support for Telehubs 2012-02-17 17:31:20 -05:00
Dan Lake
b313d16493 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-17 13:51:54 -08:00
Dan Lake
784263f5e3 Added the TriggerAvatarAppearanceChanged to EventManager. It's triggered by AvatarFactoryModule after an avatar's appearance has been succesfully changed and persisted (if the persist option is set). 2012-02-17 13:45:45 -08:00
Robert Adams
6baa13ab7a Add new and updated script events 2012-02-17 09:12:41 -08:00
BlueWall
0e16e0fb6a Merge branch 'master' of /home/opensim/src/opensim 2012-02-17 08:21:33 -05:00
BlueWall
ba98d6fffe Fix missing telehub handling on login 2012-02-17 08:03:53 -05:00
Justin Clark-Casey (justincc)
972f73ed2b Make osNpcStopAnimation() call AvatarStopAnimation() rather than AvatarPlayAnimation() 2012-02-17 02:53:12 +00:00
BlueWall
c5ff37bf3e Merge branch 'master' of /home/opensim/src/opensim 2012-02-16 09:01:02 -05:00
BlueWall
6b867773a8 Remove some debugging output form the logger 2012-02-16 08:59:34 -05:00
Justin Clark-Casey (justincc)
912aac3447 minor formatting changes from last commit (4486n7d) 2012-02-16 03:37:40 +00:00
PixelTomsen
4486b7d8e8 Fix: Object owned by the group does not return to the last owner http://opensimulator.org/mantis/view.php?id=5404 2012-02-16 03:35:18 +00:00
Justin Clark-Casey (justincc)
1267094a51 Turn off logging on test in last commit (2b84295). 2012-02-16 03:02:11 +00:00
Justin Clark-Casey (justincc)
2b842958cc If shape properties fail SOP parsing (e.g. due to commas instead of decimal points) print out one short message listing the failing node names rather than lots of exceptions.
Adds skeleton bad float values deserialization test
2012-02-16 02:58:00 +00:00
Justin Clark-Casey (justincc)
80ec2ac167 Correct a bug introduced in 1f402fdf (Feb 7 2012) where the delete friends grid call would try and contact the wrong uri. Also fixes the build from df960d5 2012-02-16 01:39:12 +00:00
Justin Clark-Casey (justincc)
df960d5767 Add known identity informatio nto log message if an exception is thrown during LLUDPServer.HandleUseCircuitCode() 2012-02-16 01:25:54 +00:00
Justin Clark-Casey (justincc)
c0760f9f91 Comment out "experimental" log message printed out whenever a physics mesh was generated for a mesh
Also adds prim name to the "no asset data" error log message
2012-02-16 00:28:57 +00:00
Justin Clark-Casey (justincc)
c906128191 Fix some logic mistakes where firstly osNpcCreate() without options was creating npcs sensed as agents and secondly the OS_NPC_SENSE_AS_AGENT option was having the opposite effect.
Hopefully makes progress on addressing http://opensimulator.org/mantis/view.php?id=5872
2012-02-16 00:22:39 +00:00
Justin Clark-Casey (justincc)
f574d3c8fc Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-15 01:50:57 +00:00
Justin Clark-Casey (justincc)
ebe5e1731d In ObjectTortureTests, run garbage collector on Teardown and run scene loop update when scene objects have been deleted.
At least on mono 2.6.4, running GC.Collect() is not guaranteed to force gc of all objects when run in the same method where those objects had references.
Therefore, GC.Collect() is now being done in the per-script teardown of ObjectTortureTests.
In addition, scene loop update is being run after garbage collection in order to clean out the viewer update list of scene objects in the SceneGraph.
These measures mean that scene objects/parts are now garbage collected after a test run if deleted from the scene, resulting in a much better memory usage report (though probably still not very accurate).
However, deletion takes a very long time - what's really needed is to find out now why the entire scene isn't being GC'd by this measure.
This change hasn't yet been applied to the other stress tests.
2012-02-15 01:45:25 +00:00
Dan Lake
2ebb421331 Refactor appearance saving for NPC to use AvatarFactoryModule interface. 2012-02-14 17:20:34 -08:00
Mic Bowman
a9e8bd59a3 Fix a race condition in the simian groups connector. When requests were
too slow they would circumvent the cache (piling up on the network service
and making the problem even worse). This condition happens frequently
during permission checks.
2012-02-13 19:38:22 -08:00
PixelTomsen
4589ce61bc Fix: get embedded objects from Notecard fails with activated FreeSwitchVoiceModul
http://opensimulator.org/mantis/view.php?id=2607
2012-02-14 02:12:12 +00:00
PixelTomsen
33e66107be Fix: Lightshare Module(Windlight)-Region settings are not applicable for database sqlite mantis: http://opensimulator.org/mantis/view.php?id=5888 2012-02-14 02:06:42 +00:00
PixelTomsen
db90dea9bd Fix: MSSQLDB Grid - unable to register region http://opensimulator.org/mantis/view.php?id=5886 2012-02-14 02:04:02 +00:00
Justin Clark-Casey (justincc)
04544b4510 Revert "Add GridStore migration for MSSQL."
This reverts commit 0b17a66e68.
2012-02-14 02:03:23 +00:00
Justin Clark-Casey (justincc)
0b17a66e68 Add GridStore migration for MSSQL.
This is done blind since I don't use MSSQL.  If this doesn't work, then one will have to wait for it to be updated for the 0.7.3 opensim release.
2012-02-14 02:02:11 +00:00
Justin Clark-Casey (justincc)
04986bbb15 Add some more data to the new user connection logging for debug purposes. 2012-02-14 01:50:51 +00:00
Justin Clark-Casey (justincc)
b0d02adeee Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-14 00:01:24 +00:00
Justin Clark-Casey (justincc)
48b962c401 Update [XEngine] AppDomainLoading advice in OpenSim.ini.example 2012-02-14 00:00:49 +00:00
Mic Bowman
04a195266b short circuit the expensive parts of the permission checking code
if the current user is the owner of an object. none of the later
checks can reverse the outcome.
2012-02-13 13:21:42 -08:00
Justin Clark-Casey (justincc)
21393af631 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-13 20:48:50 +00:00
Justin Clark-Casey (justincc)
189c67db95 On object deserialization, go back to logging errors at DEBUG level rather than ERROR. Restore extra log message if shape processing fails.
Logging level was DEBUG before 312e145 (Fri Feb 3 2012).
312e145 also accidentally removed the 'general error' log message if any shape deserialization failed.
This commit restores it, though this has no functional impact.
2012-02-13 20:43:26 +00:00
Justin Clark-Casey (justincc)
b92b9228ef correct the default avatar_terminal_velocity value that I accidentally left in whilst testing 2012-02-11 02:29:07 +00:00
Justin Clark-Casey (justincc)
f49897a419 Clamp ODE character velocity. Make ODE falling character 54m/s by default.
If velocity reaches 256 in any vector then bad things happen with ODE, so we now clamp this value.
In addition, a falling avatar is clamped by default at 54 m/s, which is the same as a falling skydiver.
This also appears to be the value used on the linden lab grid.
This should resolve http://opensimulator.org/mantis/view.php?id=5882
2012-02-11 02:28:40 +00:00
Justin Clark-Casey (justincc)
aab30f5e67 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2012-02-11 00:11:28 +00:00
Justin Clark-Casey (justincc)
e7fd732209 Make ScenePresence.MovementFlag a private only settable value to reduce complexity of code analysis 2012-02-11 00:10:59 +00:00
1463 changed files with 218086 additions and 108128 deletions

18
.gitignore vendored
View File

@@ -10,6 +10,12 @@
*.pidb
*.dll.build
*.dll
# Ignore .user and .suo files as these are user preference specific
# http://stackoverflow.com/questions/72298/should-i-add-the-visual-studio-suo-and-user-files-to-source-control
*.suo
*.user
*.VisualState.xml
*/*/obj
*/*/*/obj
@@ -26,9 +32,14 @@
bin/Debug/*.dll
bin/*.dll.mdb
bin/*.db
bin/*.db-journal
bin/addin-db-*
bin/*.dll
bin/OpenSim.vshost.exe.config
bin/OpenSim.32BitLaunch.vshost.exe.config
bin/OpenSim.32BitLaunch.log
UpgradeLog.XML
_UpgradeReport_Files/
bin/ScriptEngines/*-*-*-*-*
bin/ScriptEngines/*.dll
bin/ScriptEngines/*/*.dll
@@ -41,6 +52,9 @@ bin/Physics*
bin/Terrain*
bin/Regions/*
bin/UserAssets
bin/assetcache
bin/maptiles
bin/bakes
bin/estate_settings.xml
bin/config-include/CenomeCache.ini
bin/config-include/FlotsamCache.ini
@@ -58,7 +72,7 @@ bin/crashes/
Examples/*.dll
OpenSim.build
OpenSim.sln
OpenSim.suo
OpenSim.userprefs
Prebuild/Prebuild.build
Prebuild/Prebuild.sln
TestResult.xml
@@ -87,3 +101,5 @@ OpenSim/Region/ScriptEngine/test-results/
OpenSim/Tests/Common/test-results/
OpenSim/Tests/test-results/
test-results/
doc/html
doc/doxygen.error.log

View File

@@ -2,13 +2,37 @@
<!-- please leave the top comment for us emacs folks -->
<property name="nunitcmd" value="nunit-console" />
<!-- For safety/laziness sake, we're going to take the approach of deleting known extraneous files here rather than
trying to copy across only the essential ones -->
<property name="distbindir" value="distbin" />
<target name="distbin">
<!-- This target produces a source distribution of OpenSimulator -->
<!-- TODO: A few parameters still need to be tweaked after running this - need to do this automatically with sed or similar -->
<target name="distsrc">
<copy file="bin/OpenSim.ini.example" tofile="bin/OpenSim.ini"/>
<copy file="bin/config-include/StandaloneCommon.ini.example" tofile="bin/config-include/StandaloneCommon.ini"/>
<copy file="bin/config-include/FlotsamCache.ini.example" tofile="bin/config-include/FlotsamCache.ini"/>
<!-- delete files generated by runprebuild.sh which had to be run in order to generate the build file for this target-->
<delete>
<fileset basedir="OpenSim">
<include name="**/*.build"/>
<include name="**/*.csproj*"/>
<include name="**/*.dll.build"/>
<include name="**/*.pidb"/>
<exclude name="Tools/OpenSim.32BitLaunch/**"/>
<exclude name="Tools/Robust.32BitLaunch/**"/>
<exclude name="Tools/LaunchSLClient/**"/>
</fileset>
</delete>
<delete>
<fileset>
<include name="OpenSim.build"/>
<include name="OpenSim.sln"/>
</fileset>
</delete>
</target>
<property name="distbindir" value="distbin" />
<!-- This target produces a binary directory called distbin/ in OpenSim/bin which contains everything needed for binary distribution -->
<!-- For safety/laziness sake, we're going to take the approach of deleting known extraneous files here rather than
trying to copy across only the essential ones -->
<target name="distbin">
<delete dir="${distbindir}"/>
<copy todir="${distbindir}">
<fileset>
@@ -19,10 +43,11 @@
<delete dir="${distbindir}/Prebuild"/>
<delete dir="${distbindir}/%temp%"/>
<delete dir="${distbindir}/.nant"/>
<delete dir="${distbindir}/ThirdParty"/>
<delete>
<fileset basedir="${distbindir}">
<include name="compile.bat"/>
<include name="BUILDING.txt"/>
<include name="BUILDING.md"/>
<include name="Makefile"/>
<include name="nant-color"/>
<include name="OpenSim.*"/>
@@ -108,17 +133,38 @@
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.server.handlers.tests">
<arg value="./bin/OpenSim.Server.Handlers.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.server.handlers.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.services.inventoryservice.tests">
<arg value="./bin/OpenSim.Services.InventoryService.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.services.inventoryservice.tests)==0}" />
<delete dir="%temp%"/>
</target>
<target name="torture" depends="build, find-nunit">
<target name="test-stress" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests.torture">
<arg value="./bin/OpenSim.Tests.Torture.dll" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests.stress">
<arg value="./bin/OpenSim.Tests.Stress.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.tests.torture)==0}" />
<fail message="Failures reported in stress tests." unless="${int::parse(testresult.opensim.tests.stress)==0}" />
<delete dir="%temp%"/>
</target>
<target name="test-perf" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests.performance">
<arg value="./bin/OpenSim.Tests.Performance.dll" />
</exec>
<fail message="Failures reported in performance tests." unless="${int::parse(testresult.opensim.tests.performance)==0}" />
<delete dir="%temp%"/>
</target>
@@ -200,6 +246,16 @@
<arg value="-xml=test-results/OpenSim.Capabilities.Handlers.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.server.handlers.tests">
<arg value="./bin/OpenSim.Server.Handlers.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Server.Handlers.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.services.inventoryservice.tests">
<arg value="./bin/OpenSim.Services.InventoryService.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Services.InventoryService.Tests.dll-Results.xml" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" />
@@ -210,6 +266,7 @@
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.services.inventoryservice.tests)==0}" />
</target>
<target name="doxygen">

40
BUILDING.md Normal file
View File

@@ -0,0 +1,40 @@
# Building on Windows
Steps:
* runprebuild.bat
* Load OpenSim.sln into Visual Studio .NET and build the solution.
* chdir bin
* copy OpenSim.ini.example to OpenSim.ini and other appropriate files in bin/config-include
* run OpenSim.exe
# Building on Linux
Prereqs:
* Mono >= 2.4.3
* Nant >= 0.85
* On some Linux distributions you may need to install additional packages.
See http://opensimulator.org/wiki/Dependencies for more information.
* May also use xbuild (included in mono distributions)
* May use Monodevelop, a cross-platform IDE
From the distribution type:
* ./runprebuild.sh
* nant (or !* xbuild)
* cd bin
* copy OpenSim.ini.example to OpenSim.ini and other appropriate files in bin/config-include
* run mono OpenSim.exe
!* xbuild option switches
!* clean: xbuild /target:clean
!* debug: (default) xbuild /property:Configuration=Debug
!* release: xbuild /property:Configuration=Release
# Using Monodevelop
From the distribution type:
* ./runprebuild.sh
* type monodevelop OpenSim.sln
# References
Helpful resources:
* http://opensimulator.org/wiki/Build_Instructions

View File

@@ -1,39 +0,0 @@
==== Building OpenSim ====
=== Building on Windows ===
Steps:
* runprebuild.bat
* Load OpenSim.sln into Visual Studio .NET and build the solution.
* chdir bin
* copy OpenSim.ini.example to OpenSim.ini and other appropriate files in bin/config-include
* run OpenSim.exe
=== Building on Linux ===
Prereqs:
* Mono >= 2.4.3
* Nant >= 0.85
* On some Linux distributions you may need to install additional packages.
See http://opensimulator.org/wiki/Dependencies for more information.
* May also use xbuild (included in mono distributions)
* May use Monodevelop, a cross-platform IDE
From the distribution type:
* ./runprebuild.sh
* nant (or xbuild)
* cd bin
* copy OpenSim.ini.example to OpenSim.ini and other appropriate files in bin/config-include
* run mono OpenSim.exe
=== Using Monodevelop ===
From the distribution type:
* ./runprebuild.sh
* type monodevelop OpenSim.sln
=== References ===
Helpful resources:
* http://opensimulator.org/wiki/Build_Instructions

View File

@@ -1,5 +1,4 @@
The following people have contributed to OpenSim (Thank you
for your effort!)
The following people have contributed to OpenSim (Thank you for your effort!)
= Current OpenSim Developers (in very rough order of appearance) =
These folks represent the current core team for OpenSim, and are the
@@ -7,16 +6,18 @@ people that make the day to day of OpenSim happen.
* justincc (OSVW Consulting, justincc.org)
* chi11ken (Genkii)
* dahlia
* dahlia
* Melanie Thielker
* Diva (Crista Lopes, University of California, Irvine)
* Dan Lake (Intel)
* Dan Lake
* Marck
* Mic Bowman (Intel)
* Mic Bowman
* BlueWall (James Hughes)
* Nebadon Izumi (Michael Cerquoni, OSgrid)
* Snoopy Pfeffer
* Richard Adams (Intel)
* Robert Adams
* Oren Hurvitz (Kitely)
* Kevin Cozens
= Core Developers Following the White Rabbit =
Core developers who have temporarily (we hope) gone chasing the white rabbit.
@@ -58,62 +59,85 @@ where we are today.
= Additional OpenSim Contributors =
These folks have contributed code patches to OpenSim to help make it
These folks have contributed code patches or content to OpenSimulator to help make it
what it is today.
* aduffy70
* A_Biondi
* aduffy70
* Ai Austin
* alex_carnell
* Alan Webb (IBM)
* Aleric
* Alicia Raven
* Allen Kerensky
* BigFootAg
* BlueWall Slade
* brianw/Sir_Ahzz
* CharlieO
* ChrisDown
* Chris Yeoh (IBM)
* controlbreak
* coyled
* ctrlaltdavid (David Rowe)
* Daedius
* Dong Jun Lan (IBM)
* DoranZemlja
* daTwitch
* Dev Random
* devalnor-#708
* dmiles (Daxtron Labs)
* dslake (Intel)
* Dong Jun Lan (IBM)
* DoranZemlja
* dr0b3rts
* dslake
* FredoChaplin
* Garmin Kawaguichi
* Gerhard
* Godfrey
* Greg C.
* Grumly57
* GuduleLapointe
* Ewe Loon
* Fernando Oliveira
* Fly-Man
* Flyte Xevious
* Garmin Kawaguichi
* Gryc Ueusp
* H-H-H (ginge264)
* Hiro Lecker
* Iain Oliver
* Imaze Rhiano
* Intimidated
* Jak Daniels
* Jeremy Bongio (IBM)
* jhurliman
* John R Sohn (XenReborn)
* jonc
* Jon Cundill
* Junta Kohime
* Kayne
* Kevin Cozens
* kinoc (Daxtron Labs)
* Kira
* Kitto Flora
* KittyLiu
* Kurt Taylor (IBM)
* Lani Global
* lillith_xue
* lkalif
* LuciusSirnah
* lulurun
* M.Igarashi
* maimedleech
* Mana Janus
* MarcelEdward
* Matt Lehmann
* Mic Bowman
* Michelle Argus
* Michael Cortez (The Flotsam Project, http://osflotsam.org/)
* Micheil Merlin
* Mike Osias (IBM)
* Mike Pitman (IBM)
* mikemig
* mikkopa/_someone - RealXtend
* Misterblue (Intel)
* Misterblue
* Mircea Kitsune
* mpallari
* MrMonkE
@@ -122,7 +146,6 @@ what it is today.
* nornalbion
* Omar Vera Ustariz (IBM)
* openlifegrid.com
* Oren Hurvitz (Kitely)
* otakup0pe
* Pixel Tomsen
* ralphos
@@ -131,52 +154,57 @@ what it is today.
* Richard Alimi (IBM)
* Rick Alther (IBM)
* Rob Smart (IBM)
* Roger Kirkman (zadark)
* rtomita
* Ruud Lathorp
* SachaMagne
* Salahzar Stenvaag
* satguru p srivastava
* sempuki
* SignpostMarv
* SpotOn3D
* Stefan_Boom / stoehr
* Strawberry Fride
* Talun
* TechplexEngineer (Blake Bourque)
* TBG Renfold
* tglion
* tlaukkan/Tommil (Tommi S. E. Laukkanen, Bubble Cloud)
* tyre
* Vegaslon <vegaslon@gmail.com>
* VikingErik
* Vytek
* webmage (IBM)
* Xantor
* Y. Nitta
* YoshikoFazuku
* YZh
* Zackary Geers aka Kunnis Basiat
* Zha Ewry
* ziah
= LSL Devs =
* Alondria
* CharlieO
* Tedd
* Melanie Thielker
= Testers =
* Ai Austin
* CharlieO (LSL)
* Ckrinke
* openlifegrid.com
This software uses components from the following developers:
* Sleepycat Software (Berkeley DB)
* Aurora-Sim (http://aurora-sim.org)
* SQLite (Public Domain)
* XmlRpcCS (http://xmlrpccs.sf.net/)
* MySQL, Inc. (MySQL Connector/NET)
* NUnit (http://www.nunit.org)
* AGEIA Inc. (PhysX)
* Russel L. Smith (ODE)
* Erwin Coumans (Bullet)
* Prebuild (http://sourceforge.net/projects/dnpb/)
* LibOpenMetaverse (http://lib.openmetaverse.org/)
* DotNetOpenMail v0.5.8b (http://dotnetopenmail.sourceforge.net)

View File

@@ -0,0 +1,77 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Groups
{
public class ForeignImporter
{
IUserManagement m_UserManagement;
public ForeignImporter(IUserManagement uman)
{
m_UserManagement = uman;
}
public GroupMembersData ConvertGroupMembersData(ExtendedGroupMembersData _m)
{
GroupMembersData m = new GroupMembersData();
m.AcceptNotices = _m.AcceptNotices;
m.AgentPowers = _m.AgentPowers;
m.Contribution = _m.Contribution;
m.IsOwner = _m.IsOwner;
m.ListInProfile = _m.ListInProfile;
m.OnlineStatus = _m.OnlineStatus;
m.Title = _m.Title;
string url = string.Empty, first = string.Empty, last = string.Empty, tmp = string.Empty;
Util.ParseUniversalUserIdentifier(_m.AgentID, out m.AgentID, out url, out first, out last, out tmp);
if (url != string.Empty)
m_UserManagement.AddUser(m.AgentID, first, last, url);
return m;
}
public GroupRoleMembersData ConvertGroupRoleMembersData(ExtendedGroupRoleMembersData _rm)
{
GroupRoleMembersData rm = new GroupRoleMembersData();
rm.RoleID = _rm.RoleID;
string url = string.Empty, first = string.Empty, last = string.Empty, tmp = string.Empty;
Util.ParseUniversalUserIdentifier(_rm.MemberID, out rm.MemberID, out url, out first, out last, out tmp);
if (url != string.Empty)
m_UserManagement.AddUser(rm.MemberID, first, last, url);
return rm;
}
}
}

View File

@@ -0,0 +1,533 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenSim.Framework;
using OpenMetaverse;
namespace OpenSim.Groups
{
public class ExtendedGroupRecord : GroupRecord
{
public int MemberCount;
public int RoleCount;
public string ServiceLocation;
public string FounderUUI;
}
public class ExtendedGroupMembershipData : GroupMembershipData
{
public string AccessToken;
}
public class ExtendedGroupMembersData
{
// This is the only difference: this is a string
public string AgentID;
public int Contribution;
public string OnlineStatus;
public ulong AgentPowers;
public string Title;
public bool IsOwner;
public bool ListInProfile;
public bool AcceptNotices;
public string AccessToken;
}
public class ExtendedGroupRoleMembersData
{
public UUID RoleID;
// This is the only difference: this is a string
public string MemberID;
}
public struct ExtendedGroupNoticeData
{
public UUID NoticeID;
public uint Timestamp;
public string FromName;
public string Subject;
public bool HasAttachment;
public byte AttachmentType;
public string AttachmentName;
public UUID AttachmentItemID;
public string AttachmentOwnerID;
public GroupNoticeData ToGroupNoticeData()
{
GroupNoticeData n = new GroupNoticeData();
n.FromName = this.FromName;
n.AssetType = this.AttachmentType;
n.HasAttachment = this.HasAttachment;
n.NoticeID = this.NoticeID;
n.Subject = this.Subject;
n.Timestamp = this.Timestamp;
return n;
}
}
public class GroupsDataUtils
{
public static string Sanitize(string s)
{
return s == null ? string.Empty : s;
}
public static Dictionary<string, object> GroupRecord(ExtendedGroupRecord grec)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
if (grec == null)
return dict;
dict["AllowPublish"] = grec.AllowPublish.ToString();
dict["Charter"] = Sanitize(grec.Charter);
dict["FounderID"] = grec.FounderID.ToString();
dict["FounderUUI"] = Sanitize(grec.FounderUUI);
dict["GroupID"] = grec.GroupID.ToString();
dict["GroupName"] = Sanitize(grec.GroupName);
dict["InsigniaID"] = grec.GroupPicture.ToString();
dict["MaturePublish"] = grec.MaturePublish.ToString();
dict["MembershipFee"] = grec.MembershipFee.ToString();
dict["OpenEnrollment"] = grec.OpenEnrollment.ToString();
dict["OwnerRoleID"] = grec.OwnerRoleID.ToString();
dict["ServiceLocation"] = Sanitize(grec.ServiceLocation);
dict["ShownInList"] = grec.ShowInList.ToString();
dict["MemberCount"] = grec.MemberCount.ToString();
dict["RoleCount"] = grec.RoleCount.ToString();
return dict;
}
public static ExtendedGroupRecord GroupRecord(Dictionary<string, object> dict)
{
if (dict == null)
return null;
ExtendedGroupRecord grec = new ExtendedGroupRecord();
if (dict.ContainsKey("AllowPublish") && dict["AllowPublish"] != null)
grec.AllowPublish = bool.Parse(dict["AllowPublish"].ToString());
if (dict.ContainsKey("Charter") && dict["Charter"] != null)
grec.Charter = dict["Charter"].ToString();
else
grec.Charter = string.Empty;
if (dict.ContainsKey("FounderID") && dict["FounderID"] != null)
grec.FounderID = UUID.Parse(dict["FounderID"].ToString());
if (dict.ContainsKey("FounderUUI") && dict["FounderUUI"] != null)
grec.FounderUUI = dict["FounderUUI"].ToString();
else
grec.FounderUUI = string.Empty;
if (dict.ContainsKey("GroupID") && dict["GroupID"] != null)
grec.GroupID = UUID.Parse(dict["GroupID"].ToString());
if (dict.ContainsKey("GroupName") && dict["GroupName"] != null)
grec.GroupName = dict["GroupName"].ToString();
else
grec.GroupName = string.Empty;
if (dict.ContainsKey("InsigniaID") && dict["InsigniaID"] != null)
grec.GroupPicture = UUID.Parse(dict["InsigniaID"].ToString());
if (dict.ContainsKey("MaturePublish") && dict["MaturePublish"] != null)
grec.MaturePublish = bool.Parse(dict["MaturePublish"].ToString());
if (dict.ContainsKey("MembershipFee") && dict["MembershipFee"] != null)
grec.MembershipFee = Int32.Parse(dict["MembershipFee"].ToString());
if (dict.ContainsKey("OpenEnrollment") && dict["OpenEnrollment"] != null)
grec.OpenEnrollment = bool.Parse(dict["OpenEnrollment"].ToString());
if (dict.ContainsKey("OwnerRoleID") && dict["OwnerRoleID"] != null)
grec.OwnerRoleID = UUID.Parse(dict["OwnerRoleID"].ToString());
if (dict.ContainsKey("ServiceLocation") && dict["ServiceLocation"] != null)
grec.ServiceLocation = dict["ServiceLocation"].ToString();
else
grec.ServiceLocation = string.Empty;
if (dict.ContainsKey("ShownInList") && dict["ShownInList"] != null)
grec.ShowInList = bool.Parse(dict["ShownInList"].ToString());
if (dict.ContainsKey("MemberCount") && dict["MemberCount"] != null)
grec.MemberCount = Int32.Parse(dict["MemberCount"].ToString());
if (dict.ContainsKey("RoleCount") && dict["RoleCount"] != null)
grec.RoleCount = Int32.Parse(dict["RoleCount"].ToString());
return grec;
}
public static Dictionary<string, object> GroupMembershipData(ExtendedGroupMembershipData membership)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
if (membership == null)
return dict;
dict["AcceptNotices"] = membership.AcceptNotices.ToString();
dict["AccessToken"] = Sanitize(membership.AccessToken);
dict["Active"] = membership.Active.ToString();
dict["ActiveRole"] = membership.ActiveRole.ToString();
dict["AllowPublish"] = membership.AllowPublish.ToString();
dict["Charter"] = Sanitize(membership.Charter);
dict["Contribution"] = membership.Contribution.ToString();
dict["FounderID"] = membership.FounderID.ToString();
dict["GroupID"] = membership.GroupID.ToString();
dict["GroupName"] = Sanitize(membership.GroupName);
dict["GroupPicture"] = membership.GroupPicture.ToString();
dict["GroupPowers"] = membership.GroupPowers.ToString();
dict["GroupTitle"] = Sanitize(membership.GroupTitle);
dict["ListInProfile"] = membership.ListInProfile.ToString();
dict["MaturePublish"] = membership.MaturePublish.ToString();
dict["MembershipFee"] = membership.MembershipFee.ToString();
dict["OpenEnrollment"] = membership.OpenEnrollment.ToString();
dict["ShowInList"] = membership.ShowInList.ToString();
return dict;
}
public static ExtendedGroupMembershipData GroupMembershipData(Dictionary<string, object> dict)
{
if (dict == null)
return null;
ExtendedGroupMembershipData membership = new ExtendedGroupMembershipData();
if (dict.ContainsKey("AcceptNotices") && dict["AcceptNotices"] != null)
membership.AcceptNotices = bool.Parse(dict["AcceptNotices"].ToString());
if (dict.ContainsKey("AccessToken") && dict["AccessToken"] != null)
membership.AccessToken = dict["AccessToken"].ToString();
else
membership.AccessToken = string.Empty;
if (dict.ContainsKey("Active") && dict["Active"] != null)
membership.Active = bool.Parse(dict["Active"].ToString());
if (dict.ContainsKey("ActiveRole") && dict["ActiveRole"] != null)
membership.ActiveRole = UUID.Parse(dict["ActiveRole"].ToString());
if (dict.ContainsKey("AllowPublish") && dict["AllowPublish"] != null)
membership.AllowPublish = bool.Parse(dict["AllowPublish"].ToString());
if (dict.ContainsKey("Charter") && dict["Charter"] != null)
membership.Charter = dict["Charter"].ToString();
else
membership.Charter = string.Empty;
if (dict.ContainsKey("Contribution") && dict["Contribution"] != null)
membership.Contribution = Int32.Parse(dict["Contribution"].ToString());
if (dict.ContainsKey("FounderID") && dict["FounderID"] != null)
membership.FounderID = UUID.Parse(dict["FounderID"].ToString());
if (dict.ContainsKey("GroupID") && dict["GroupID"] != null)
membership.GroupID = UUID.Parse(dict["GroupID"].ToString());
if (dict.ContainsKey("GroupName") && dict["GroupName"] != null)
membership.GroupName = dict["GroupName"].ToString();
else
membership.GroupName = string.Empty;
if (dict.ContainsKey("GroupPicture") && dict["GroupPicture"] != null)
membership.GroupPicture = UUID.Parse(dict["GroupPicture"].ToString());
if (dict.ContainsKey("GroupPowers") && dict["GroupPowers"] != null)
membership.GroupPowers = UInt64.Parse(dict["GroupPowers"].ToString());
if (dict.ContainsKey("GroupTitle") && dict["GroupTitle"] != null)
membership.GroupTitle = dict["GroupTitle"].ToString();
else
membership.GroupTitle = string.Empty;
if (dict.ContainsKey("ListInProfile") && dict["ListInProfile"] != null)
membership.ListInProfile = bool.Parse(dict["ListInProfile"].ToString());
if (dict.ContainsKey("MaturePublish") && dict["MaturePublish"] != null)
membership.MaturePublish = bool.Parse(dict["MaturePublish"].ToString());
if (dict.ContainsKey("MembershipFee") && dict["MembershipFee"] != null)
membership.MembershipFee = Int32.Parse(dict["MembershipFee"].ToString());
if (dict.ContainsKey("OpenEnrollment") && dict["OpenEnrollment"] != null)
membership.OpenEnrollment = bool.Parse(dict["OpenEnrollment"].ToString());
if (dict.ContainsKey("ShowInList") && dict["ShowInList"] != null)
membership.ShowInList = bool.Parse(dict["ShowInList"].ToString());
return membership;
}
public static Dictionary<string, object> GroupMembersData(ExtendedGroupMembersData member)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
dict["AcceptNotices"] = member.AcceptNotices.ToString();
dict["AccessToken"] = Sanitize(member.AccessToken);
dict["AgentID"] = Sanitize(member.AgentID);
dict["AgentPowers"] = member.AgentPowers.ToString();
dict["Contribution"] = member.Contribution.ToString();
dict["IsOwner"] = member.IsOwner.ToString();
dict["ListInProfile"] = member.ListInProfile.ToString();
dict["OnlineStatus"] = Sanitize(member.OnlineStatus);
dict["Title"] = Sanitize(member.Title);
return dict;
}
public static ExtendedGroupMembersData GroupMembersData(Dictionary<string, object> dict)
{
ExtendedGroupMembersData member = new ExtendedGroupMembersData();
if (dict == null)
return member;
if (dict.ContainsKey("AcceptNotices") && dict["AcceptNotices"] != null)
member.AcceptNotices = bool.Parse(dict["AcceptNotices"].ToString());
if (dict.ContainsKey("AccessToken") && dict["AccessToken"] != null)
member.AccessToken = Sanitize(dict["AccessToken"].ToString());
else
member.AccessToken = string.Empty;
if (dict.ContainsKey("AgentID") && dict["AgentID"] != null)
member.AgentID = Sanitize(dict["AgentID"].ToString());
else
member.AgentID = UUID.Zero.ToString();
if (dict.ContainsKey("AgentPowers") && dict["AgentPowers"] != null)
member.AgentPowers = UInt64.Parse(dict["AgentPowers"].ToString());
if (dict.ContainsKey("Contribution") && dict["Contribution"] != null)
member.Contribution = Int32.Parse(dict["Contribution"].ToString());
if (dict.ContainsKey("IsOwner") && dict["IsOwner"] != null)
member.IsOwner = bool.Parse(dict["IsOwner"].ToString());
if (dict.ContainsKey("ListInProfile") && dict["ListInProfile"] != null)
member.ListInProfile = bool.Parse(dict["ListInProfile"].ToString());
if (dict.ContainsKey("OnlineStatus") && dict["OnlineStatus"] != null)
member.OnlineStatus = Sanitize(dict["OnlineStatus"].ToString());
else
member.OnlineStatus = string.Empty;
if (dict.ContainsKey("Title") && dict["Title"] != null)
member.Title = Sanitize(dict["Title"].ToString());
else
member.Title = string.Empty;
return member;
}
public static Dictionary<string, object> GroupRolesData(GroupRolesData role)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
dict["Description"] = Sanitize(role.Description);
dict["Members"] = role.Members.ToString();
dict["Name"] = Sanitize(role.Name);
dict["Powers"] = role.Powers.ToString();
dict["RoleID"] = role.RoleID.ToString();
dict["Title"] = Sanitize(role.Title);
return dict;
}
public static GroupRolesData GroupRolesData(Dictionary<string, object> dict)
{
GroupRolesData role = new GroupRolesData();
if (dict == null)
return role;
if (dict.ContainsKey("Description") && dict["Description"] != null)
role.Description = Sanitize(dict["Description"].ToString());
else
role.Description = string.Empty;
if (dict.ContainsKey("Members") && dict["Members"] != null)
role.Members = Int32.Parse(dict["Members"].ToString());
if (dict.ContainsKey("Name") && dict["Name"] != null)
role.Name = Sanitize(dict["Name"].ToString());
else
role.Name = string.Empty;
if (dict.ContainsKey("Powers") && dict["Powers"] != null)
role.Powers = UInt64.Parse(dict["Powers"].ToString());
if (dict.ContainsKey("Title") && dict["Title"] != null)
role.Title = Sanitize(dict["Title"].ToString());
else
role.Title = string.Empty;
if (dict.ContainsKey("RoleID") && dict["RoleID"] != null)
role.RoleID = UUID.Parse(dict["RoleID"].ToString());
return role;
}
public static Dictionary<string, object> GroupRoleMembersData(ExtendedGroupRoleMembersData rmember)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
dict["RoleID"] = rmember.RoleID.ToString();
dict["MemberID"] = rmember.MemberID;
return dict;
}
public static ExtendedGroupRoleMembersData GroupRoleMembersData(Dictionary<string, object> dict)
{
ExtendedGroupRoleMembersData rmember = new ExtendedGroupRoleMembersData();
if (dict.ContainsKey("RoleID") && dict["RoleID"] != null)
rmember.RoleID = new UUID(dict["RoleID"].ToString());
if (dict.ContainsKey("MemberID") && dict["MemberID"] != null)
rmember.MemberID = dict["MemberID"].ToString();
return rmember;
}
public static Dictionary<string, object> GroupInviteInfo(GroupInviteInfo invite)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
dict["InviteID"] = invite.InviteID.ToString();
dict["GroupID"] = invite.GroupID.ToString();
dict["RoleID"] = invite.RoleID.ToString();
dict["AgentID"] = invite.AgentID;
return dict;
}
public static GroupInviteInfo GroupInviteInfo(Dictionary<string, object> dict)
{
if (dict == null)
return null;
GroupInviteInfo invite = new GroupInviteInfo();
invite.InviteID = new UUID(dict["InviteID"].ToString());
invite.GroupID = new UUID(dict["GroupID"].ToString());
invite.RoleID = new UUID(dict["RoleID"].ToString());
invite.AgentID = Sanitize(dict["AgentID"].ToString());
return invite;
}
public static Dictionary<string, object> GroupNoticeData(ExtendedGroupNoticeData notice)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
dict["NoticeID"] = notice.NoticeID.ToString();
dict["Timestamp"] = notice.Timestamp.ToString();
dict["FromName"] = Sanitize(notice.FromName);
dict["Subject"] = Sanitize(notice.Subject);
dict["HasAttachment"] = notice.HasAttachment.ToString();
dict["AttachmentItemID"] = notice.AttachmentItemID.ToString();
dict["AttachmentName"] = Sanitize(notice.AttachmentName);
dict["AttachmentType"] = notice.AttachmentType.ToString();
dict["AttachmentOwnerID"] = Sanitize(notice.AttachmentOwnerID);
return dict;
}
public static ExtendedGroupNoticeData GroupNoticeData(Dictionary<string, object> dict)
{
ExtendedGroupNoticeData notice = new ExtendedGroupNoticeData();
if (dict == null)
return notice;
notice.NoticeID = new UUID(dict["NoticeID"].ToString());
notice.Timestamp = UInt32.Parse(dict["Timestamp"].ToString());
notice.FromName = Sanitize(dict["FromName"].ToString());
notice.Subject = Sanitize(dict["Subject"].ToString());
notice.HasAttachment = bool.Parse(dict["HasAttachment"].ToString());
notice.AttachmentItemID = new UUID(dict["AttachmentItemID"].ToString());
notice.AttachmentName = dict["AttachmentName"].ToString();
notice.AttachmentType = byte.Parse(dict["AttachmentType"].ToString());
notice.AttachmentOwnerID = dict["AttachmentOwnerID"].ToString();
return notice;
}
public static Dictionary<string, object> GroupNoticeInfo(GroupNoticeInfo notice)
{
Dictionary<string, object> dict = GroupNoticeData(notice.noticeData);
dict["GroupID"] = notice.GroupID.ToString();
dict["Message"] = Sanitize(notice.Message);
return dict;
}
public static GroupNoticeInfo GroupNoticeInfo(Dictionary<string, object> dict)
{
GroupNoticeInfo notice = new GroupNoticeInfo();
notice.noticeData = GroupNoticeData(dict);
notice.GroupID = new UUID(dict["GroupID"].ToString());
notice.Message = Sanitize(dict["Message"].ToString());
return notice;
}
public static Dictionary<string, object> DirGroupsReplyData(DirGroupsReplyData g)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
dict["GroupID"] = g.groupID;
dict["Name"] = g.groupName;
dict["NMembers"] = g.members;
dict["SearchOrder"] = g.searchOrder;
return dict;
}
public static DirGroupsReplyData DirGroupsReplyData(Dictionary<string, object> dict)
{
DirGroupsReplyData g;
g.groupID = new UUID(dict["GroupID"].ToString());
g.groupName = dict["Name"].ToString();
Int32.TryParse(dict["NMembers"].ToString(), out g.members);
float.TryParse(dict["SearchOrder"].ToString(), out g.searchOrder);
return g;
}
}
}

View File

@@ -0,0 +1,848 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using log4net;
using Mono.Addins;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
namespace OpenSim.Groups
{
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "GroupsMessagingModule")]
public class GroupsMessagingModule : ISharedRegionModule, IGroupsMessagingModule
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private List<Scene> m_sceneList = new List<Scene>();
private IPresenceService m_presenceService;
private IMessageTransferModule m_msgTransferModule = null;
private IUserManagement m_UserManagement = null;
private IGroupsServicesConnector m_groupData = null;
// Config Options
private bool m_groupMessagingEnabled;
private bool m_debugEnabled;
/// <summary>
/// If enabled, module only tries to send group IMs to online users by querying cached presence information.
/// </summary>
private bool m_messageOnlineAgentsOnly;
/// <summary>
/// Cache for online users.
/// </summary>
/// <remarks>
/// Group ID is key, presence information for online members is value.
/// Will only be non-null if m_messageOnlineAgentsOnly = true
/// We cache here so that group messages don't constantly have to re-request the online user list to avoid
/// attempted expensive sending of messages to offline users.
/// The tradeoff is that a user that comes online will not receive messages consistently from all other users
/// until caches have updated.
/// Therefore, we set the cache expiry to just 20 seconds.
/// </remarks>
private ExpiringCache<UUID, PresenceInfo[]> m_usersOnlineCache;
private int m_usersOnlineCacheExpirySeconds = 20;
private Dictionary<UUID, List<string>> m_groupsAgentsDroppedFromChatSession = new Dictionary<UUID, List<string>>();
private Dictionary<UUID, List<string>> m_groupsAgentsInvitedToChatSession = new Dictionary<UUID, List<string>>();
#region Region Module interfaceBase Members
public void Initialise(IConfigSource config)
{
IConfig groupsConfig = config.Configs["Groups"];
if (groupsConfig == null)
// Do not run this module by default.
return;
// if groups aren't enabled, we're not needed.
// if we're not specified as the connector to use, then we're not wanted
if ((groupsConfig.GetBoolean("Enabled", false) == false)
|| (groupsConfig.GetString("MessagingModule", "") != Name))
{
m_groupMessagingEnabled = false;
return;
}
m_groupMessagingEnabled = groupsConfig.GetBoolean("MessagingEnabled", true);
if (!m_groupMessagingEnabled)
return;
m_messageOnlineAgentsOnly = groupsConfig.GetBoolean("MessageOnlineUsersOnly", false);
if (m_messageOnlineAgentsOnly)
{
m_usersOnlineCache = new ExpiringCache<UUID, PresenceInfo[]>();
}
else
{
m_log.Error("[Groups.Messaging]: GroupsMessagingModule V2 requires MessageOnlineUsersOnly = true");
m_groupMessagingEnabled = false;
return;
}
m_debugEnabled = groupsConfig.GetBoolean("MessagingDebugEnabled", m_debugEnabled);
m_log.InfoFormat(
"[Groups.Messaging]: GroupsMessagingModule enabled with MessageOnlineOnly = {0}, DebugEnabled = {1}",
m_messageOnlineAgentsOnly, m_debugEnabled);
}
public void AddRegion(Scene scene)
{
if (!m_groupMessagingEnabled)
return;
scene.RegisterModuleInterface<IGroupsMessagingModule>(this);
m_sceneList.Add(scene);
scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnMakeRootAgent += OnMakeRootAgent;
scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
scene.EventManager.OnClientLogin += OnClientLogin;
scene.AddCommand(
"Debug",
this,
"debug groups messaging verbose",
"debug groups messaging verbose <true|false>",
"This setting turns on very verbose groups messaging debugging",
HandleDebugGroupsMessagingVerbose);
}
public void RegionLoaded(Scene scene)
{
if (!m_groupMessagingEnabled)
return;
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
m_groupData = scene.RequestModuleInterface<IGroupsServicesConnector>();
// No groups module, no groups messaging
if (m_groupData == null)
{
m_log.Error("[Groups.Messaging]: Could not get IGroupsServicesConnector, GroupsMessagingModule is now disabled.");
RemoveRegion(scene);
return;
}
m_msgTransferModule = scene.RequestModuleInterface<IMessageTransferModule>();
// No message transfer module, no groups messaging
if (m_msgTransferModule == null)
{
m_log.Error("[Groups.Messaging]: Could not get MessageTransferModule");
RemoveRegion(scene);
return;
}
m_UserManagement = scene.RequestModuleInterface<IUserManagement>();
// No groups module, no groups messaging
if (m_UserManagement == null)
{
m_log.Error("[Groups.Messaging]: Could not get IUserManagement, GroupsMessagingModule is now disabled.");
RemoveRegion(scene);
return;
}
if (m_presenceService == null)
m_presenceService = scene.PresenceService;
}
public void RemoveRegion(Scene scene)
{
if (!m_groupMessagingEnabled)
return;
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
m_sceneList.Remove(scene);
scene.EventManager.OnNewClient -= OnNewClient;
scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
scene.EventManager.OnClientLogin -= OnClientLogin;
scene.UnregisterModuleInterface<IGroupsMessagingModule>(this);
}
public void Close()
{
if (!m_groupMessagingEnabled)
return;
if (m_debugEnabled) m_log.Debug("[Groups.Messaging]: Shutting down GroupsMessagingModule module.");
m_sceneList.Clear();
m_groupData = null;
m_msgTransferModule = null;
}
public Type ReplaceableInterface
{
get { return null; }
}
public string Name
{
get { return "Groups Messaging Module V2"; }
}
public void PostInitialise()
{
// NoOp
}
#endregion
private void HandleDebugGroupsMessagingVerbose(object modules, string[] args)
{
if (args.Length < 5)
{
MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>");
return;
}
bool verbose = false;
if (!bool.TryParse(args[4], out verbose))
{
MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>");
return;
}
m_debugEnabled = verbose;
MainConsole.Instance.OutputFormat("{0} verbose logging set to {1}", Name, m_debugEnabled);
}
/// <summary>
/// Not really needed, but does confirm that the group exists.
/// </summary>
public bool StartGroupChatSession(UUID agentID, UUID groupID)
{
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
GroupRecord groupInfo = m_groupData.GetGroupRecord(agentID.ToString(), groupID, null);
if (groupInfo != null)
{
return true;
}
else
{
return false;
}
}
public void SendMessageToGroup(GridInstantMessage im, UUID groupID)
{
SendMessageToGroup(im, groupID, UUID.Zero, null);
}
public void SendMessageToGroup(
GridInstantMessage im, UUID groupID, UUID sendingAgentForGroupCalls, Func<GroupMembersData, bool> sendCondition)
{
int requestStartTick = Environment.TickCount;
UUID fromAgentID = new UUID(im.fromAgentID);
// Unlike current XmlRpcGroups, Groups V2 can accept UUID.Zero when a perms check for the requesting agent
// is not necessary.
List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(UUID.Zero.ToString(), groupID);
int groupMembersCount = groupMembers.Count;
PresenceInfo[] onlineAgents = null;
// In V2 we always only send to online members.
// Sending to offline members is not an option.
string[] t1 = groupMembers.ConvertAll<string>(gmd => gmd.AgentID.ToString()).ToArray();
// We cache in order not to overwhelm the presence service on large grids with many groups. This does
// mean that members coming online will not see all group members until after m_usersOnlineCacheExpirySeconds has elapsed.
// (assuming this is the same across all grid simulators).
if (!m_usersOnlineCache.TryGetValue(groupID, out onlineAgents))
{
onlineAgents = m_presenceService.GetAgents(t1);
m_usersOnlineCache.Add(groupID, onlineAgents, m_usersOnlineCacheExpirySeconds);
}
HashSet<string> onlineAgentsUuidSet = new HashSet<string>();
Array.ForEach<PresenceInfo>(onlineAgents, pi => onlineAgentsUuidSet.Add(pi.UserID));
groupMembers = groupMembers.Where(gmd => onlineAgentsUuidSet.Contains(gmd.AgentID.ToString())).ToList();
// if (m_debugEnabled)
// m_log.DebugFormat(
// "[Groups.Messaging]: SendMessageToGroup called for group {0} with {1} visible members, {2} online",
// groupID, groupMembersCount, groupMembers.Count());
im.imSessionID = groupID.Guid;
im.fromGroup = true;
IClientAPI thisClient = GetActiveClient(fromAgentID);
if (thisClient != null)
{
im.RegionID = thisClient.Scene.RegionInfo.RegionID.Guid;
}
if ((im.binaryBucket == null) || (im.binaryBucket.Length == 0) || ((im.binaryBucket.Length == 1 && im.binaryBucket[0] == 0)))
{
ExtendedGroupRecord groupInfo = m_groupData.GetGroupRecord(UUID.Zero.ToString(), groupID, null);
if (groupInfo != null)
im.binaryBucket = Util.StringToBytes256(groupInfo.GroupName);
}
// Send to self first of all
im.toAgentID = im.fromAgentID;
im.fromGroup = true;
ProcessMessageFromGroupSession(im);
List<UUID> regions = new List<UUID>();
List<UUID> clientsAlreadySent = new List<UUID>();
// Then send to everybody else
foreach (GroupMembersData member in groupMembers)
{
if (member.AgentID.Guid == im.fromAgentID)
continue;
if (clientsAlreadySent.Contains(member.AgentID))
continue;
clientsAlreadySent.Add(member.AgentID);
if (sendCondition != null)
{
if (!sendCondition(member))
{
if (m_debugEnabled)
m_log.DebugFormat(
"[Groups.Messaging]: Not sending to {0} as they do not fulfill send condition",
member.AgentID);
continue;
}
}
else if (hasAgentDroppedGroupChatSession(member.AgentID.ToString(), groupID))
{
// Don't deliver messages to people who have dropped this session
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: {0} has dropped session, not delivering to them", member.AgentID);
continue;
}
im.toAgentID = member.AgentID.Guid;
IClientAPI client = GetActiveClient(member.AgentID);
if (client == null)
{
// If they're not local, forward across the grid
// BUT do it only once per region, please! Sim would be even better!
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Delivering to {0} via Grid", member.AgentID);
bool reallySend = true;
if (onlineAgents != null)
{
PresenceInfo presence = onlineAgents.First(p => p.UserID == member.AgentID.ToString());
if (regions.Contains(presence.RegionID))
reallySend = false;
else
regions.Add(presence.RegionID);
}
if (reallySend)
{
// We have to create a new IM structure because the transfer module
// uses async send
GridInstantMessage msg = new GridInstantMessage(im, true);
m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { });
}
}
else
{
// Deliver locally, directly
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", client.Name);
ProcessMessageFromGroupSession(im);
}
}
if (m_debugEnabled)
m_log.DebugFormat(
"[Groups.Messaging]: SendMessageToGroup for group {0} with {1} visible members, {2} online took {3}ms",
groupID, groupMembersCount, groupMembers.Count(), Environment.TickCount - requestStartTick);
}
#region SimGridEventHandlers
void OnClientLogin(IClientAPI client)
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: OnInstantMessage registered for {0}", client.Name);
}
private void OnNewClient(IClientAPI client)
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: OnInstantMessage registered for {0}", client.Name);
ResetAgentGroupChatSessions(client.AgentId.ToString());
}
void OnMakeRootAgent(ScenePresence sp)
{
sp.ControllingClient.OnInstantMessage += OnInstantMessage;
}
void OnMakeChildAgent(ScenePresence sp)
{
sp.ControllingClient.OnInstantMessage -= OnInstantMessage;
}
private void OnGridInstantMessage(GridInstantMessage msg)
{
// The instant message module will only deliver messages of dialog types:
// MessageFromAgent, StartTyping, StopTyping, MessageFromObject
//
// Any other message type will not be delivered to a client by the
// Instant Message Module
UUID regionID = new UUID(msg.RegionID);
if (m_debugEnabled)
{
m_log.DebugFormat("[Groups.Messaging]: {0} called, IM from region {1}",
System.Reflection.MethodBase.GetCurrentMethod().Name, regionID);
DebugGridInstantMessage(msg);
}
// Incoming message from a group
if ((msg.fromGroup == true) && (msg.dialog == (byte)InstantMessageDialog.SessionSend))
{
// We have to redistribute the message across all members of the group who are here
// on this sim
UUID GroupID = new UUID(msg.imSessionID);
Scene aScene = m_sceneList[0];
GridRegion regionOfOrigin = aScene.GridService.GetRegionByUUID(aScene.RegionInfo.ScopeID, regionID);
List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(UUID.Zero.ToString(), GroupID);
//if (m_debugEnabled)
// foreach (GroupMembersData m in groupMembers)
// m_log.DebugFormat("[Groups.Messaging]: member {0}", m.AgentID);
foreach (Scene s in m_sceneList)
{
s.ForEachScenePresence(sp =>
{
// If we got this via grid messaging, it's because the caller thinks
// that the root agent is here. We should only send the IM to root agents.
if (sp.IsChildAgent)
return;
GroupMembersData m = groupMembers.Find(gmd =>
{
return gmd.AgentID == sp.UUID;
});
if (m.AgentID == UUID.Zero)
{
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: skipping agent {0} because he is not a member of the group", sp.UUID);
return;
}
// Check if the user has an agent in the region where
// the IM came from, and if so, skip it, because the IM
// was already sent via that agent
if (regionOfOrigin != null)
{
AgentCircuitData aCircuit = s.AuthenticateHandler.GetAgentCircuitData(sp.UUID);
if (aCircuit != null)
{
if (aCircuit.ChildrenCapSeeds.Keys.Contains(regionOfOrigin.RegionHandle))
{
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: skipping agent {0} because he has an agent in region of origin", sp.UUID);
return;
}
else
{
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: not skipping agent {0}", sp.UUID);
}
}
}
UUID AgentID = sp.UUID;
msg.toAgentID = AgentID.Guid;
if (!hasAgentDroppedGroupChatSession(AgentID.ToString(), GroupID))
{
if (!hasAgentBeenInvitedToGroupChatSession(AgentID.ToString(), GroupID))
AddAgentToSession(AgentID, GroupID, msg);
else
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", sp.Name);
ProcessMessageFromGroupSession(msg);
}
}
});
}
}
}
private void ProcessMessageFromGroupSession(GridInstantMessage msg)
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Session message from {0} going to agent {1}", msg.fromAgentName, msg.toAgentID);
UUID AgentID = new UUID(msg.fromAgentID);
UUID GroupID = new UUID(msg.imSessionID);
UUID toAgentID = new UUID(msg.toAgentID);
switch (msg.dialog)
{
case (byte)InstantMessageDialog.SessionAdd:
AgentInvitedToGroupChatSession(AgentID.ToString(), GroupID);
break;
case (byte)InstantMessageDialog.SessionDrop:
AgentDroppedFromGroupChatSession(AgentID.ToString(), GroupID);
break;
case (byte)InstantMessageDialog.SessionSend:
// User hasn't dropped, so they're in the session,
// maybe we should deliver it.
IClientAPI client = GetActiveClient(new UUID(msg.toAgentID));
if (client != null)
{
// Deliver locally, directly
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Delivering to {0} locally", client.Name);
if (!hasAgentDroppedGroupChatSession(toAgentID.ToString(), GroupID))
{
if (!hasAgentBeenInvitedToGroupChatSession(toAgentID.ToString(), GroupID))
// This actually sends the message too, so no need to resend it
// with client.SendInstantMessage
AddAgentToSession(toAgentID, GroupID, msg);
else
client.SendInstantMessage(msg);
}
}
else
{
m_log.WarnFormat("[Groups.Messaging]: Received a message over the grid for a client that isn't here: {0}", msg.toAgentID);
}
break;
default:
m_log.WarnFormat("[Groups.Messaging]: I don't know how to proccess a {0} message.", ((InstantMessageDialog)msg.dialog).ToString());
break;
}
}
private void AddAgentToSession(UUID AgentID, UUID GroupID, GridInstantMessage msg)
{
// Agent not in session and hasn't dropped from session
// Add them to the session for now, and Invite them
AgentInvitedToGroupChatSession(AgentID.ToString(), GroupID);
IClientAPI activeClient = GetActiveClient(AgentID);
if (activeClient != null)
{
GroupRecord groupInfo = m_groupData.GetGroupRecord(UUID.Zero.ToString(), GroupID, null);
if (groupInfo != null)
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Sending chatterbox invite instant message");
// Force? open the group session dialog???
// and simultanously deliver the message, so we don't need to do a seperate client.SendInstantMessage(msg);
IEventQueue eq = activeClient.Scene.RequestModuleInterface<IEventQueue>();
eq.ChatterboxInvitation(
GroupID
, groupInfo.GroupName
, new UUID(msg.fromAgentID)
, msg.message
, AgentID
, msg.fromAgentName
, msg.dialog
, msg.timestamp
, msg.offline == 1
, (int)msg.ParentEstateID
, msg.Position
, 1
, new UUID(msg.imSessionID)
, msg.fromGroup
, OpenMetaverse.Utils.StringToBytes(groupInfo.GroupName)
);
eq.ChatterBoxSessionAgentListUpdates(
new UUID(GroupID)
, AgentID
, new UUID(msg.toAgentID)
, false //canVoiceChat
, false //isModerator
, false //text mute
);
}
}
}
#endregion
#region ClientEvents
private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im)
{
if (m_debugEnabled)
{
m_log.DebugFormat("[Groups.Messaging]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
DebugGridInstantMessage(im);
}
// Start group IM session
if ((im.dialog == (byte)InstantMessageDialog.SessionGroupStart))
{
if (m_debugEnabled) m_log.InfoFormat("[Groups.Messaging]: imSessionID({0}) toAgentID({1})", im.imSessionID, im.toAgentID);
UUID GroupID = new UUID(im.imSessionID);
UUID AgentID = new UUID(im.fromAgentID);
GroupRecord groupInfo = m_groupData.GetGroupRecord(UUID.Zero.ToString(), GroupID, null);
if (groupInfo != null)
{
AgentInvitedToGroupChatSession(AgentID.ToString(), GroupID);
ChatterBoxSessionStartReplyViaCaps(remoteClient, groupInfo.GroupName, GroupID);
IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
queue.ChatterBoxSessionAgentListUpdates(
GroupID
, AgentID
, new UUID(im.toAgentID)
, false //canVoiceChat
, false //isModerator
, false //text mute
);
}
}
// Send a message from locally connected client to a group
if ((im.dialog == (byte)InstantMessageDialog.SessionSend))
{
UUID GroupID = new UUID(im.imSessionID);
UUID AgentID = new UUID(im.fromAgentID);
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: Send message to session for group {0} with session ID {1}", GroupID, im.imSessionID.ToString());
//If this agent is sending a message, then they want to be in the session
AgentInvitedToGroupChatSession(AgentID.ToString(), GroupID);
SendMessageToGroup(im, GroupID);
}
}
#endregion
void ChatterBoxSessionStartReplyViaCaps(IClientAPI remoteClient, string groupName, UUID groupID)
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
OSDMap moderatedMap = new OSDMap(4);
moderatedMap.Add("voice", OSD.FromBoolean(false));
OSDMap sessionMap = new OSDMap(4);
sessionMap.Add("moderated_mode", moderatedMap);
sessionMap.Add("session_name", OSD.FromString(groupName));
sessionMap.Add("type", OSD.FromInteger(0));
sessionMap.Add("voice_enabled", OSD.FromBoolean(false));
OSDMap bodyMap = new OSDMap(4);
bodyMap.Add("session_id", OSD.FromUUID(groupID));
bodyMap.Add("temp_session_id", OSD.FromUUID(groupID));
bodyMap.Add("success", OSD.FromBoolean(true));
bodyMap.Add("session_info", sessionMap);
IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
if (queue != null)
{
queue.Enqueue(queue.BuildEvent("ChatterBoxSessionStartReply", bodyMap), remoteClient.AgentId);
}
}
private void DebugGridInstantMessage(GridInstantMessage im)
{
// Don't log any normal IMs (privacy!)
if (m_debugEnabled && im.dialog != (byte)InstantMessageDialog.MessageFromAgent)
{
m_log.WarnFormat("[Groups.Messaging]: IM: fromGroup({0})", im.fromGroup ? "True" : "False");
m_log.WarnFormat("[Groups.Messaging]: IM: Dialog({0})", ((InstantMessageDialog)im.dialog).ToString());
m_log.WarnFormat("[Groups.Messaging]: IM: fromAgentID({0})", im.fromAgentID.ToString());
m_log.WarnFormat("[Groups.Messaging]: IM: fromAgentName({0})", im.fromAgentName.ToString());
m_log.WarnFormat("[Groups.Messaging]: IM: imSessionID({0})", im.imSessionID.ToString());
m_log.WarnFormat("[Groups.Messaging]: IM: message({0})", im.message.ToString());
m_log.WarnFormat("[Groups.Messaging]: IM: offline({0})", im.offline.ToString());
m_log.WarnFormat("[Groups.Messaging]: IM: toAgentID({0})", im.toAgentID.ToString());
m_log.WarnFormat("[Groups.Messaging]: IM: binaryBucket({0})", OpenMetaverse.Utils.BytesToHexString(im.binaryBucket, "BinaryBucket"));
}
}
#region Client Tools
/// <summary>
/// Try to find an active IClientAPI reference for agentID giving preference to root connections
/// </summary>
private IClientAPI GetActiveClient(UUID agentID)
{
if (m_debugEnabled) m_log.WarnFormat("[Groups.Messaging]: Looking for local client {0}", agentID);
IClientAPI child = null;
// Try root avatar first
foreach (Scene scene in m_sceneList)
{
ScenePresence sp = scene.GetScenePresence(agentID);
if (sp != null)
{
if (!sp.IsChildAgent)
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Found root agent for client : {0}", sp.ControllingClient.Name);
return sp.ControllingClient;
}
else
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Found child agent for client : {0}", sp.ControllingClient.Name);
child = sp.ControllingClient;
}
}
}
// If we didn't find a root, then just return whichever child we found, or null if none
if (child == null)
{
if (m_debugEnabled) m_log.WarnFormat("[Groups.Messaging]: Could not find local client for agent : {0}", agentID);
}
else
{
if (m_debugEnabled) m_log.WarnFormat("[Groups.Messaging]: Returning child agent for client : {0}", child.Name);
}
return child;
}
#endregion
#region GroupSessionTracking
public void ResetAgentGroupChatSessions(string agentID)
{
foreach (List<string> agentList in m_groupsAgentsDroppedFromChatSession.Values)
agentList.Remove(agentID);
foreach (List<string> agentList in m_groupsAgentsInvitedToChatSession.Values)
agentList.Remove(agentID);
}
public bool hasAgentBeenInvitedToGroupChatSession(string agentID, UUID groupID)
{
// If we're tracking this group, and we can find them in the tracking, then they've been invited
return m_groupsAgentsInvitedToChatSession.ContainsKey(groupID)
&& m_groupsAgentsInvitedToChatSession[groupID].Contains(agentID);
}
public bool hasAgentDroppedGroupChatSession(string agentID, UUID groupID)
{
// If we're tracking drops for this group,
// and we find them, well... then they've dropped
return m_groupsAgentsDroppedFromChatSession.ContainsKey(groupID)
&& m_groupsAgentsDroppedFromChatSession[groupID].Contains(agentID);
}
public void AgentDroppedFromGroupChatSession(string agentID, UUID groupID)
{
if (m_groupsAgentsDroppedFromChatSession.ContainsKey(groupID))
{
// If not in dropped list, add
if (!m_groupsAgentsDroppedFromChatSession[groupID].Contains(agentID))
{
m_groupsAgentsDroppedFromChatSession[groupID].Add(agentID);
}
}
}
public void AgentInvitedToGroupChatSession(string agentID, UUID groupID)
{
// Add Session Status if it doesn't exist for this session
CreateGroupChatSessionTracking(groupID);
// If nessesary, remove from dropped list
if (m_groupsAgentsDroppedFromChatSession[groupID].Contains(agentID))
{
m_groupsAgentsDroppedFromChatSession[groupID].Remove(agentID);
}
// Add to invited
if (!m_groupsAgentsInvitedToChatSession[groupID].Contains(agentID))
m_groupsAgentsInvitedToChatSession[groupID].Add(agentID);
}
private void CreateGroupChatSessionTracking(UUID groupID)
{
if (!m_groupsAgentsDroppedFromChatSession.ContainsKey(groupID))
{
m_groupsAgentsDroppedFromChatSession.Add(groupID, new List<string>());
m_groupsAgentsInvitedToChatSession.Add(groupID, new List<string>());
}
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,289 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using OpenSim.Framework;
using OpenSim.Server.Base;
using OpenMetaverse;
using log4net;
namespace OpenSim.Groups
{
public class GroupsServiceHGConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private string m_ServerURI;
private object m_Lock = new object();
public GroupsServiceHGConnector(string url)
{
m_ServerURI = url;
if (!m_ServerURI.EndsWith("/"))
m_ServerURI += "/";
m_log.DebugFormat("[Groups.HGConnector]: Groups server at {0}", m_ServerURI);
}
public bool CreateProxy(string RequestingAgentID, string AgentID, string accessToken, UUID groupID, string url, string name, out string reason)
{
reason = string.Empty;
Dictionary<string, object> sendData = new Dictionary<string,object>();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["AgentID"] = AgentID.ToString();
sendData["AccessToken"] = accessToken;
sendData["GroupID"] = groupID.ToString();
sendData["Location"] = url;
sendData["Name"] = name;
Dictionary<string, object> ret = MakeRequest("POSTGROUP", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
{
reason = ret["REASON"].ToString();
return false;
}
return true;
}
public void RemoveAgentFromGroup(string AgentID, UUID GroupID, string token)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID;
sendData["GroupID"] = GroupID.ToString();
sendData["AccessToken"] = GroupsDataUtils.Sanitize(token);
MakeRequest("REMOVEAGENTFROMGROUP", sendData);
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName, string token)
{
if (GroupID == UUID.Zero && (GroupName == null || (GroupName != null && GroupName == string.Empty)))
return null;
Dictionary<string, object> sendData = new Dictionary<string, object>();
if (GroupID != UUID.Zero)
sendData["GroupID"] = GroupID.ToString();
if (!string.IsNullOrEmpty(GroupName))
sendData["Name"] = GroupsDataUtils.Sanitize(GroupName);
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["AccessToken"] = GroupsDataUtils.Sanitize(token);
Dictionary<string, object> ret = MakeRequest("GETGROUP", sendData);
if (ret == null)
return null;
if (!ret.ContainsKey("RESULT"))
return null;
if (ret["RESULT"].ToString() == "NULL")
return null;
return GroupsDataUtils.GroupRecord((Dictionary<string, object>)ret["RESULT"]);
}
public List<ExtendedGroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID, string token)
{
List<ExtendedGroupMembersData> members = new List<ExtendedGroupMembersData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["AccessToken"] = GroupsDataUtils.Sanitize(token);
Dictionary<string, object> ret = MakeRequest("GETGROUPMEMBERS", sendData);
if (ret == null)
return members;
if (!ret.ContainsKey("RESULT"))
return members;
if (ret["RESULT"].ToString() == "NULL")
return members;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
ExtendedGroupMembersData m = GroupsDataUtils.GroupMembersData((Dictionary<string, object>)v);
members.Add(m);
}
return members;
}
public List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID GroupID, string token)
{
List<GroupRolesData> roles = new List<GroupRolesData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["AccessToken"] = GroupsDataUtils.Sanitize(token);
Dictionary<string, object> ret = MakeRequest("GETGROUPROLES", sendData);
if (ret == null)
return roles;
if (!ret.ContainsKey("RESULT"))
return roles;
if (ret["RESULT"].ToString() == "NULL")
return roles;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
GroupRolesData m = GroupsDataUtils.GroupRolesData((Dictionary<string, object>)v);
roles.Add(m);
}
return roles;
}
public List<ExtendedGroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID GroupID, string token)
{
List<ExtendedGroupRoleMembersData> rmembers = new List<ExtendedGroupRoleMembersData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["AccessToken"] = GroupsDataUtils.Sanitize(token);
Dictionary<string, object> ret = MakeRequest("GETROLEMEMBERS", sendData);
if (ret == null)
return rmembers;
if (!ret.ContainsKey("RESULT"))
return rmembers;
if (ret["RESULT"].ToString() == "NULL")
return rmembers;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
ExtendedGroupRoleMembersData m = GroupsDataUtils.GroupRoleMembersData((Dictionary<string, object>)v);
rmembers.Add(m);
}
return rmembers;
}
public bool AddNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = groupID.ToString();
sendData["NoticeID"] = noticeID.ToString();
sendData["FromName"] = GroupsDataUtils.Sanitize(fromName);
sendData["Subject"] = GroupsDataUtils.Sanitize(subject);
sendData["Message"] = GroupsDataUtils.Sanitize(message);
sendData["HasAttachment"] = hasAttachment.ToString();
if (hasAttachment)
{
sendData["AttachmentType"] = attType.ToString();
sendData["AttachmentName"] = attName.ToString();
sendData["AttachmentItemID"] = attItemID.ToString();
sendData["AttachmentOwnerID"] = attOwnerID;
}
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("ADDNOTICE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
return false;
return true;
}
public bool VerifyNotice(UUID noticeID, UUID groupID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["NoticeID"] = noticeID.ToString();
sendData["GroupID"] = groupID.ToString();
Dictionary<string, object> ret = MakeRequest("VERIFYNOTICE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
return false;
return true;
}
//
//
//
//
//
#region Make Request
private Dictionary<string, object> MakeRequest(string method, Dictionary<string, object> sendData)
{
sendData["METHOD"] = method;
string reply = string.Empty;
lock (m_Lock)
reply = SynchronousRestFormsRequester.MakeRequest("POST",
m_ServerURI + "hg-groups",
ServerUtils.BuildQueryString(sendData));
//m_log.DebugFormat("[XXX]: reply was {0}", reply);
if (string.IsNullOrEmpty(reply))
return null;
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(
reply);
return replyData;
}
#endregion
}
}

View File

@@ -0,0 +1,706 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using OpenMetaverse;
using Mono.Addins;
using log4net;
using Nini.Config;
namespace OpenSim.Groups
{
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "GroupsServiceHGConnectorModule")]
public class GroupsServiceHGConnectorModule : ISharedRegionModule, IGroupsServicesConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private bool m_Enabled = false;
private IGroupsServicesConnector m_LocalGroupsConnector;
private string m_LocalGroupsServiceLocation;
private IUserManagement m_UserManagement;
private IOfflineIMService m_OfflineIM;
private IMessageTransferModule m_Messaging;
private List<Scene> m_Scenes;
private ForeignImporter m_ForeignImporter;
private string m_ServiceLocation;
private IConfigSource m_Config;
private Dictionary<string, GroupsServiceHGConnector> m_NetworkConnectors = new Dictionary<string, GroupsServiceHGConnector>();
private RemoteConnectorCacheWrapper m_CacheWrapper; // for caching info of external group services
#region ISharedRegionModule
public void Initialise(IConfigSource config)
{
IConfig groupsConfig = config.Configs["Groups"];
if (groupsConfig == null)
return;
if ((groupsConfig.GetBoolean("Enabled", false) == false)
|| (groupsConfig.GetString("ServicesConnectorModule", string.Empty) != Name))
{
return;
}
m_Config = config;
m_ServiceLocation = groupsConfig.GetString("LocalService", "local"); // local or remote
m_LocalGroupsServiceLocation = groupsConfig.GetString("GroupsExternalURI", "http://127.0.0.1");
m_Scenes = new List<Scene>();
m_Enabled = true;
m_log.DebugFormat("[Groups]: Initializing {0} with LocalService {1}", this.Name, m_ServiceLocation);
}
public string Name
{
get { return "Groups HG Service Connector"; }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (!m_Enabled)
return;
m_log.DebugFormat("[Groups]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Add(scene);
scene.EventManager.OnNewClient += OnNewClient;
}
public void RemoveRegion(Scene scene)
{
if (!m_Enabled)
return;
scene.UnregisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Remove(scene);
}
public void RegionLoaded(Scene scene)
{
if (!m_Enabled)
return;
if (m_UserManagement == null)
{
m_UserManagement = scene.RequestModuleInterface<IUserManagement>();
m_OfflineIM = scene.RequestModuleInterface<IOfflineIMService>();
m_Messaging = scene.RequestModuleInterface<IMessageTransferModule>();
m_ForeignImporter = new ForeignImporter(m_UserManagement);
if (m_ServiceLocation.Equals("local"))
{
m_LocalGroupsConnector = new GroupsServiceLocalConnectorModule(m_Config, m_UserManagement);
// Also, if local, create the endpoint for the HGGroupsService
new HGGroupsServiceRobustConnector(m_Config, MainServer.Instance, string.Empty,
scene.RequestModuleInterface<IOfflineIMService>(), scene.RequestModuleInterface<IUserAccountService>());
}
else
m_LocalGroupsConnector = new GroupsServiceRemoteConnectorModule(m_Config, m_UserManagement);
m_CacheWrapper = new RemoteConnectorCacheWrapper(m_UserManagement);
}
}
public void PostInitialise()
{
}
public void Close()
{
}
#endregion
private void OnNewClient(IClientAPI client)
{
client.OnCompleteMovementToRegion += OnCompleteMovementToRegion;
}
void OnCompleteMovementToRegion(IClientAPI client, bool arg2)
{
object sp = null;
if (client.Scene.TryGetScenePresence(client.AgentId, out sp))
{
if (sp is ScenePresence && ((ScenePresence)sp).PresenceType != PresenceType.Npc)
{
AgentCircuitData aCircuit = ((ScenePresence)sp).Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId);
if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0 &&
m_OfflineIM != null && m_Messaging != null)
{
List<GridInstantMessage> ims = m_OfflineIM.GetMessages(aCircuit.AgentID);
if (ims != null && ims.Count > 0)
foreach (GridInstantMessage im in ims)
m_Messaging.SendInstantMessage(im, delegate(bool success) { });
}
}
}
}
#region IGroupsServicesConnector
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
reason = string.Empty;
if (m_UserManagement.IsLocalGridUser(RequestingAgentID))
return m_LocalGroupsConnector.CreateGroup(RequestingAgentID, name, charter, showInList, insigniaID,
membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out reason);
else
{
reason = "Only local grid users are allowed to create a new group";
return UUID.Zero;
}
}
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason)
{
reason = string.Empty;
string url = string.Empty;
string name = string.Empty;
if (IsLocal(groupID, out url, out name))
return m_LocalGroupsConnector.UpdateGroup(AgentUUI(RequestingAgentID), groupID, charter, showInList, insigniaID, membershipFee,
openEnrollment, allowPublish, maturePublish, out reason);
else
{
reason = "Changes to remote group not allowed. Please go to the group's original world.";
return false;
}
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName)
{
string url = string.Empty;
string name = string.Empty;
if (IsLocal(GroupID, out url, out name))
return m_LocalGroupsConnector.GetGroupRecord(AgentUUI(RequestingAgentID), GroupID, GroupName);
else if (url != string.Empty)
{
ExtendedGroupMembershipData membership = m_LocalGroupsConnector.GetAgentGroupMembership(RequestingAgentID, RequestingAgentID, GroupID);
string accessToken = string.Empty;
if (membership != null)
accessToken = membership.AccessToken;
else
return null;
GroupsServiceHGConnector c = GetConnector(url);
if (c != null)
{
ExtendedGroupRecord grec = m_CacheWrapper.GetGroupRecord(RequestingAgentID, GroupID, GroupName, delegate
{
return c.GetGroupRecord(AgentUUIForOutside(RequestingAgentID), GroupID, GroupName, accessToken);
});
if (grec != null)
ImportForeigner(grec.FounderUUI);
return grec;
}
}
return null;
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search)
{
return m_LocalGroupsConnector.FindGroups(AgentUUI(RequestingAgentID), search);
}
public List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(GroupID, out url, out gname))
{
string agentID = AgentUUI(RequestingAgentID);
return m_LocalGroupsConnector.GetGroupMembers(agentID, GroupID);
}
else if (!string.IsNullOrEmpty(url))
{
ExtendedGroupMembershipData membership = m_LocalGroupsConnector.GetAgentGroupMembership(RequestingAgentID, RequestingAgentID, GroupID);
string accessToken = string.Empty;
if (membership != null)
accessToken = membership.AccessToken;
else
return null;
GroupsServiceHGConnector c = GetConnector(url);
if (c != null)
{
return m_CacheWrapper.GetGroupMembers(RequestingAgentID, GroupID, delegate
{
return c.GetGroupMembers(AgentUUIForOutside(RequestingAgentID), GroupID, accessToken);
});
}
}
return new List<GroupMembersData>();
}
public bool AddGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, out string reason)
{
reason = string.Empty;
string url = string.Empty, gname = string.Empty;
if (IsLocal(groupID, out url, out gname))
return m_LocalGroupsConnector.AddGroupRole(AgentUUI(RequestingAgentID), groupID, roleID, name, description, title, powers, out reason);
else
{
reason = "Operation not allowed outside this group's origin world.";
return false;
}
}
public bool UpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(groupID, out url, out gname))
return m_LocalGroupsConnector.UpdateGroupRole(AgentUUI(RequestingAgentID), groupID, roleID, name, description, title, powers);
else
{
return false;
}
}
public void RemoveGroupRole(string RequestingAgentID, UUID groupID, UUID roleID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(groupID, out url, out gname))
m_LocalGroupsConnector.RemoveGroupRole(AgentUUI(RequestingAgentID), groupID, roleID);
else
{
return;
}
}
public List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID groupID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(groupID, out url, out gname))
return m_LocalGroupsConnector.GetGroupRoles(AgentUUI(RequestingAgentID), groupID);
else if (!string.IsNullOrEmpty(url))
{
ExtendedGroupMembershipData membership = m_LocalGroupsConnector.GetAgentGroupMembership(RequestingAgentID, RequestingAgentID, groupID);
string accessToken = string.Empty;
if (membership != null)
accessToken = membership.AccessToken;
else
return null;
GroupsServiceHGConnector c = GetConnector(url);
if (c != null)
{
return m_CacheWrapper.GetGroupRoles(RequestingAgentID, groupID, delegate
{
return c.GetGroupRoles(AgentUUIForOutside(RequestingAgentID), groupID, accessToken);
});
}
}
return new List<GroupRolesData>();
}
public List<GroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID groupID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(groupID, out url, out gname))
return m_LocalGroupsConnector.GetGroupRoleMembers(AgentUUI(RequestingAgentID), groupID);
else if (!string.IsNullOrEmpty(url))
{
ExtendedGroupMembershipData membership = m_LocalGroupsConnector.GetAgentGroupMembership(RequestingAgentID, RequestingAgentID, groupID);
string accessToken = string.Empty;
if (membership != null)
accessToken = membership.AccessToken;
else
return null;
GroupsServiceHGConnector c = GetConnector(url);
if (c != null)
{
return m_CacheWrapper.GetGroupRoleMembers(RequestingAgentID, groupID, delegate
{
return c.GetGroupRoleMembers(AgentUUIForOutside(RequestingAgentID), groupID, accessToken);
});
}
}
return new List<GroupRoleMembersData>();
}
public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason)
{
string url = string.Empty;
string name = string.Empty;
reason = string.Empty;
UUID uid = new UUID(AgentID);
if (IsLocal(GroupID, out url, out name))
{
if (m_UserManagement.IsLocalGridUser(uid)) // local user
{
// normal case: local group, local user
return m_LocalGroupsConnector.AddAgentToGroup(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID, RoleID, token, out reason);
}
else // local group, foreign user
{
// the user is accepting the invitation, or joining, where the group resides
token = UUID.Random().ToString();
bool success = m_LocalGroupsConnector.AddAgentToGroup(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID, RoleID, token, out reason);
if (success)
{
// Here we always return true. The user has been added to the local group,
// independent of whether the remote operation succeeds or not
url = m_UserManagement.GetUserServerURL(uid, "GroupsServerURI");
if (url == string.Empty)
{
reason = "You don't have an accessible groups server in your home world. You membership to this group in only within this grid.";
return true;
}
GroupsServiceHGConnector c = GetConnector(url);
if (c != null)
c.CreateProxy(AgentUUI(RequestingAgentID), AgentID, token, GroupID, m_LocalGroupsServiceLocation, name, out reason);
return true;
}
return false;
}
}
else if (m_UserManagement.IsLocalGridUser(uid)) // local user
{
// foreign group, local user. She's been added already by the HG service.
// Let's just check
if (m_LocalGroupsConnector.GetAgentGroupMembership(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID) != null)
return true;
}
reason = "Operation not allowed outside this group's origin world";
return false;
}
public void RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
string url = string.Empty, name = string.Empty;
if (!IsLocal(GroupID, out url, out name) && url != string.Empty)
{
ExtendedGroupMembershipData membership = m_LocalGroupsConnector.GetAgentGroupMembership(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID);
if (membership != null)
{
GroupsServiceHGConnector c = GetConnector(url);
if (c != null)
c.RemoveAgentFromGroup(AgentUUIForOutside(AgentID), GroupID, membership.AccessToken);
}
}
// remove from local service
m_LocalGroupsConnector.RemoveAgentFromGroup(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID);
}
public bool AddAgentToGroupInvite(string RequestingAgentID, UUID inviteID, UUID groupID, UUID roleID, string agentID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(groupID, out url, out gname))
return m_LocalGroupsConnector.AddAgentToGroupInvite(AgentUUI(RequestingAgentID), inviteID, groupID, roleID, AgentUUI(agentID));
else
return false;
}
public GroupInviteInfo GetAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
return m_LocalGroupsConnector.GetAgentToGroupInvite(AgentUUI(RequestingAgentID), inviteID); ;
}
public void RemoveAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
m_LocalGroupsConnector.RemoveAgentToGroupInvite(AgentUUI(RequestingAgentID), inviteID);
}
public void AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(GroupID, out url, out gname))
m_LocalGroupsConnector.AddAgentToGroupRole(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID, RoleID);
}
public void RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(GroupID, out url, out gname))
m_LocalGroupsConnector.RemoveAgentFromGroupRole(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID, RoleID);
}
public List<GroupRolesData> GetAgentGroupRoles(string RequestingAgentID, string AgentID, UUID GroupID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(GroupID, out url, out gname))
return m_LocalGroupsConnector.GetAgentGroupRoles(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID);
else
return new List<GroupRolesData>();
}
public void SetAgentActiveGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(GroupID, out url, out gname))
m_LocalGroupsConnector.SetAgentActiveGroup(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID);
}
public ExtendedGroupMembershipData GetAgentActiveMembership(string RequestingAgentID, string AgentID)
{
return m_LocalGroupsConnector.GetAgentActiveMembership(AgentUUI(RequestingAgentID), AgentUUI(AgentID));
}
public void SetAgentActiveGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(GroupID, out url, out gname))
m_LocalGroupsConnector.SetAgentActiveGroupRole(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID, RoleID);
}
public void UpdateMembership(string RequestingAgentID, string AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile)
{
m_LocalGroupsConnector.UpdateMembership(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID, AcceptNotices, ListInProfile);
}
public ExtendedGroupMembershipData GetAgentGroupMembership(string RequestingAgentID, string AgentID, UUID GroupID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(GroupID, out url, out gname))
return m_LocalGroupsConnector.GetAgentGroupMembership(AgentUUI(RequestingAgentID), AgentUUI(AgentID), GroupID);
else
return null;
}
public List<GroupMembershipData> GetAgentGroupMemberships(string RequestingAgentID, string AgentID)
{
return m_LocalGroupsConnector.GetAgentGroupMemberships(AgentUUI(RequestingAgentID), AgentUUI(AgentID));
}
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
string url = string.Empty, gname = string.Empty;
if (IsLocal(groupID, out url, out gname))
{
if (m_LocalGroupsConnector.AddGroupNotice(AgentUUI(RequestingAgentID), groupID, noticeID, fromName, subject, message,
hasAttachment, attType, attName, attItemID, AgentUUI(attOwnerID)))
{
// then send the notice to every grid for which there are members in this group
List<GroupMembersData> members = m_LocalGroupsConnector.GetGroupMembers(AgentUUI(RequestingAgentID), groupID);
List<string> urls = new List<string>();
foreach (GroupMembersData m in members)
{
if (!m_UserManagement.IsLocalGridUser(m.AgentID))
{
string gURL = m_UserManagement.GetUserServerURL(m.AgentID, "GroupsServerURI");
if (!urls.Contains(gURL))
urls.Add(gURL);
}
}
// so we have the list of urls to send the notice to
// this may take a long time...
Util.RunThreadNoTimeout(delegate
{
foreach (string u in urls)
{
GroupsServiceHGConnector c = GetConnector(u);
if (c != null)
{
c.AddNotice(AgentUUIForOutside(RequestingAgentID), groupID, noticeID, fromName, subject, message,
hasAttachment, attType, attName, attItemID, AgentUUIForOutside(attOwnerID));
}
}
}, "AddGroupNotice", null);
return true;
}
return false;
}
else
return false;
}
public GroupNoticeInfo GetGroupNotice(string RequestingAgentID, UUID noticeID)
{
GroupNoticeInfo notice = m_LocalGroupsConnector.GetGroupNotice(AgentUUI(RequestingAgentID), noticeID);
if (notice != null && notice.noticeData.HasAttachment && notice.noticeData.AttachmentOwnerID != null)
ImportForeigner(notice.noticeData.AttachmentOwnerID);
return notice;
}
public List<ExtendedGroupNoticeData> GetGroupNotices(string RequestingAgentID, UUID GroupID)
{
return m_LocalGroupsConnector.GetGroupNotices(AgentUUI(RequestingAgentID), GroupID);
}
#endregion
#region hypergrid groups
private string AgentUUI(string AgentIDStr)
{
UUID AgentID = UUID.Zero;
try
{
AgentID = new UUID(AgentIDStr);
}
catch (FormatException)
{
return AgentID.ToString();
}
if (m_UserManagement.IsLocalGridUser(AgentID))
return AgentID.ToString();
AgentCircuitData agent = null;
foreach (Scene scene in m_Scenes)
{
agent = scene.AuthenticateHandler.GetAgentCircuitData(AgentID);
if (agent != null)
break;
}
if (agent != null)
return Util.ProduceUserUniversalIdentifier(agent);
// we don't know anything about this foreign user
// try asking the user management module, which may know more
return m_UserManagement.GetUserUUI(AgentID);
}
private string AgentUUIForOutside(string AgentIDStr)
{
UUID AgentID = UUID.Zero;
try
{
AgentID = new UUID(AgentIDStr);
}
catch (FormatException)
{
return AgentID.ToString();
}
AgentCircuitData agent = null;
foreach (Scene scene in m_Scenes)
{
agent = scene.AuthenticateHandler.GetAgentCircuitData(AgentID);
if (agent != null)
break;
}
if (agent == null) // oops
return AgentID.ToString();
return Util.ProduceUserUniversalIdentifier(agent);
}
private UUID ImportForeigner(string uID)
{
UUID userID = UUID.Zero;
string url = string.Empty, first = string.Empty, last = string.Empty, tmp = string.Empty;
if (Util.ParseUniversalUserIdentifier(uID, out userID, out url, out first, out last, out tmp))
m_UserManagement.AddUser(userID, first, last, url);
return userID;
}
private bool IsLocal(UUID groupID, out string serviceLocation, out string name)
{
serviceLocation = string.Empty;
name = string.Empty;
if (groupID.Equals(UUID.Zero))
return true;
ExtendedGroupRecord group = m_LocalGroupsConnector.GetGroupRecord(UUID.Zero.ToString(), groupID, string.Empty);
if (group == null)
{
//m_log.DebugFormat("[XXX]: IsLocal? group {0} not found -- no.", groupID);
return false;
}
serviceLocation = group.ServiceLocation;
name = group.GroupName;
bool isLocal = (group.ServiceLocation == string.Empty);
//m_log.DebugFormat("[XXX]: IsLocal? {0}", isLocal);
return isLocal;
}
private GroupsServiceHGConnector GetConnector(string url)
{
lock (m_NetworkConnectors)
{
if (m_NetworkConnectors.ContainsKey(url))
return m_NetworkConnectors[url];
GroupsServiceHGConnector c = new GroupsServiceHGConnector(url);
m_NetworkConnectors[url] = c;
}
return m_NetworkConnectors[url];
}
#endregion
}
}

View File

@@ -0,0 +1,444 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using System.Text;
using System.Xml;
using System.Collections.Generic;
using System.IO;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using log4net;
using OpenMetaverse;
namespace OpenSim.Groups
{
public class HGGroupsServiceRobustConnector : ServiceConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private HGGroupsService m_GroupsService;
private string m_ConfigName = "Groups";
// Called by Robust shell
public HGGroupsServiceRobustConnector(IConfigSource config, IHttpServer server, string configName) :
this(config, server, configName, null, null)
{
}
// Called by the sim-bound module
public HGGroupsServiceRobustConnector(IConfigSource config, IHttpServer server, string configName, IOfflineIMService im, IUserAccountService users) :
base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
m_log.DebugFormat("[Groups.RobustHGConnector]: Starting with config name {0}", m_ConfigName);
string homeURI = Util.GetConfigVarFromSections<string>(config, "HomeURI",
new string[] { "Startup", "Hypergrid", m_ConfigName}, string.Empty);
if (homeURI == string.Empty)
throw new Exception(String.Format("[Groups.RobustHGConnector]: please provide the HomeURI [Startup] or in section {0}", m_ConfigName));
IConfig cnf = config.Configs[m_ConfigName];
if (cnf == null)
throw new Exception(String.Format("[Groups.RobustHGConnector]: {0} section does not exist", m_ConfigName));
if (im == null)
{
string imDll = cnf.GetString("OfflineIMService", string.Empty);
if (imDll == string.Empty)
throw new Exception(String.Format("[Groups.RobustHGConnector]: please provide OfflineIMService in section {0}", m_ConfigName));
Object[] args = new Object[] { config };
im = ServerUtils.LoadPlugin<IOfflineIMService>(imDll, args);
}
if (users == null)
{
string usersDll = cnf.GetString("UserAccountService", string.Empty);
if (usersDll == string.Empty)
throw new Exception(String.Format("[Groups.RobustHGConnector]: please provide UserAccountService in section {0}", m_ConfigName));
Object[] args = new Object[] { config };
users = ServerUtils.LoadPlugin<IUserAccountService>(usersDll, args);
}
m_GroupsService = new HGGroupsService(config, im, users, homeURI);
server.AddStreamHandler(new HGGroupsServicePostHandler(m_GroupsService));
}
}
public class HGGroupsServicePostHandler : BaseStreamHandler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private HGGroupsService m_GroupsService;
public HGGroupsServicePostHandler(HGGroupsService service) :
base("POST", "/hg-groups")
{
m_GroupsService = service;
}
protected override byte[] ProcessRequest(string path, Stream requestData,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
StreamReader sr = new StreamReader(requestData);
string body = sr.ReadToEnd();
sr.Close();
body = body.Trim();
//m_log.DebugFormat("[XXX]: query String: {0}", body);
try
{
Dictionary<string, object> request =
ServerUtils.ParseQueryString(body);
if (!request.ContainsKey("METHOD"))
return FailureResult();
string method = request["METHOD"].ToString();
request.Remove("METHOD");
m_log.DebugFormat("[Groups.RobustHGConnector]: {0}", method);
switch (method)
{
case "POSTGROUP":
return HandleAddGroupProxy(request);
case "REMOVEAGENTFROMGROUP":
return HandleRemoveAgentFromGroup(request);
case "GETGROUP":
return HandleGetGroup(request);
case "ADDNOTICE":
return HandleAddNotice(request);
case "VERIFYNOTICE":
return HandleVerifyNotice(request);
case "GETGROUPMEMBERS":
return HandleGetGroupMembers(request);
case "GETGROUPROLES":
return HandleGetGroupRoles(request);
case "GETROLEMEMBERS":
return HandleGetRoleMembers(request);
}
m_log.DebugFormat("[Groups.RobustHGConnector]: unknown method request: {0}", method);
}
catch (Exception e)
{
m_log.Error(string.Format("[Groups.RobustHGConnector]: Exception {0} ", e.Message), e);
}
return FailureResult();
}
byte[] HandleAddGroupProxy(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID")
|| !request.ContainsKey("AgentID")
|| !request.ContainsKey("AccessToken") || !request.ContainsKey("Location"))
NullResult(result, "Bad network data");
else
{
string RequestingAgentID = request["RequestingAgentID"].ToString();
string agentID = request["AgentID"].ToString();
UUID groupID = new UUID(request["GroupID"].ToString());
string accessToken = request["AccessToken"].ToString();
string location = request["Location"].ToString();
string name = string.Empty;
if (request.ContainsKey("Name"))
name = request["Name"].ToString();
string reason = string.Empty;
bool success = m_GroupsService.CreateGroupProxy(RequestingAgentID, agentID, accessToken, groupID, location, name, out reason);
result["REASON"] = reason;
result["RESULT"] = success.ToString();
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleRemoveAgentFromGroup(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("AccessToken") || !request.ContainsKey("AgentID") ||
!request.ContainsKey("GroupID"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string agentID = request["AgentID"].ToString();
string token = request["AccessToken"].ToString();
if (!m_GroupsService.RemoveAgentFromGroup(agentID, agentID, groupID, token))
NullResult(result, "Internal error");
else
result["RESULT"] = "true";
}
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
byte[] HandleGetGroup(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("AccessToken"))
NullResult(result, "Bad network data");
else
{
string RequestingAgentID = request["RequestingAgentID"].ToString();
string token = request["AccessToken"].ToString();
UUID groupID = UUID.Zero;
string groupName = string.Empty;
if (request.ContainsKey("GroupID"))
groupID = new UUID(request["GroupID"].ToString());
if (request.ContainsKey("Name"))
groupName = request["Name"].ToString();
ExtendedGroupRecord grec = m_GroupsService.GetGroupRecord(RequestingAgentID, groupID, groupName, token);
if (grec == null)
NullResult(result, "Group not found");
else
result["RESULT"] = GroupsDataUtils.GroupRecord(grec);
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetGroupMembers(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("AccessToken"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string requestingAgentID = request["RequestingAgentID"].ToString();
string token = request["AccessToken"].ToString();
List<ExtendedGroupMembersData> members = m_GroupsService.GetGroupMembers(requestingAgentID, groupID, token);
if (members == null || (members != null && members.Count == 0))
{
NullResult(result, "No members");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (ExtendedGroupMembersData m in members)
{
dict["m-" + i++] = GroupsDataUtils.GroupMembersData(m);
}
result["RESULT"] = dict;
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetGroupRoles(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("AccessToken"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string requestingAgentID = request["RequestingAgentID"].ToString();
string token = request["AccessToken"].ToString();
List<GroupRolesData> roles = m_GroupsService.GetGroupRoles(requestingAgentID, groupID, token);
if (roles == null || (roles != null && roles.Count == 0))
{
NullResult(result, "No members");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (GroupRolesData r in roles)
dict["r-" + i++] = GroupsDataUtils.GroupRolesData(r);
result["RESULT"] = dict;
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetRoleMembers(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("AccessToken"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string requestingAgentID = request["RequestingAgentID"].ToString();
string token = request["AccessToken"].ToString();
List<ExtendedGroupRoleMembersData> rmembers = m_GroupsService.GetGroupRoleMembers(requestingAgentID, groupID, token);
if (rmembers == null || (rmembers != null && rmembers.Count == 0))
{
NullResult(result, "No members");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (ExtendedGroupRoleMembersData rm in rmembers)
dict["rm-" + i++] = GroupsDataUtils.GroupRoleMembersData(rm);
result["RESULT"] = dict;
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleAddNotice(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("NoticeID") ||
!request.ContainsKey("FromName") || !request.ContainsKey("Subject") || !request.ContainsKey("Message") ||
!request.ContainsKey("HasAttachment"))
NullResult(result, "Bad network data");
else
{
bool hasAtt = bool.Parse(request["HasAttachment"].ToString());
byte attType = 0;
string attName = string.Empty;
string attOwner = string.Empty;
UUID attItem = UUID.Zero;
if (request.ContainsKey("AttachmentType"))
attType = byte.Parse(request["AttachmentType"].ToString());
if (request.ContainsKey("AttachmentName"))
attName = request["AttachmentType"].ToString();
if (request.ContainsKey("AttachmentItemID"))
attItem = new UUID(request["AttachmentItemID"].ToString());
if (request.ContainsKey("AttachmentOwnerID"))
attOwner = request["AttachmentOwnerID"].ToString();
bool success = m_GroupsService.AddNotice(request["RequestingAgentID"].ToString(), new UUID(request["GroupID"].ToString()),
new UUID(request["NoticeID"].ToString()), request["FromName"].ToString(), request["Subject"].ToString(),
request["Message"].ToString(), hasAtt, attType, attName, attItem, attOwner);
result["RESULT"] = success.ToString();
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleVerifyNotice(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("NoticeID") || !request.ContainsKey("GroupID"))
NullResult(result, "Bad network data");
else
{
UUID noticeID = new UUID(request["NoticeID"].ToString());
UUID groupID = new UUID(request["GroupID"].ToString());
bool success = m_GroupsService.VerifyNotice(noticeID, groupID);
//m_log.DebugFormat("[XXX]: VerifyNotice returned {0}", success);
result["RESULT"] = success.ToString();
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
//
//
//
//
//
#region Helpers
private void NullResult(Dictionary<string, object> result, string reason)
{
result["RESULT"] = "NULL";
result["REASON"] = reason;
}
private byte[] FailureResult()
{
Dictionary<string, object> result = new Dictionary<string, object>();
NullResult(result, "Unknown method");
string xmlString = ServerUtils.BuildXmlResponse(result);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
#endregion
}
}

View File

@@ -0,0 +1,112 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.Groups
{
public interface IGroupsServicesConnector
{
UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, UUID founderID, out string reason);
bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason);
ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName);
List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search);
List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID);
bool AddGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, out string reason);
bool UpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers);
void RemoveGroupRole(string RequestingAgentID, UUID groupID, UUID roleID);
List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID GroupID);
List<GroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID GroupID);
bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason);
void RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID);
bool AddAgentToGroupInvite(string RequestingAgentID, UUID inviteID, UUID groupID, UUID roleID, string agentID);
GroupInviteInfo GetAgentToGroupInvite(string RequestingAgentID, UUID inviteID);
void RemoveAgentToGroupInvite(string RequestingAgentID, UUID inviteID);
void AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID);
void RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID);
List<GroupRolesData> GetAgentGroupRoles(string RequestingAgentID, string AgentID, UUID GroupID);
void SetAgentActiveGroup(string RequestingAgentID, string AgentID, UUID GroupID);
ExtendedGroupMembershipData GetAgentActiveMembership(string RequestingAgentID, string AgentID);
void SetAgentActiveGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID);
void UpdateMembership(string RequestingAgentID, string AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile);
/// <summary>
/// Get information about a specific group to which the user belongs.
/// </summary>
/// <param name="RequestingAgentID">The agent requesting the information.</param>
/// <param name="AgentID">The agent requested.</param>
/// <param name="GroupID">The group requested.</param>
/// <returns>
/// If the user is a member of the group then the data structure is returned. If not, then null is returned.
/// </returns>
ExtendedGroupMembershipData GetAgentGroupMembership(string RequestingAgentID, string AgentID, UUID GroupID);
/// <summary>
/// Get information about the groups to which a user belongs.
/// </summary>
/// <param name="RequestingAgentID">The agent requesting the information.</param>
/// <param name="AgentID">The agent requested.</param>
/// <returns>
/// Information about the groups to which the user belongs. If the user belongs to no groups then an empty
/// list is returned.
/// </returns>
List<GroupMembershipData> GetAgentGroupMemberships(string RequestingAgentID, string AgentID);
bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID);
GroupNoticeInfo GetGroupNotice(string RequestingAgentID, UUID noticeID);
List<ExtendedGroupNoticeData> GetGroupNotices(string RequestingAgentID, UUID GroupID);
}
public class GroupInviteInfo
{
public UUID GroupID = UUID.Zero;
public UUID RoleID = UUID.Zero;
public string AgentID = string.Empty;
public UUID InviteID = UUID.Zero;
}
public class GroupNoticeInfo
{
public ExtendedGroupNoticeData noticeData = new ExtendedGroupNoticeData();
public UUID GroupID = UUID.Zero;
public string Message = string.Empty;
}
}

View File

@@ -0,0 +1,325 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Interfaces;
using OpenMetaverse;
using Mono.Addins;
using log4net;
using Nini.Config;
namespace OpenSim.Groups
{
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "GroupsServiceLocalConnectorModule")]
public class GroupsServiceLocalConnectorModule : ISharedRegionModule, IGroupsServicesConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private bool m_Enabled = false;
private GroupsService m_GroupsService;
private IUserManagement m_UserManagement;
private List<Scene> m_Scenes;
private ForeignImporter m_ForeignImporter;
#region constructors
public GroupsServiceLocalConnectorModule()
{
}
public GroupsServiceLocalConnectorModule(IConfigSource config, IUserManagement uman)
{
Init(config);
m_UserManagement = uman;
m_ForeignImporter = new ForeignImporter(uman);
}
#endregion
private void Init(IConfigSource config)
{
m_GroupsService = new GroupsService(config);
m_Scenes = new List<Scene>();
}
#region ISharedRegionModule
public void Initialise(IConfigSource config)
{
IConfig groupsConfig = config.Configs["Groups"];
if (groupsConfig == null)
return;
if ((groupsConfig.GetBoolean("Enabled", false) == false)
|| (groupsConfig.GetString("ServicesConnectorModule", string.Empty) != Name))
{
return;
}
Init(config);
m_Enabled = true;
m_log.DebugFormat("[Groups]: Initializing {0}", this.Name);
}
public string Name
{
get { return "Groups Local Service Connector"; }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (!m_Enabled)
return;
m_log.DebugFormat("[Groups]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Add(scene);
}
public void RemoveRegion(Scene scene)
{
if (!m_Enabled)
return;
scene.UnregisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Remove(scene);
}
public void RegionLoaded(Scene scene)
{
if (!m_Enabled)
return;
if (m_UserManagement == null)
{
m_UserManagement = scene.RequestModuleInterface<IUserManagement>();
m_ForeignImporter = new ForeignImporter(m_UserManagement);
}
}
public void PostInitialise()
{
}
public void Close()
{
}
#endregion
#region IGroupsServicesConnector
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
m_log.DebugFormat("[Groups]: Creating group {0}", name);
reason = string.Empty;
return m_GroupsService.CreateGroup(RequestingAgentID.ToString(), name, charter, showInList, insigniaID,
membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out reason);
}
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason)
{
reason = string.Empty;
m_GroupsService.UpdateGroup(RequestingAgentID, groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish);
return true;
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName)
{
if (GroupID != UUID.Zero)
return m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID);
else if (GroupName != null)
return m_GroupsService.GetGroupRecord(RequestingAgentID, GroupName);
return null;
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search)
{
return m_GroupsService.FindGroups(RequestingAgentID, search);
}
public List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID)
{
List<ExtendedGroupMembersData> _members = m_GroupsService.GetGroupMembers(RequestingAgentID, GroupID);
if (_members != null && _members.Count > 0)
{
List<GroupMembersData> members = _members.ConvertAll<GroupMembersData>(new Converter<ExtendedGroupMembersData, GroupMembersData>(m_ForeignImporter.ConvertGroupMembersData));
return members;
}
return new List<GroupMembersData>();
}
public bool AddGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, out string reason)
{
return m_GroupsService.AddGroupRole(RequestingAgentID, groupID, roleID, name, description, title, powers, out reason);
}
public bool UpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers)
{
return m_GroupsService.UpdateGroupRole(RequestingAgentID, groupID, roleID, name, description, title, powers);
}
public void RemoveGroupRole(string RequestingAgentID, UUID groupID, UUID roleID)
{
m_GroupsService.RemoveGroupRole(RequestingAgentID, groupID, roleID);
}
public List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID GroupID)
{
return m_GroupsService.GetGroupRoles(RequestingAgentID, GroupID);
}
public List<GroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID GroupID)
{
List<ExtendedGroupRoleMembersData> _rm = m_GroupsService.GetGroupRoleMembers(RequestingAgentID, GroupID);
if (_rm != null && _rm.Count > 0)
{
List<GroupRoleMembersData> rm = _rm.ConvertAll<GroupRoleMembersData>(new Converter<ExtendedGroupRoleMembersData, GroupRoleMembersData>(m_ForeignImporter.ConvertGroupRoleMembersData));
return rm;
}
return new List<GroupRoleMembersData>();
}
public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason)
{
return m_GroupsService.AddAgentToGroup(RequestingAgentID, AgentID, GroupID, RoleID, token, out reason);
}
public void RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
m_GroupsService.RemoveAgentFromGroup(RequestingAgentID, AgentID, GroupID);
}
public bool AddAgentToGroupInvite(string RequestingAgentID, UUID inviteID, UUID groupID, UUID roleID, string agentID)
{
return m_GroupsService.AddAgentToGroupInvite(RequestingAgentID, inviteID, groupID, roleID, agentID);
}
public GroupInviteInfo GetAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
return m_GroupsService.GetAgentToGroupInvite(RequestingAgentID, inviteID); ;
}
public void RemoveAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
m_GroupsService.RemoveAgentToGroupInvite(RequestingAgentID, inviteID);
}
public void AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
m_GroupsService.AddAgentToGroupRole(RequestingAgentID, AgentID, GroupID, RoleID);
}
public void RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
m_GroupsService.RemoveAgentFromGroupRole(RequestingAgentID, AgentID, GroupID, RoleID);
}
public List<GroupRolesData> GetAgentGroupRoles(string RequestingAgentID, string AgentID, UUID GroupID)
{
return m_GroupsService.GetAgentGroupRoles(RequestingAgentID, AgentID, GroupID);
}
public void SetAgentActiveGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
m_GroupsService.SetAgentActiveGroup(RequestingAgentID, AgentID, GroupID);
}
public ExtendedGroupMembershipData GetAgentActiveMembership(string RequestingAgentID, string AgentID)
{
return m_GroupsService.GetAgentActiveMembership(RequestingAgentID, AgentID);
}
public void SetAgentActiveGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
m_GroupsService.SetAgentActiveGroupRole(RequestingAgentID, AgentID, GroupID, RoleID);
}
public void UpdateMembership(string RequestingAgentID, string AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile)
{
m_GroupsService.UpdateMembership(RequestingAgentID, AgentID, GroupID, AcceptNotices, ListInProfile);
}
public ExtendedGroupMembershipData GetAgentGroupMembership(string RequestingAgentID, string AgentID, UUID GroupID)
{
return m_GroupsService.GetAgentGroupMembership(RequestingAgentID, AgentID, GroupID); ;
}
public List<GroupMembershipData> GetAgentGroupMemberships(string RequestingAgentID, string AgentID)
{
return m_GroupsService.GetAgentGroupMemberships(RequestingAgentID, AgentID);
}
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
return m_GroupsService.AddGroupNotice(RequestingAgentID, groupID, noticeID, fromName, subject, message,
hasAttachment, attType, attName, attItemID, attOwnerID);
}
public GroupNoticeInfo GetGroupNotice(string RequestingAgentID, UUID noticeID)
{
GroupNoticeInfo notice = m_GroupsService.GetGroupNotice(RequestingAgentID, noticeID);
//if (notice != null && notice.noticeData.HasAttachment && notice.noticeData.AttachmentOwnerID != null)
//{
// UUID userID = UUID.Zero;
// string url = string.Empty, first = string.Empty, last = string.Empty, tmp = string.Empty;
// Util.ParseUniversalUserIdentifier(notice.noticeData.AttachmentOwnerID, out userID, out url, out first, out last, out tmp);
// if (url != string.Empty)
// m_UserManagement.AddUser(userID, first, last, url);
//}
return notice;
}
public List<ExtendedGroupNoticeData> GetGroupNotices(string RequestingAgentID, UUID GroupID)
{
return m_GroupsService.GetGroupNotices(RequestingAgentID, GroupID);
}
#endregion
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Mono.Addins;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Addons.Groups")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("http://opensimulator.org")]
[assembly: AssemblyProduct("OpenSim.Addons.Groups")]
[assembly: AssemblyCopyright("Copyright (c) OpenSimulator.org Developers")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("313d4865-d179-4735-9b5a-fe74885878b2")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.1.*")]
[assembly: Addin("OpenSim.Groups", "0.1")]
[assembly: AddinDependency("OpenSim", "0.5")]

View File

@@ -0,0 +1,696 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using OpenSim.Framework;
using OpenSim.Framework.ServiceAuth;
using OpenSim.Server.Base;
using OpenMetaverse;
using log4net;
using Nini.Config;
namespace OpenSim.Groups
{
public class GroupsServiceRemoteConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private string m_ServerURI;
private IServiceAuth m_Auth;
private object m_Lock = new object();
public GroupsServiceRemoteConnector(IConfigSource config)
{
IConfig groupsConfig = config.Configs["Groups"];
string url = groupsConfig.GetString("GroupsServerURI", string.Empty);
if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
throw new Exception(string.Format("[Groups.RemoteConnector]: Malformed groups server URL {0}. Fix it or disable the Groups feature.", url));
m_ServerURI = url;
if (!m_ServerURI.EndsWith("/"))
m_ServerURI += "/";
/// This is from BaseServiceConnector
string authType = Util.GetConfigVarFromSections<string>(config, "AuthType", new string[] { "Network", "Groups" }, "None");
switch (authType)
{
case "BasicHttpAuthentication":
m_Auth = new BasicHttpAuthentication(config, "Groups");
break;
}
///
m_log.DebugFormat("[Groups.RemoteConnector]: Groups server at {0}, authentication {1}",
m_ServerURI, (m_Auth == null ? "None" : m_Auth.GetType().ToString()));
}
public ExtendedGroupRecord CreateGroup(string RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
reason = string.Empty;
ExtendedGroupRecord rec = new ExtendedGroupRecord();
rec.AllowPublish = allowPublish;
rec.Charter = charter;
rec.FounderID = founderID;
rec.GroupName = name;
rec.GroupPicture = insigniaID;
rec.MaturePublish = maturePublish;
rec.MembershipFee = membershipFee;
rec.OpenEnrollment = openEnrollment;
rec.ShowInList = showInList;
Dictionary<string, object> sendData = GroupsDataUtils.GroupRecord(rec);
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "ADD";
Dictionary<string, object> ret = MakeRequest("PUTGROUP", sendData);
if (ret == null)
return null;
if (ret["RESULT"].ToString() == "NULL")
{
reason = ret["REASON"].ToString();
return null;
}
return GroupsDataUtils.GroupRecord((Dictionary<string, object>)ret["RESULT"]);
}
public ExtendedGroupRecord UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish)
{
ExtendedGroupRecord rec = new ExtendedGroupRecord();
rec.AllowPublish = allowPublish;
rec.Charter = charter;
rec.GroupPicture = insigniaID;
rec.MaturePublish = maturePublish;
rec.GroupID = groupID;
rec.MembershipFee = membershipFee;
rec.OpenEnrollment = openEnrollment;
rec.ShowInList = showInList;
Dictionary<string, object> sendData = GroupsDataUtils.GroupRecord(rec);
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "UPDATE";
Dictionary<string, object> ret = MakeRequest("PUTGROUP", sendData);
if (ret == null || (ret != null && (!ret.ContainsKey("RESULT") || ret["RESULT"].ToString() == "NULL")))
return null;
return GroupsDataUtils.GroupRecord((Dictionary<string, object>)ret["RESULT"]);
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName)
{
if (GroupID == UUID.Zero && (GroupName == null || (GroupName != null && GroupName == string.Empty)))
return null;
Dictionary<string, object> sendData = new Dictionary<string, object>();
if (GroupID != UUID.Zero)
sendData["GroupID"] = GroupID.ToString();
if (!string.IsNullOrEmpty(GroupName))
sendData["Name"] = GroupsDataUtils.Sanitize(GroupName);
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETGROUP", sendData);
if (ret == null || (ret != null && (!ret.ContainsKey("RESULT") || ret["RESULT"].ToString() == "NULL")))
return null;
return GroupsDataUtils.GroupRecord((Dictionary<string, object>)ret["RESULT"]);
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string query)
{
List<DirGroupsReplyData> hits = new List<DirGroupsReplyData>();
if (string.IsNullOrEmpty(query))
return hits;
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["Query"] = query;
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("FINDGROUPS", sendData);
if (ret == null)
return hits;
if (!ret.ContainsKey("RESULT"))
return hits;
if (ret["RESULT"].ToString() == "NULL")
return hits;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
DirGroupsReplyData m = GroupsDataUtils.DirGroupsReplyData((Dictionary<string, object>)v);
hits.Add(m);
}
return hits;
}
public GroupMembershipData AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason)
{
reason = string.Empty;
Dictionary<string, object> sendData = new Dictionary<string,object>();
sendData["AgentID"] = AgentID;
sendData["GroupID"] = GroupID.ToString();
sendData["RoleID"] = RoleID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["AccessToken"] = token;
Dictionary<string, object> ret = MakeRequest("ADDAGENTTOGROUP", sendData);
if (ret == null)
return null;
if (!ret.ContainsKey("RESULT"))
return null;
if (ret["RESULT"].ToString() == "NULL")
{
reason = ret["REASON"].ToString();
return null;
}
return GroupsDataUtils.GroupMembershipData((Dictionary<string, object>)ret["RESULT"]);
}
public void RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID;
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
MakeRequest("REMOVEAGENTFROMGROUP", sendData);
}
public ExtendedGroupMembershipData GetMembership(string RequestingAgentID, string AgentID, UUID GroupID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID;
if (GroupID != UUID.Zero)
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETMEMBERSHIP", sendData);
if (ret == null)
return null;
if (!ret.ContainsKey("RESULT"))
return null;
if (ret["RESULT"].ToString() == "NULL")
return null;
return GroupsDataUtils.GroupMembershipData((Dictionary<string, object>)ret["RESULT"]);
}
public List<GroupMembershipData> GetMemberships(string RequestingAgentID, string AgentID)
{
List<GroupMembershipData> memberships = new List<GroupMembershipData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID;
sendData["ALL"] = "true";
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETMEMBERSHIP", sendData);
if (ret == null)
return memberships;
if (!ret.ContainsKey("RESULT"))
return memberships;
if (ret["RESULT"].ToString() == "NULL")
return memberships;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
GroupMembershipData m = GroupsDataUtils.GroupMembershipData((Dictionary<string, object>)v);
memberships.Add(m);
}
return memberships;
}
public List<ExtendedGroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID)
{
List<ExtendedGroupMembersData> members = new List<ExtendedGroupMembersData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETGROUPMEMBERS", sendData);
if (ret == null)
return members;
if (!ret.ContainsKey("RESULT"))
return members;
if (ret["RESULT"].ToString() == "NULL")
return members;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
ExtendedGroupMembersData m = GroupsDataUtils.GroupMembersData((Dictionary<string, object>)v);
members.Add(m);
}
return members;
}
public bool AddGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, out string reason)
{
reason = string.Empty;
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = groupID.ToString();
sendData["RoleID"] = roleID.ToString();
sendData["Name"] = GroupsDataUtils.Sanitize(name);
sendData["Description"] = GroupsDataUtils.Sanitize(description);
sendData["Title"] = GroupsDataUtils.Sanitize(title);
sendData["Powers"] = powers.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "ADD";
Dictionary<string, object> ret = MakeRequest("PUTROLE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
{
reason = ret["REASON"].ToString();
return false;
}
return true;
}
public bool UpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = groupID.ToString();
sendData["RoleID"] = roleID.ToString();
sendData["Name"] = GroupsDataUtils.Sanitize(name);
sendData["Description"] = GroupsDataUtils.Sanitize(description);
sendData["Title"] = GroupsDataUtils.Sanitize(title);
sendData["Powers"] = powers.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "UPDATE";
Dictionary<string, object> ret = MakeRequest("PUTROLE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
return false;
return true;
}
public void RemoveGroupRole(string RequestingAgentID, UUID groupID, UUID roleID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = groupID.ToString();
sendData["RoleID"] = roleID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
MakeRequest("REMOVEROLE", sendData);
}
public List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID GroupID)
{
List<GroupRolesData> roles = new List<GroupRolesData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETGROUPROLES", sendData);
if (ret == null)
return roles;
if (!ret.ContainsKey("RESULT"))
return roles;
if (ret["RESULT"].ToString() == "NULL")
return roles;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
GroupRolesData m = GroupsDataUtils.GroupRolesData((Dictionary<string, object>)v);
roles.Add(m);
}
return roles;
}
public List<ExtendedGroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID GroupID)
{
List<ExtendedGroupRoleMembersData> rmembers = new List<ExtendedGroupRoleMembersData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETROLEMEMBERS", sendData);
if (ret == null)
return rmembers;
if (!ret.ContainsKey("RESULT"))
return rmembers;
if (ret["RESULT"].ToString() == "NULL")
return rmembers;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
ExtendedGroupRoleMembersData m = GroupsDataUtils.GroupRoleMembersData((Dictionary<string, object>)v);
rmembers.Add(m);
}
return rmembers;
}
public bool AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID.ToString();
sendData["GroupID"] = GroupID.ToString();
sendData["RoleID"] = RoleID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "ADD";
Dictionary<string, object> ret = MakeRequest("AGENTROLE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
return false;
return true;
}
public bool RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID.ToString();
sendData["GroupID"] = GroupID.ToString();
sendData["RoleID"] = RoleID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "DELETE";
Dictionary<string, object> ret = MakeRequest("AGENTROLE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
return false;
return true;
}
public List<GroupRolesData> GetAgentGroupRoles(string RequestingAgentID, string AgentID, UUID GroupID)
{
List<GroupRolesData> roles = new List<GroupRolesData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID.ToString();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETAGENTROLES", sendData);
if (ret == null)
return roles;
if (!ret.ContainsKey("RESULT"))
return roles;
if (ret["RESULT"].ToString() == "NULL")
return roles;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
GroupRolesData m = GroupsDataUtils.GroupRolesData((Dictionary<string, object>)v);
roles.Add(m);
}
return roles;
}
public GroupMembershipData SetAgentActiveGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID.ToString();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "GROUP";
Dictionary<string, object> ret = MakeRequest("SETACTIVE", sendData);
if (ret == null)
return null;
if (!ret.ContainsKey("RESULT"))
return null;
if (ret["RESULT"].ToString() == "NULL")
return null;
return GroupsDataUtils.GroupMembershipData((Dictionary<string, object>)ret["RESULT"]);
}
public void SetAgentActiveGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID.ToString();
sendData["GroupID"] = GroupID.ToString();
sendData["RoleID"] = RoleID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "ROLE";
MakeRequest("SETACTIVE", sendData);
}
public void UpdateMembership(string RequestingAgentID, string AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID.ToString();
sendData["GroupID"] = GroupID.ToString();
sendData["AcceptNotices"] = AcceptNotices.ToString();
sendData["ListInProfile"] = ListInProfile.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
MakeRequest("UPDATEMEMBERSHIP", sendData);
}
public bool AddAgentToGroupInvite(string RequestingAgentID, UUID inviteID, UUID groupID, UUID roleID, string agentID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["InviteID"] = inviteID.ToString();
sendData["GroupID"] = groupID.ToString();
sendData["RoleID"] = roleID.ToString();
sendData["AgentID"] = agentID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "ADD";
Dictionary<string, object> ret = MakeRequest("INVITE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true") // it may return "NULL"
return false;
return true;
}
public GroupInviteInfo GetAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["InviteID"] = inviteID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "GET";
Dictionary<string, object> ret = MakeRequest("INVITE", sendData);
if (ret == null)
return null;
if (!ret.ContainsKey("RESULT"))
return null;
if (ret["RESULT"].ToString() == "NULL")
return null;
return GroupsDataUtils.GroupInviteInfo((Dictionary<string, object>)ret["RESULT"]);
}
public void RemoveAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["InviteID"] = inviteID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["OP"] = "DELETE";
MakeRequest("INVITE", sendData);
}
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = groupID.ToString();
sendData["NoticeID"] = noticeID.ToString();
sendData["FromName"] = GroupsDataUtils.Sanitize(fromName);
sendData["Subject"] = GroupsDataUtils.Sanitize(subject);
sendData["Message"] = GroupsDataUtils.Sanitize(message);
sendData["HasAttachment"] = hasAttachment.ToString();
if (hasAttachment)
{
sendData["AttachmentType"] = attType.ToString();
sendData["AttachmentName"] = attName.ToString();
sendData["AttachmentItemID"] = attItemID.ToString();
sendData["AttachmentOwnerID"] = attOwnerID;
}
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("ADDNOTICE", sendData);
if (ret == null)
return false;
if (!ret.ContainsKey("RESULT"))
return false;
if (ret["RESULT"].ToString().ToLower() != "true")
return false;
return true;
}
public GroupNoticeInfo GetGroupNotice(string RequestingAgentID, UUID noticeID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["NoticeID"] = noticeID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETNOTICES", sendData);
if (ret == null)
return null;
if (!ret.ContainsKey("RESULT"))
return null;
if (ret["RESULT"].ToString() == "NULL")
return null;
return GroupsDataUtils.GroupNoticeInfo((Dictionary<string, object>)ret["RESULT"]);
}
public List<ExtendedGroupNoticeData> GetGroupNotices(string RequestingAgentID, UUID GroupID)
{
List<ExtendedGroupNoticeData> notices = new List<ExtendedGroupNoticeData>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETNOTICES", sendData);
if (ret == null)
return notices;
if (!ret.ContainsKey("RESULT"))
return notices;
if (ret["RESULT"].ToString() == "NULL")
return notices;
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
ExtendedGroupNoticeData m = GroupsDataUtils.GroupNoticeData((Dictionary<string, object>)v);
notices.Add(m);
}
return notices;
}
#region Make Request
private Dictionary<string, object> MakeRequest(string method, Dictionary<string, object> sendData)
{
sendData["METHOD"] = method;
string reply = string.Empty;
lock (m_Lock)
reply = SynchronousRestFormsRequester.MakeRequest("POST",
m_ServerURI + "groups",
ServerUtils.BuildQueryString(sendData),
m_Auth);
if (reply == string.Empty)
return null;
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(
reply);
return replyData;
}
#endregion
}
}

View File

@@ -0,0 +1,407 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Text;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Server.Base;
using OpenMetaverse;
using Mono.Addins;
using log4net;
using Nini.Config;
namespace OpenSim.Groups
{
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "GroupsServiceRemoteConnectorModule")]
public class GroupsServiceRemoteConnectorModule : ISharedRegionModule, IGroupsServicesConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private bool m_Enabled = false;
private GroupsServiceRemoteConnector m_GroupsService;
private IUserManagement m_UserManagement;
private List<Scene> m_Scenes;
private RemoteConnectorCacheWrapper m_CacheWrapper;
#region constructors
public GroupsServiceRemoteConnectorModule()
{
}
public GroupsServiceRemoteConnectorModule(IConfigSource config, IUserManagement uman)
{
Init(config);
m_UserManagement = uman;
m_CacheWrapper = new RemoteConnectorCacheWrapper(m_UserManagement);
}
#endregion
private void Init(IConfigSource config)
{
m_GroupsService = new GroupsServiceRemoteConnector(config);
m_Scenes = new List<Scene>();
}
#region ISharedRegionModule
public void Initialise(IConfigSource config)
{
IConfig groupsConfig = config.Configs["Groups"];
if (groupsConfig == null)
return;
if ((groupsConfig.GetBoolean("Enabled", false) == false)
|| (groupsConfig.GetString("ServicesConnectorModule", string.Empty) != Name))
{
return;
}
Init(config);
m_Enabled = true;
m_log.DebugFormat("[Groups.RemoteConnector]: Initializing {0}", this.Name);
}
public string Name
{
get { return "Groups Remote Service Connector"; }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (!m_Enabled)
return;
m_log.DebugFormat("[Groups.RemoteConnector]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Add(scene);
}
public void RemoveRegion(Scene scene)
{
if (!m_Enabled)
return;
scene.UnregisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Remove(scene);
}
public void RegionLoaded(Scene scene)
{
if (!m_Enabled)
return;
if (m_UserManagement == null)
{
m_UserManagement = scene.RequestModuleInterface<IUserManagement>();
m_CacheWrapper = new RemoteConnectorCacheWrapper(m_UserManagement);
}
}
public void PostInitialise()
{
}
public void Close()
{
}
#endregion
#region IGroupsServicesConnector
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
m_log.DebugFormat("[Groups.RemoteConnector]: Creating group {0}", name);
string r = string.Empty;
UUID groupID = m_CacheWrapper.CreateGroup(RequestingAgentID, delegate
{
return m_GroupsService.CreateGroup(RequestingAgentID.ToString(), name, charter, showInList, insigniaID,
membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out r);
});
reason = r;
return groupID;
}
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason)
{
string r = string.Empty;
bool success = m_CacheWrapper.UpdateGroup(groupID, delegate
{
return m_GroupsService.UpdateGroup(RequestingAgentID, groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish);
});
reason = r;
return success;
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName)
{
if (GroupID == UUID.Zero && (GroupName == null || GroupName != null && GroupName == string.Empty))
return null;
return m_CacheWrapper.GetGroupRecord(RequestingAgentID,GroupID,GroupName, delegate
{
return m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID, GroupName);
});
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search)
{
// TODO!
return m_GroupsService.FindGroups(RequestingAgentID, search);
}
public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason)
{
string agentFullID = AgentID;
m_log.DebugFormat("[Groups.RemoteConnector]: Add agent {0} to group {1}", agentFullID, GroupID);
string r = string.Empty;
bool success = m_CacheWrapper.AddAgentToGroup(RequestingAgentID, AgentID, GroupID, delegate
{
return m_GroupsService.AddAgentToGroup(RequestingAgentID, agentFullID, GroupID, RoleID, token, out r);
});
reason = r;
return success;
}
public void RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
m_CacheWrapper.RemoveAgentFromGroup(RequestingAgentID, AgentID, GroupID, delegate
{
m_GroupsService.RemoveAgentFromGroup(RequestingAgentID, AgentID, GroupID);
});
}
public void SetAgentActiveGroup(string RequestingAgentID, string AgentID, UUID GroupID)
{
m_CacheWrapper.SetAgentActiveGroup(AgentID, delegate
{
return m_GroupsService.SetAgentActiveGroup(RequestingAgentID, AgentID, GroupID);
});
}
public ExtendedGroupMembershipData GetAgentActiveMembership(string RequestingAgentID, string AgentID)
{
return m_CacheWrapper.GetAgentActiveMembership(AgentID, delegate
{
return m_GroupsService.GetMembership(RequestingAgentID, AgentID, UUID.Zero);
});
}
public ExtendedGroupMembershipData GetAgentGroupMembership(string RequestingAgentID, string AgentID, UUID GroupID)
{
return m_CacheWrapper.GetAgentGroupMembership(AgentID, GroupID, delegate
{
return m_GroupsService.GetMembership(RequestingAgentID, AgentID, GroupID);
});
}
public List<GroupMembershipData> GetAgentGroupMemberships(string RequestingAgentID, string AgentID)
{
return m_CacheWrapper.GetAgentGroupMemberships(AgentID, delegate
{
return m_GroupsService.GetMemberships(RequestingAgentID, AgentID);
});
}
public List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID)
{
return m_CacheWrapper.GetGroupMembers(RequestingAgentID, GroupID, delegate
{
return m_GroupsService.GetGroupMembers(RequestingAgentID, GroupID);
});
}
public bool AddGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, out string reason)
{
string r = string.Empty;
bool success = m_CacheWrapper.AddGroupRole(groupID, roleID, description, name, powers, title, delegate
{
return m_GroupsService.AddGroupRole(RequestingAgentID, groupID, roleID, name, description, title, powers, out r);
});
reason = r;
return success;
}
public bool UpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers)
{
return m_CacheWrapper.UpdateGroupRole(groupID, roleID, name, description, title, powers, delegate
{
return m_GroupsService.UpdateGroupRole(RequestingAgentID, groupID, roleID, name, description, title, powers);
});
}
public void RemoveGroupRole(string RequestingAgentID, UUID groupID, UUID roleID)
{
m_CacheWrapper.RemoveGroupRole(RequestingAgentID, groupID, roleID, delegate
{
m_GroupsService.RemoveGroupRole(RequestingAgentID, groupID, roleID);
});
}
public List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID GroupID)
{
return m_CacheWrapper.GetGroupRoles(RequestingAgentID, GroupID, delegate
{
return m_GroupsService.GetGroupRoles(RequestingAgentID, GroupID);
});
}
public List<GroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID GroupID)
{
return m_CacheWrapper.GetGroupRoleMembers(RequestingAgentID, GroupID, delegate
{
return m_GroupsService.GetGroupRoleMembers(RequestingAgentID, GroupID);
});
}
public void AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
m_CacheWrapper.AddAgentToGroupRole(RequestingAgentID, AgentID, GroupID, RoleID, delegate
{
return m_GroupsService.AddAgentToGroupRole(RequestingAgentID, AgentID, GroupID, RoleID);
});
}
public void RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
m_CacheWrapper.RemoveAgentFromGroupRole(RequestingAgentID, AgentID, GroupID, RoleID, delegate
{
return m_GroupsService.RemoveAgentFromGroupRole(RequestingAgentID, AgentID, GroupID, RoleID);
});
}
public List<GroupRolesData> GetAgentGroupRoles(string RequestingAgentID, string AgentID, UUID GroupID)
{
return m_CacheWrapper.GetAgentGroupRoles(RequestingAgentID, AgentID, GroupID, delegate
{
return m_GroupsService.GetAgentGroupRoles(RequestingAgentID, AgentID, GroupID); ;
});
}
public void SetAgentActiveGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
m_CacheWrapper.SetAgentActiveGroupRole(AgentID, GroupID, delegate
{
m_GroupsService.SetAgentActiveGroupRole(RequestingAgentID, AgentID, GroupID, RoleID);
});
}
public void UpdateMembership(string RequestingAgentID, string AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile)
{
m_CacheWrapper.UpdateMembership(AgentID, GroupID, AcceptNotices, ListInProfile, delegate
{
m_GroupsService.UpdateMembership(RequestingAgentID, AgentID, GroupID, AcceptNotices, ListInProfile);
});
}
public bool AddAgentToGroupInvite(string RequestingAgentID, UUID inviteID, UUID groupID, UUID roleID, string agentID)
{
return m_GroupsService.AddAgentToGroupInvite(RequestingAgentID, inviteID, groupID, roleID, agentID);
}
public GroupInviteInfo GetAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
return m_GroupsService.GetAgentToGroupInvite(RequestingAgentID, inviteID);
}
public void RemoveAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
m_GroupsService.RemoveAgentToGroupInvite(RequestingAgentID, inviteID);
}
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
GroupNoticeInfo notice = new GroupNoticeInfo();
notice.GroupID = groupID;
notice.Message = message;
notice.noticeData = new ExtendedGroupNoticeData();
notice.noticeData.AttachmentItemID = attItemID;
notice.noticeData.AttachmentName = attName;
notice.noticeData.AttachmentOwnerID = attOwnerID.ToString();
notice.noticeData.AttachmentType = attType;
notice.noticeData.FromName = fromName;
notice.noticeData.HasAttachment = hasAttachment;
notice.noticeData.NoticeID = noticeID;
notice.noticeData.Subject = subject;
notice.noticeData.Timestamp = (uint)Util.UnixTimeSinceEpoch();
return m_CacheWrapper.AddGroupNotice(groupID, noticeID, notice, delegate
{
return m_GroupsService.AddGroupNotice(RequestingAgentID, groupID, noticeID, fromName, subject, message,
hasAttachment, attType, attName, attItemID, attOwnerID);
});
}
public GroupNoticeInfo GetGroupNotice(string RequestingAgentID, UUID noticeID)
{
return m_CacheWrapper.GetGroupNotice(noticeID, delegate
{
return m_GroupsService.GetGroupNotice(RequestingAgentID, noticeID);
});
}
public List<ExtendedGroupNoticeData> GetGroupNotices(string RequestingAgentID, UUID GroupID)
{
return m_CacheWrapper.GetGroupNotices(GroupID, delegate
{
return m_GroupsService.GetGroupNotices(RequestingAgentID, GroupID);
});
}
#endregion
}
}

View File

@@ -0,0 +1,816 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using System.Text;
using System.Xml;
using System.Collections.Generic;
using System.IO;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Framework.ServiceAuth;
using OpenSim.Server.Handlers.Base;
using log4net;
using OpenMetaverse;
namespace OpenSim.Groups
{
public class GroupsServiceRobustConnector : ServiceConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private GroupsService m_GroupsService;
private string m_ConfigName = "Groups";
public GroupsServiceRobustConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
string key = string.Empty;
if (configName != String.Empty)
m_ConfigName = configName;
m_log.DebugFormat("[Groups.RobustConnector]: Starting with config name {0}", m_ConfigName);
IConfig groupsConfig = config.Configs[m_ConfigName];
if (groupsConfig != null)
{
key = groupsConfig.GetString("SecretKey", string.Empty);
m_log.DebugFormat("[Groups.RobustConnector]: Starting with secret key {0}", key);
}
// else
// m_log.DebugFormat("[Groups.RobustConnector]: Unable to find {0} section in configuration", m_ConfigName);
m_GroupsService = new GroupsService(config);
IServiceAuth auth = ServiceAuth.Create(config, m_ConfigName);
server.AddStreamHandler(new GroupsServicePostHandler(m_GroupsService, auth));
}
}
public class GroupsServicePostHandler : BaseStreamHandler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private GroupsService m_GroupsService;
public GroupsServicePostHandler(GroupsService service, IServiceAuth auth) :
base("POST", "/groups", auth)
{
m_GroupsService = service;
}
protected override byte[] ProcessRequest(string path, Stream requestData,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
StreamReader sr = new StreamReader(requestData);
string body = sr.ReadToEnd();
sr.Close();
body = body.Trim();
//m_log.DebugFormat("[XXX]: query String: {0}", body);
try
{
Dictionary<string, object> request =
ServerUtils.ParseQueryString(body);
if (!request.ContainsKey("METHOD"))
return FailureResult();
string method = request["METHOD"].ToString();
request.Remove("METHOD");
// m_log.DebugFormat("[Groups.Handler]: {0}", method);
switch (method)
{
case "PUTGROUP":
return HandleAddOrUpdateGroup(request);
case "GETGROUP":
return HandleGetGroup(request);
case "ADDAGENTTOGROUP":
return HandleAddAgentToGroup(request);
case "REMOVEAGENTFROMGROUP":
return HandleRemoveAgentFromGroup(request);
case "GETMEMBERSHIP":
return HandleGetMembership(request);
case "GETGROUPMEMBERS":
return HandleGetGroupMembers(request);
case "PUTROLE":
return HandlePutRole(request);
case "REMOVEROLE":
return HandleRemoveRole(request);
case "GETGROUPROLES":
return HandleGetGroupRoles(request);
case "GETROLEMEMBERS":
return HandleGetRoleMembers(request);
case "AGENTROLE":
return HandleAgentRole(request);
case "GETAGENTROLES":
return HandleGetAgentRoles(request);
case "SETACTIVE":
return HandleSetActive(request);
case "UPDATEMEMBERSHIP":
return HandleUpdateMembership(request);
case "INVITE":
return HandleInvite(request);
case "ADDNOTICE":
return HandleAddNotice(request);
case "GETNOTICES":
return HandleGetNotices(request);
case "FINDGROUPS":
return HandleFindGroups(request);
}
m_log.DebugFormat("[GROUPS HANDLER]: unknown method request: {0}", method);
}
catch (Exception e)
{
m_log.Error(string.Format("[GROUPS HANDLER]: Exception {0} ", e.Message), e);
}
return FailureResult();
}
byte[] HandleAddOrUpdateGroup(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
ExtendedGroupRecord grec = GroupsDataUtils.GroupRecord(request);
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("OP"))
NullResult(result, "Bad network data");
else
{
string RequestingAgentID = request["RequestingAgentID"].ToString();
string reason = string.Empty;
string op = request["OP"].ToString();
if (op == "ADD")
{
grec.GroupID = m_GroupsService.CreateGroup(RequestingAgentID, grec.GroupName, grec.Charter, grec.ShowInList, grec.GroupPicture, grec.MembershipFee,
grec.OpenEnrollment, grec.AllowPublish, grec.MaturePublish, grec.FounderID, out reason);
}
else if (op == "UPDATE")
{
m_GroupsService.UpdateGroup(RequestingAgentID, grec.GroupID, grec.Charter, grec.ShowInList, grec.GroupPicture, grec.MembershipFee,
grec.OpenEnrollment, grec.AllowPublish, grec.MaturePublish);
}
if (grec.GroupID != UUID.Zero)
{
grec = m_GroupsService.GetGroupRecord(RequestingAgentID, grec.GroupID);
if (grec == null)
NullResult(result, "Internal Error");
else
result["RESULT"] = GroupsDataUtils.GroupRecord(grec);
}
else
NullResult(result, reason);
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetGroup(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID"))
NullResult(result, "Bad network data");
else
{
string RequestingAgentID = request["RequestingAgentID"].ToString();
ExtendedGroupRecord grec = null;
if (request.ContainsKey("GroupID"))
{
UUID groupID = new UUID(request["GroupID"].ToString());
grec = m_GroupsService.GetGroupRecord(RequestingAgentID, groupID);
}
else if (request.ContainsKey("Name"))
{
string name = request["Name"].ToString();
grec = m_GroupsService.GetGroupRecord(RequestingAgentID, name);
}
if (grec == null)
NullResult(result, "Group not found");
else
result["RESULT"] = GroupsDataUtils.GroupRecord(grec);
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleAddAgentToGroup(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("AgentID") ||
!request.ContainsKey("GroupID") || !request.ContainsKey("RoleID"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
UUID roleID = new UUID(request["RoleID"].ToString());
string agentID = request["AgentID"].ToString();
string requestingAgentID = request["RequestingAgentID"].ToString();
string token = string.Empty;
string reason = string.Empty;
if (request.ContainsKey("AccessToken"))
token = request["AccessToken"].ToString();
if (!m_GroupsService.AddAgentToGroup(requestingAgentID, agentID, groupID, roleID, token, out reason))
NullResult(result, reason);
else
{
GroupMembershipData membership = m_GroupsService.GetAgentGroupMembership(requestingAgentID, agentID, groupID);
if (membership == null)
NullResult(result, "Internal error");
else
result["RESULT"] = GroupsDataUtils.GroupMembershipData((ExtendedGroupMembershipData)membership);
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleRemoveAgentFromGroup(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("AgentID") || !request.ContainsKey("GroupID"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string agentID = request["AgentID"].ToString();
string requestingAgentID = request["RequestingAgentID"].ToString();
if (!m_GroupsService.RemoveAgentFromGroup(requestingAgentID, agentID, groupID))
NullResult(result, string.Format("Insufficient permissions.", agentID));
else
result["RESULT"] = "true";
}
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
byte[] HandleGetMembership(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("AgentID"))
NullResult(result, "Bad network data");
else
{
string agentID = request["AgentID"].ToString();
UUID groupID = UUID.Zero;
if (request.ContainsKey("GroupID"))
groupID = new UUID(request["GroupID"].ToString());
string requestingAgentID = request["RequestingAgentID"].ToString();
bool all = request.ContainsKey("ALL");
if (!all)
{
ExtendedGroupMembershipData membership = null;
if (groupID == UUID.Zero)
{
membership = m_GroupsService.GetAgentActiveMembership(requestingAgentID, agentID);
}
else
{
membership = m_GroupsService.GetAgentGroupMembership(requestingAgentID, agentID, groupID);
}
if (membership == null)
NullResult(result, "No such membership");
else
result["RESULT"] = GroupsDataUtils.GroupMembershipData(membership);
}
else
{
List<GroupMembershipData> memberships = m_GroupsService.GetAgentGroupMemberships(requestingAgentID, agentID);
if (memberships == null || (memberships != null && memberships.Count == 0))
{
NullResult(result, "No memberships");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (GroupMembershipData m in memberships)
dict["m-" + i++] = GroupsDataUtils.GroupMembershipData((ExtendedGroupMembershipData)m);
result["RESULT"] = dict;
}
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetGroupMembers(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string requestingAgentID = request["RequestingAgentID"].ToString();
List<ExtendedGroupMembersData> members = m_GroupsService.GetGroupMembers(requestingAgentID, groupID);
if (members == null || (members != null && members.Count == 0))
{
NullResult(result, "No members");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (ExtendedGroupMembersData m in members)
{
dict["m-" + i++] = GroupsDataUtils.GroupMembersData(m);
}
result["RESULT"] = dict;
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandlePutRole(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("RoleID") ||
!request.ContainsKey("Name") || !request.ContainsKey("Description") || !request.ContainsKey("Title") ||
!request.ContainsKey("Powers") || !request.ContainsKey("OP"))
NullResult(result, "Bad network data");
else
{
string op = request["OP"].ToString();
string reason = string.Empty;
bool success = false;
if (op == "ADD")
success = m_GroupsService.AddGroupRole(request["RequestingAgentID"].ToString(), new UUID(request["GroupID"].ToString()),
new UUID(request["RoleID"].ToString()), request["Name"].ToString(), request["Description"].ToString(),
request["Title"].ToString(), UInt64.Parse(request["Powers"].ToString()), out reason);
else if (op == "UPDATE")
success = m_GroupsService.UpdateGroupRole(request["RequestingAgentID"].ToString(), new UUID(request["GroupID"].ToString()),
new UUID(request["RoleID"].ToString()), request["Name"].ToString(), request["Description"].ToString(),
request["Title"].ToString(), UInt64.Parse(request["Powers"].ToString()));
result["RESULT"] = success.ToString();
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleRemoveRole(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("RoleID"))
NullResult(result, "Bad network data");
else
{
m_GroupsService.RemoveGroupRole(request["RequestingAgentID"].ToString(), new UUID(request["GroupID"].ToString()),
new UUID(request["RoleID"].ToString()));
result["RESULT"] = "true";
}
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
byte[] HandleGetGroupRoles(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string requestingAgentID = request["RequestingAgentID"].ToString();
List<GroupRolesData> roles = m_GroupsService.GetGroupRoles(requestingAgentID, groupID);
if (roles == null || (roles != null && roles.Count == 0))
{
NullResult(result, "No members");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (GroupRolesData r in roles)
dict["r-" + i++] = GroupsDataUtils.GroupRolesData(r);
result["RESULT"] = dict;
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetRoleMembers(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string requestingAgentID = request["RequestingAgentID"].ToString();
List<ExtendedGroupRoleMembersData> rmembers = m_GroupsService.GetGroupRoleMembers(requestingAgentID, groupID);
if (rmembers == null || (rmembers != null && rmembers.Count == 0))
{
NullResult(result, "No members");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (ExtendedGroupRoleMembersData rm in rmembers)
dict["rm-" + i++] = GroupsDataUtils.GroupRoleMembersData(rm);
result["RESULT"] = dict;
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleAgentRole(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("RoleID") ||
!request.ContainsKey("AgentID") || !request.ContainsKey("OP"))
NullResult(result, "Bad network data");
else
{
string op = request["OP"].ToString();
bool success = false;
if (op == "ADD")
success = m_GroupsService.AddAgentToGroupRole(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(),
new UUID(request["GroupID"].ToString()), new UUID(request["RoleID"].ToString()));
else if (op == "DELETE")
success = m_GroupsService.RemoveAgentFromGroupRole(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(),
new UUID(request["GroupID"].ToString()), new UUID(request["RoleID"].ToString()));
result["RESULT"] = success.ToString();
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetAgentRoles(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("AgentID"))
NullResult(result, "Bad network data");
else
{
UUID groupID = new UUID(request["GroupID"].ToString());
string agentID = request["AgentID"].ToString();
string requestingAgentID = request["RequestingAgentID"].ToString();
List<GroupRolesData> roles = m_GroupsService.GetAgentGroupRoles(requestingAgentID, agentID, groupID);
if (roles == null || (roles != null && roles.Count == 0))
{
NullResult(result, "No members");
}
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (GroupRolesData r in roles)
dict["r-" + i++] = GroupsDataUtils.GroupRolesData(r);
result["RESULT"] = dict;
}
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleSetActive(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") ||
!request.ContainsKey("AgentID") || !request.ContainsKey("OP"))
{
NullResult(result, "Bad network data");
string xmlString = ServerUtils.BuildXmlResponse(result);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
else
{
string op = request["OP"].ToString();
if (op == "GROUP")
{
ExtendedGroupMembershipData group = m_GroupsService.SetAgentActiveGroup(request["RequestingAgentID"].ToString(),
request["AgentID"].ToString(), new UUID(request["GroupID"].ToString()));
if (group == null)
NullResult(result, "Internal error");
else
result["RESULT"] = GroupsDataUtils.GroupMembershipData(group);
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
else if (op == "ROLE" && request.ContainsKey("RoleID"))
{
m_GroupsService.SetAgentActiveGroupRole(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(),
new UUID(request["GroupID"].ToString()), new UUID(request["RoleID"].ToString()));
result["RESULT"] = "true";
}
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
}
byte[] HandleUpdateMembership(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("AgentID") || !request.ContainsKey("GroupID") ||
!request.ContainsKey("AcceptNotices") || !request.ContainsKey("ListInProfile"))
NullResult(result, "Bad network data");
else
{
m_GroupsService.UpdateMembership(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(), new UUID(request["GroupID"].ToString()),
bool.Parse(request["AcceptNotices"].ToString()), bool.Parse(request["ListInProfile"].ToString()));
result["RESULT"] = "true";
}
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
byte[] HandleInvite(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("InviteID"))
{
NullResult(result, "Bad network data");
string xmlString = ServerUtils.BuildXmlResponse(result);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
else
{
string op = request["OP"].ToString();
if (op == "ADD" && request.ContainsKey("GroupID") && request.ContainsKey("RoleID") && request.ContainsKey("AgentID"))
{
bool success = m_GroupsService.AddAgentToGroupInvite(request["RequestingAgentID"].ToString(),
new UUID(request["InviteID"].ToString()), new UUID(request["GroupID"].ToString()),
new UUID(request["RoleID"].ToString()), request["AgentID"].ToString());
result["RESULT"] = success.ToString();
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
else if (op == "DELETE")
{
m_GroupsService.RemoveAgentToGroupInvite(request["RequestingAgentID"].ToString(), new UUID(request["InviteID"].ToString()));
result["RESULT"] = "true";
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
else if (op == "GET")
{
GroupInviteInfo invite = m_GroupsService.GetAgentToGroupInvite(request["RequestingAgentID"].ToString(),
new UUID(request["InviteID"].ToString()));
if (invite != null)
result["RESULT"] = GroupsDataUtils.GroupInviteInfo(invite);
else
result["RESULT"] = "NULL";
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
NullResult(result, "Bad OP in request");
return Util.UTF8NoBomEncoding.GetBytes(ServerUtils.BuildXmlResponse(result));
}
}
byte[] HandleAddNotice(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("NoticeID") ||
!request.ContainsKey("FromName") || !request.ContainsKey("Subject") || !request.ContainsKey("Message") ||
!request.ContainsKey("HasAttachment"))
NullResult(result, "Bad network data");
else
{
bool hasAtt = bool.Parse(request["HasAttachment"].ToString());
byte attType = 0;
string attName = string.Empty;
string attOwner = string.Empty;
UUID attItem = UUID.Zero;
if (request.ContainsKey("AttachmentType"))
attType = byte.Parse(request["AttachmentType"].ToString());
if (request.ContainsKey("AttachmentName"))
attName = request["AttachmentName"].ToString();
if (request.ContainsKey("AttachmentItemID"))
attItem = new UUID(request["AttachmentItemID"].ToString());
if (request.ContainsKey("AttachmentOwnerID"))
attOwner = request["AttachmentOwnerID"].ToString();
bool success = m_GroupsService.AddGroupNotice(request["RequestingAgentID"].ToString(), new UUID(request["GroupID"].ToString()),
new UUID(request["NoticeID"].ToString()), request["FromName"].ToString(), request["Subject"].ToString(),
request["Message"].ToString(), hasAtt, attType, attName, attItem, attOwner);
result["RESULT"] = success.ToString();
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGetNotices(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID"))
NullResult(result, "Bad network data");
else if (request.ContainsKey("NoticeID")) // just one
{
GroupNoticeInfo notice = m_GroupsService.GetGroupNotice(request["RequestingAgentID"].ToString(), new UUID(request["NoticeID"].ToString()));
if (notice == null)
NullResult(result, "NO such notice");
else
result["RESULT"] = GroupsDataUtils.GroupNoticeInfo(notice);
}
else if (request.ContainsKey("GroupID")) // all notices for group
{
List<ExtendedGroupNoticeData> notices = m_GroupsService.GetGroupNotices(request["RequestingAgentID"].ToString(), new UUID(request["GroupID"].ToString()));
if (notices == null || (notices != null && notices.Count == 0))
NullResult(result, "No notices");
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (ExtendedGroupNoticeData n in notices)
dict["n-" + i++] = GroupsDataUtils.GroupNoticeData(n);
result["RESULT"] = dict;
}
}
else
NullResult(result, "Bad OP in request");
string xmlString = ServerUtils.BuildXmlResponse(result);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleFindGroups(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("Query"))
NullResult(result, "Bad network data");
List<DirGroupsReplyData> hits = m_GroupsService.FindGroups(request["RequestingAgentID"].ToString(), request["Query"].ToString());
if (hits == null || (hits != null && hits.Count == 0))
NullResult(result, "No hits");
else
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (DirGroupsReplyData n in hits)
dict["n-" + i++] = GroupsDataUtils.DirGroupsReplyData(n);
result["RESULT"] = dict;
}
string xmlString = ServerUtils.BuildXmlResponse(result);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
#region Helpers
private void NullResult(Dictionary<string, object> result, string reason)
{
result["RESULT"] = "NULL";
result["REASON"] = reason;
}
private byte[] FailureResult()
{
Dictionary<string, object> result = new Dictionary<string, object>();
NullResult(result, "Unknown method");
string xmlString = ServerUtils.BuildXmlResponse(result);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
private byte[] FailureResult(string reason)
{
Dictionary<string, object> result = new Dictionary<string, object>();
NullResult(result, reason);
string xmlString = ServerUtils.BuildXmlResponse(result);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
#endregion
}
}

View File

@@ -0,0 +1,828 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Threading;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenMetaverse;
namespace OpenSim.Groups
{
public delegate ExtendedGroupRecord GroupRecordDelegate();
public delegate GroupMembershipData GroupMembershipDelegate();
public delegate List<GroupMembershipData> GroupMembershipListDelegate();
public delegate List<ExtendedGroupMembersData> GroupMembersListDelegate();
public delegate List<GroupRolesData> GroupRolesListDelegate();
public delegate List<ExtendedGroupRoleMembersData> RoleMembersListDelegate();
public delegate GroupNoticeInfo NoticeDelegate();
public delegate List<ExtendedGroupNoticeData> NoticeListDelegate();
public delegate void VoidDelegate();
public delegate bool BooleanDelegate();
public class RemoteConnectorCacheWrapper
{
private ForeignImporter m_ForeignImporter;
private Dictionary<string, bool> m_ActiveRequests = new Dictionary<string, bool>();
private const int GROUPS_CACHE_TIMEOUT = 1 * 60; // 1 minutes
// This all important cache cahces objects of different types:
// group-<GroupID> or group-<Name> => ExtendedGroupRecord
// active-<AgentID> => GroupMembershipData
// membership-<AgentID>-<GroupID> => GroupMembershipData
// memberships-<AgentID> => List<GroupMembershipData>
// members-<RequestingAgentID>-<GroupID> => List<ExtendedGroupMembersData>
// role-<RoleID> => GroupRolesData
// roles-<GroupID> => List<GroupRolesData> ; all roles in the group
// roles-<GroupID>-<AgentID> => List<GroupRolesData> ; roles that the agent has
// rolemembers-<RequestingAgentID>-<GroupID> => List<ExtendedGroupRoleMembersData>
// notice-<noticeID> => GroupNoticeInfo
// notices-<GroupID> => List<ExtendedGroupNoticeData>
private ExpiringCache<string, object> m_Cache = new ExpiringCache<string, object>();
public RemoteConnectorCacheWrapper(IUserManagement uman)
{
m_ForeignImporter = new ForeignImporter(uman);
}
public UUID CreateGroup(UUID RequestingAgentID, GroupRecordDelegate d)
{
//m_log.DebugFormat("[Groups.RemoteConnector]: Creating group {0}", name);
//reason = string.Empty;
//ExtendedGroupRecord group = m_GroupsService.CreateGroup(RequestingAgentID.ToString(), name, charter, showInList, insigniaID,
// membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out reason);
ExtendedGroupRecord group = d();
if (group == null)
return UUID.Zero;
if (group.GroupID != UUID.Zero)
lock (m_Cache)
{
m_Cache.Add("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT);
if (m_Cache.Contains("memberships-" + RequestingAgentID.ToString()))
m_Cache.Remove("memberships-" + RequestingAgentID.ToString());
}
return group.GroupID;
}
public bool UpdateGroup(UUID groupID, GroupRecordDelegate d)
{
//reason = string.Empty;
//ExtendedGroupRecord group = m_GroupsService.UpdateGroup(RequestingAgentID, groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish);
ExtendedGroupRecord group = d();
if (group != null && group.GroupID != UUID.Zero)
lock (m_Cache)
m_Cache.AddOrUpdate("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT);
return true;
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName, GroupRecordDelegate d)
{
//if (GroupID == UUID.Zero && (GroupName == null || GroupName != null && GroupName == string.Empty))
// return null;
object group = null;
bool firstCall = false;
string cacheKey = "group-";
if (GroupID != UUID.Zero)
cacheKey += GroupID.ToString();
else
cacheKey += GroupName;
//m_log.DebugFormat("[XXX]: GetGroupRecord {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out group))
{
//m_log.DebugFormat("[XXX]: GetGroupRecord {0} cached!", cacheKey);
return (ExtendedGroupRecord)group;
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
//group = m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID, GroupName);
group = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, group, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (ExtendedGroupRecord)group;
}
}
else
Thread.Sleep(50);
}
}
public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, GroupMembershipDelegate d)
{
GroupMembershipData membership = d();
if (membership == null)
return false;
lock (m_Cache)
{
// first, remove everything! add a user is a heavy-duty op
m_Cache.Clear();
m_Cache.AddOrUpdate("active-" + AgentID.ToString(), membership, GROUPS_CACHE_TIMEOUT);
m_Cache.AddOrUpdate("membership-" + AgentID.ToString() + "-" + GroupID.ToString(), membership, GROUPS_CACHE_TIMEOUT);
}
return true;
}
public void RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID, VoidDelegate d)
{
d();
lock (m_Cache)
{
string cacheKey = "active-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "memberships-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "membership-" + AgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "members-" + RequestingAgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "roles-" + "-" + GroupID.ToString() + "-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
}
}
public void SetAgentActiveGroup(string AgentID, GroupMembershipDelegate d)
{
GroupMembershipData activeGroup = d();
string cacheKey = "active-" + AgentID.ToString();
lock (m_Cache)
if (m_Cache.Contains(cacheKey))
m_Cache.AddOrUpdate(cacheKey, activeGroup, GROUPS_CACHE_TIMEOUT);
}
public ExtendedGroupMembershipData GetAgentActiveMembership(string AgentID, GroupMembershipDelegate d)
{
object membership = null;
bool firstCall = false;
string cacheKey = "active-" + AgentID.ToString();
//m_log.DebugFormat("[XXX]: GetAgentActiveMembership {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out membership))
{
//m_log.DebugFormat("[XXX]: GetAgentActiveMembership {0} cached!", cacheKey);
return (ExtendedGroupMembershipData)membership;
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
membership = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, membership, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (ExtendedGroupMembershipData)membership;
}
}
else
Thread.Sleep(50);
}
}
public ExtendedGroupMembershipData GetAgentGroupMembership(string AgentID, UUID GroupID, GroupMembershipDelegate d)
{
object membership = null;
bool firstCall = false;
string cacheKey = "membership-" + AgentID.ToString() + "-" + GroupID.ToString();
//m_log.DebugFormat("[XXX]: GetAgentGroupMembership {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out membership))
{
//m_log.DebugFormat("[XXX]: GetAgentGroupMembership {0}", cacheKey);
return (ExtendedGroupMembershipData)membership;
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
membership = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, membership, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (ExtendedGroupMembershipData)membership;
}
}
else
Thread.Sleep(50);
}
}
public List<GroupMembershipData> GetAgentGroupMemberships(string AgentID, GroupMembershipListDelegate d)
{
object memberships = null;
bool firstCall = false;
string cacheKey = "memberships-" + AgentID.ToString();
//m_log.DebugFormat("[XXX]: GetAgentGroupMemberships {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out memberships))
{
//m_log.DebugFormat("[XXX]: GetAgentGroupMemberships {0} cached!", cacheKey);
return (List<GroupMembershipData>)memberships;
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
memberships = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, memberships, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (List<GroupMembershipData>)memberships;
}
}
else
Thread.Sleep(50);
}
}
public List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID, GroupMembersListDelegate d)
{
object members = null;
bool firstCall = false;
// we need to key in also on the requester, because different ppl have different view privileges
string cacheKey = "members-" + RequestingAgentID.ToString() + "-" + GroupID.ToString();
//m_log.DebugFormat("[XXX]: GetGroupMembers {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out members))
{
List<ExtendedGroupMembersData> xx = (List<ExtendedGroupMembersData>)members;
return xx.ConvertAll<GroupMembersData>(new Converter<ExtendedGroupMembersData, GroupMembersData>(m_ForeignImporter.ConvertGroupMembersData));
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
List<ExtendedGroupMembersData> _members = d();
if (_members != null && _members.Count > 0)
members = _members.ConvertAll<GroupMembersData>(new Converter<ExtendedGroupMembersData, GroupMembersData>(m_ForeignImporter.ConvertGroupMembersData));
else
members = new List<GroupMembersData>();
lock (m_Cache)
{
//m_Cache.AddOrUpdate(cacheKey, members, GROUPS_CACHE_TIMEOUT);
m_Cache.AddOrUpdate(cacheKey, _members, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (List<GroupMembersData>)members;
}
}
else
Thread.Sleep(50);
}
}
public bool AddGroupRole(UUID groupID, UUID roleID, string description, string name, ulong powers, string title, BooleanDelegate d)
{
if (d())
{
GroupRolesData role = new GroupRolesData();
role.Description = description;
role.Members = 0;
role.Name = name;
role.Powers = powers;
role.RoleID = roleID;
role.Title = title;
lock (m_Cache)
{
m_Cache.AddOrUpdate("role-" + roleID.ToString(), role, GROUPS_CACHE_TIMEOUT);
// also remove this list
if (m_Cache.Contains("roles-" + groupID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString());
}
return true;
}
return false;
}
public bool UpdateGroupRole(UUID groupID, UUID roleID, string name, string description, string title, ulong powers, BooleanDelegate d)
{
if (d())
{
object role;
lock (m_Cache)
if (m_Cache.TryGetValue("role-" + roleID.ToString(), out role))
{
GroupRolesData r = (GroupRolesData)role;
r.Description = description;
r.Name = name;
r.Powers = powers;
r.Title = title;
m_Cache.Update("role-" + roleID.ToString(), r, GROUPS_CACHE_TIMEOUT);
}
return true;
}
else
{
lock (m_Cache)
{
if (m_Cache.Contains("role-" + roleID.ToString()))
m_Cache.Remove("role-" + roleID.ToString());
// also remove these lists, because they will have an outdated role
if (m_Cache.Contains("roles-" + groupID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString());
}
return false;
}
}
public void RemoveGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, VoidDelegate d)
{
d();
lock (m_Cache)
{
if (m_Cache.Contains("role-" + roleID.ToString()))
m_Cache.Remove("role-" + roleID.ToString());
// also remove the list, because it will have an removed role
if (m_Cache.Contains("roles-" + groupID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString());
if (m_Cache.Contains("roles-" + groupID.ToString() + "-" + RequestingAgentID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString() + "-" + RequestingAgentID.ToString());
if (m_Cache.Contains("rolemembers-" + RequestingAgentID.ToString() + "-" + groupID.ToString()))
m_Cache.Remove("rolemembers-" + RequestingAgentID.ToString() + "-" + groupID.ToString());
}
}
public List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID GroupID, GroupRolesListDelegate d)
{
object roles = null;
bool firstCall = false;
string cacheKey = "roles-" + GroupID.ToString();
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out roles))
return (List<GroupRolesData>)roles;
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
roles = d();
if (roles != null)
{
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, roles, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (List<GroupRolesData>)roles;
}
}
}
else
Thread.Sleep(50);
}
}
public List<GroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID GroupID, RoleMembersListDelegate d)
{
object rmembers = null;
bool firstCall = false;
// we need to key in also on the requester, because different ppl have different view privileges
string cacheKey = "rolemembers-" + RequestingAgentID.ToString() + "-" + GroupID.ToString();
//m_log.DebugFormat("[XXX]: GetGroupRoleMembers {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out rmembers))
{
List<ExtendedGroupRoleMembersData> xx = (List<ExtendedGroupRoleMembersData>)rmembers;
return xx.ConvertAll<GroupRoleMembersData>(m_ForeignImporter.ConvertGroupRoleMembersData);
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
List<ExtendedGroupRoleMembersData> _rmembers = d();
if (_rmembers != null && _rmembers.Count > 0)
rmembers = _rmembers.ConvertAll<GroupRoleMembersData>(new Converter<ExtendedGroupRoleMembersData, GroupRoleMembersData>(m_ForeignImporter.ConvertGroupRoleMembersData));
else
rmembers = new List<GroupRoleMembersData>();
lock (m_Cache)
{
// For some strange reason, when I cache the list of GroupRoleMembersData,
// it gets emptied out. The TryGet gets an empty list...
//m_Cache.AddOrUpdate(cacheKey, rmembers, GROUPS_CACHE_TIMEOUT);
// Caching the list of ExtendedGroupRoleMembersData doesn't show that issue
// I don't get it.
m_Cache.AddOrUpdate(cacheKey, _rmembers, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (List<GroupRoleMembersData>)rmembers;
}
}
else
Thread.Sleep(50);
}
}
public void AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, BooleanDelegate d)
{
if (d())
{
lock (m_Cache)
{
// update the cached role
string cacheKey = "role-" + RoleID.ToString();
object obj;
if (m_Cache.TryGetValue(cacheKey, out obj))
{
GroupRolesData r = (GroupRolesData)obj;
r.Members++;
}
// add this agent to the list of role members
cacheKey = "rolemembers-" + RequestingAgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.TryGetValue(cacheKey, out obj))
{
try
{
// This may throw an exception, in which case the agentID is not a UUID but a full ID
// In that case, let's just remove the whoe things from the cache
UUID id = new UUID(AgentID);
List<ExtendedGroupRoleMembersData> xx = (List<ExtendedGroupRoleMembersData>)obj;
List<GroupRoleMembersData> rmlist = xx.ConvertAll<GroupRoleMembersData>(m_ForeignImporter.ConvertGroupRoleMembersData);
GroupRoleMembersData rm = new GroupRoleMembersData();
rm.MemberID = id;
rm.RoleID = RoleID;
rmlist.Add(rm);
}
catch
{
m_Cache.Remove(cacheKey);
}
}
// Remove the cached info about this agent's roles
// because we don't have enough local info about the new role
cacheKey = "roles-" + GroupID.ToString() + "-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
}
}
}
public void RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, BooleanDelegate d)
{
if (d())
{
lock (m_Cache)
{
// update the cached role
string cacheKey = "role-" + RoleID.ToString();
object obj;
if (m_Cache.TryGetValue(cacheKey, out obj))
{
GroupRolesData r = (GroupRolesData)obj;
r.Members--;
}
cacheKey = "roles-" + GroupID.ToString() + "-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "rolemembers-" + RequestingAgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
}
}
}
public List<GroupRolesData> GetAgentGroupRoles(string RequestingAgentID, string AgentID, UUID GroupID, GroupRolesListDelegate d)
{
object roles = null;
bool firstCall = false;
string cacheKey = "roles-" + GroupID.ToString() + "-" + AgentID.ToString();
//m_log.DebugFormat("[XXX]: GetAgentGroupRoles {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out roles))
{
//m_log.DebugFormat("[XXX]: GetAgentGroupRoles {0} cached!", cacheKey);
return (List<GroupRolesData>)roles;
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
roles = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, roles, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (List<GroupRolesData>)roles;
}
}
else
Thread.Sleep(50);
}
}
public void SetAgentActiveGroupRole(string AgentID, UUID GroupID, VoidDelegate d)
{
d();
lock (m_Cache)
{
// Invalidate cached info, because it has ActiveRoleID and Powers
string cacheKey = "membership-" + AgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "memberships-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
}
}
public void UpdateMembership(string AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile, VoidDelegate d)
{
d();
lock (m_Cache)
{
string cacheKey = "membership-" + AgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "memberships-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "active-" + AgentID.ToString();
object m = null;
if (m_Cache.TryGetValue(cacheKey, out m))
{
GroupMembershipData membership = (GroupMembershipData)m;
membership.ListInProfile = ListInProfile;
membership.AcceptNotices = AcceptNotices;
}
}
}
public bool AddGroupNotice(UUID groupID, UUID noticeID, GroupNoticeInfo notice, BooleanDelegate d)
{
if (d())
{
lock (m_Cache)
{
m_Cache.AddOrUpdate("notice-" + noticeID.ToString(), notice, GROUPS_CACHE_TIMEOUT);
string cacheKey = "notices-" + groupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
}
return true;
}
return false;
}
public GroupNoticeInfo GetGroupNotice(UUID noticeID, NoticeDelegate d)
{
object notice = null;
bool firstCall = false;
string cacheKey = "notice-" + noticeID.ToString();
//m_log.DebugFormat("[XXX]: GetAgentGroupRoles {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out notice))
{
return (GroupNoticeInfo)notice;
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
GroupNoticeInfo _notice = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, _notice, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return _notice;
}
}
else
Thread.Sleep(50);
}
}
public List<ExtendedGroupNoticeData> GetGroupNotices(UUID GroupID, NoticeListDelegate d)
{
object notices = null;
bool firstCall = false;
string cacheKey = "notices-" + GroupID.ToString();
//m_log.DebugFormat("[XXX]: GetGroupNotices {0}", cacheKey);
while (true)
{
lock (m_Cache)
{
if (m_Cache.TryGetValue(cacheKey, out notices))
{
//m_log.DebugFormat("[XXX]: GetGroupNotices {0} cached!", cacheKey);
return (List<ExtendedGroupNoticeData>)notices;
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
firstCall = true;
}
}
if (firstCall)
{
notices = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, notices, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (List<ExtendedGroupNoticeData>)notices;
}
}
else
Thread.Sleep(50);
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,84 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Data;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Base;
namespace OpenSim.Groups
{
public class GroupsServiceBase : ServiceBase
{
protected IGroupsData m_Database = null;
public GroupsServiceBase(IConfigSource config, string cName)
: base(config)
{
string dllName = String.Empty;
string connString = String.Empty;
string realm = "os_groups";
string configName = (cName == string.Empty) ? "Groups" : cName;
//
// Try reading the [DatabaseService] section, if it exists
//
IConfig dbConfig = config.Configs["DatabaseService"];
if (dbConfig != null)
{
if (dllName == String.Empty)
dllName = dbConfig.GetString("StorageProvider", String.Empty);
if (connString == String.Empty)
connString = dbConfig.GetString("ConnectionString", String.Empty);
}
//
// [Groups] section overrides [DatabaseService], if it exists
//
IConfig groupsConfig = config.Configs[configName];
if (groupsConfig != null)
{
dllName = groupsConfig.GetString("StorageProvider", dllName);
connString = groupsConfig.GetString("ConnectionString", connString);
realm = groupsConfig.GetString("Realm", realm);
}
//
// We tried, but this doesn't exist. We can't proceed.
//
if (dllName.Equals(String.Empty))
throw new Exception("No StorageProvider configured");
m_Database = LoadPlugin<IGroupsData>(dllName, new Object[] { connString, realm });
if (m_Database == null)
throw new Exception("Could not find a storage interface in the given module " + dllName);
}
}
}

View File

@@ -0,0 +1,361 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Timers;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Data;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
namespace OpenSim.Groups
{
public class HGGroupsService : GroupsService
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IOfflineIMService m_OfflineIM;
private IUserAccountService m_UserAccounts;
private string m_HomeURI;
public HGGroupsService(IConfigSource config, IOfflineIMService im, IUserAccountService users, string homeURI)
: base(config, string.Empty)
{
m_OfflineIM = im;
m_UserAccounts = users;
m_HomeURI = homeURI;
if (!m_HomeURI.EndsWith("/"))
m_HomeURI += "/";
}
#region HG specific operations
public bool CreateGroupProxy(string RequestingAgentID, string agentID, string accessToken, UUID groupID, string serviceLocation, string name, out string reason)
{
reason = string.Empty;
Uri uri = null;
try
{
uri = new Uri(serviceLocation);
}
catch (UriFormatException)
{
reason = "Bad location for group proxy";
return false;
}
// Check if it already exists
GroupData grec = m_Database.RetrieveGroup(groupID);
if (grec == null ||
(grec != null && grec.Data["Location"] != string.Empty && grec.Data["Location"].ToLower() != serviceLocation.ToLower()))
{
// Create the group
grec = new GroupData();
grec.GroupID = groupID;
grec.Data = new Dictionary<string, string>();
grec.Data["Name"] = name + " @ " + uri.Authority;
grec.Data["Location"] = serviceLocation;
grec.Data["Charter"] = string.Empty;
grec.Data["InsigniaID"] = UUID.Zero.ToString();
grec.Data["FounderID"] = UUID.Zero.ToString();
grec.Data["MembershipFee"] = "0";
grec.Data["OpenEnrollment"] = "0";
grec.Data["ShowInList"] = "0";
grec.Data["AllowPublish"] = "0";
grec.Data["MaturePublish"] = "0";
grec.Data["OwnerRoleID"] = UUID.Zero.ToString();
if (!m_Database.StoreGroup(grec))
return false;
}
if (grec.Data["Location"] == string.Empty)
{
reason = "Cannot add proxy membership to non-proxy group";
return false;
}
UUID uid = UUID.Zero;
string url = string.Empty, first = string.Empty, last = string.Empty, tmp = string.Empty;
Util.ParseUniversalUserIdentifier(RequestingAgentID, out uid, out url, out first, out last, out tmp);
string fromName = first + "." + last + "@" + url;
// Invite to group again
InviteToGroup(fromName, groupID, new UUID(agentID), grec.Data["Name"]);
// Stick the proxy membership in the DB already
// we'll delete it if the agent declines the invitation
MembershipData membership = new MembershipData();
membership.PrincipalID = agentID;
membership.GroupID = groupID;
membership.Data = new Dictionary<string, string>();
membership.Data["SelectedRoleID"] = UUID.Zero.ToString();
membership.Data["Contribution"] = "0";
membership.Data["ListInProfile"] = "1";
membership.Data["AcceptNotices"] = "1";
membership.Data["AccessToken"] = accessToken;
m_Database.StoreMember(membership);
return true;
}
public bool RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID, string token)
{
// check the token
MembershipData membership = m_Database.RetrieveMember(GroupID, AgentID);
if (membership != null)
{
if (token != string.Empty && token.Equals(membership.Data["AccessToken"]))
{
return RemoveAgentFromGroup(RequestingAgentID, AgentID, GroupID);
}
else
{
m_log.DebugFormat("[Groups.HGGroupsService]: access token {0} did not match stored one {1}", token, membership.Data["AccessToken"]);
return false;
}
}
else
{
m_log.DebugFormat("[Groups.HGGroupsService]: membership not found for {0}", AgentID);
return false;
}
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string groupName, string token)
{
// check the token
if (!VerifyToken(GroupID, RequestingAgentID, token))
return null;
ExtendedGroupRecord grec;
if (GroupID == UUID.Zero)
grec = GetGroupRecord(RequestingAgentID, groupName);
else
grec = GetGroupRecord(RequestingAgentID, GroupID);
if (grec != null)
FillFounderUUI(grec);
return grec;
}
public List<ExtendedGroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID, string token)
{
if (!VerifyToken(GroupID, RequestingAgentID, token))
return new List<ExtendedGroupMembersData>();
List<ExtendedGroupMembersData> members = GetGroupMembers(RequestingAgentID, GroupID);
// convert UUIDs to UUIs
members.ForEach(delegate (ExtendedGroupMembersData m)
{
if (m.AgentID.ToString().Length == 36) // UUID
{
UserAccount account = m_UserAccounts.GetUserAccount(UUID.Zero, new UUID(m.AgentID));
if (account != null)
m.AgentID = Util.UniversalIdentifier(account.PrincipalID, account.FirstName, account.LastName, m_HomeURI);
}
});
return members;
}
public List<GroupRolesData> GetGroupRoles(string RequestingAgentID, UUID GroupID, string token)
{
if (!VerifyToken(GroupID, RequestingAgentID, token))
return new List<GroupRolesData>();
return GetGroupRoles(RequestingAgentID, GroupID);
}
public List<ExtendedGroupRoleMembersData> GetGroupRoleMembers(string RequestingAgentID, UUID GroupID, string token)
{
if (!VerifyToken(GroupID, RequestingAgentID, token))
return new List<ExtendedGroupRoleMembersData>();
List<ExtendedGroupRoleMembersData> rolemembers = GetGroupRoleMembers(RequestingAgentID, GroupID);
// convert UUIDs to UUIs
rolemembers.ForEach(delegate(ExtendedGroupRoleMembersData m)
{
if (m.MemberID.ToString().Length == 36) // UUID
{
UserAccount account = m_UserAccounts.GetUserAccount(UUID.Zero, new UUID(m.MemberID));
if (account != null)
m.MemberID = Util.UniversalIdentifier(account.PrincipalID, account.FirstName, account.LastName, m_HomeURI);
}
});
return rolemembers;
}
public bool AddNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
// check that the group proxy exists
ExtendedGroupRecord grec = GetGroupRecord(RequestingAgentID, groupID);
if (grec == null)
{
m_log.DebugFormat("[Groups.HGGroupsService]: attempt at adding notice to non-existent group proxy");
return false;
}
// check that the group is remote
if (grec.ServiceLocation == string.Empty)
{
m_log.DebugFormat("[Groups.HGGroupsService]: attempt at adding notice to local (non-proxy) group");
return false;
}
// check that there isn't already a notice with the same ID
if (GetGroupNotice(RequestingAgentID, noticeID) != null)
{
m_log.DebugFormat("[Groups.HGGroupsService]: a notice with the same ID already exists", grec.ServiceLocation);
return false;
}
// This has good intentions (security) but it will potentially DDS the origin...
// We'll need to send a proof along with the message. Maybe encrypt the message
// using key pairs
//
//// check that the notice actually exists in the origin
//GroupsServiceHGConnector c = new GroupsServiceHGConnector(grec.ServiceLocation);
//if (!c.VerifyNotice(noticeID, groupID))
//{
// m_log.DebugFormat("[Groups.HGGroupsService]: notice does not exist at origin {0}", grec.ServiceLocation);
// return false;
//}
// ok, we're good!
return _AddNotice(groupID, noticeID, fromName, subject, message, hasAttachment, attType, attName, attItemID, attOwnerID);
}
public bool VerifyNotice(UUID noticeID, UUID groupID)
{
GroupNoticeInfo notice = GetGroupNotice(string.Empty, noticeID);
if (notice == null)
return false;
if (notice.GroupID != groupID)
return false;
return true;
}
#endregion
private void InviteToGroup(string fromName, UUID groupID, UUID invitedAgentID, string groupName)
{
// Todo: Security check, probably also want to send some kind of notification
UUID InviteID = UUID.Random();
if (AddAgentToGroupInvite(InviteID, groupID, invitedAgentID.ToString()))
{
Guid inviteUUID = InviteID.Guid;
GridInstantMessage msg = new GridInstantMessage();
msg.imSessionID = inviteUUID;
// msg.fromAgentID = agentID.Guid;
msg.fromAgentID = groupID.Guid;
msg.toAgentID = invitedAgentID.Guid;
//msg.timestamp = (uint)Util.UnixTimeSinceEpoch();
msg.timestamp = 0;
msg.fromAgentName = fromName;
msg.message = string.Format("Please confirm your acceptance to join group {0}.", groupName);
msg.dialog = (byte)OpenMetaverse.InstantMessageDialog.GroupInvitation;
msg.fromGroup = true;
msg.offline = (byte)0;
msg.ParentEstateID = 0;
msg.Position = Vector3.Zero;
msg.RegionID = UUID.Zero.Guid;
msg.binaryBucket = new byte[20];
string reason = string.Empty;
m_OfflineIM.StoreMessage(msg, out reason);
}
}
private bool AddAgentToGroupInvite(UUID inviteID, UUID groupID, string agentID)
{
// Check whether the invitee is already a member of the group
MembershipData m = m_Database.RetrieveMember(groupID, agentID);
if (m != null)
return false;
// Check whether there are pending invitations and delete them
InvitationData invite = m_Database.RetrieveInvitation(groupID, agentID);
if (invite != null)
m_Database.DeleteInvite(invite.InviteID);
invite = new InvitationData();
invite.InviteID = inviteID;
invite.PrincipalID = agentID;
invite.GroupID = groupID;
invite.RoleID = UUID.Zero;
invite.Data = new Dictionary<string, string>();
return m_Database.StoreInvitation(invite);
}
private void FillFounderUUI(ExtendedGroupRecord grec)
{
UserAccount account = m_UserAccounts.GetUserAccount(UUID.Zero, grec.FounderID);
if (account != null)
grec.FounderUUI = Util.UniversalIdentifier(account.PrincipalID, account.FirstName, account.LastName, m_HomeURI);
}
private bool VerifyToken(UUID groupID, string agentID, string token)
{
// check the token
MembershipData membership = m_Database.RetrieveMember(groupID, agentID);
if (membership != null)
{
if (token != string.Empty && token.Equals(membership.Data["AccessToken"]))
return true;
else
m_log.DebugFormat("[Groups.HGGroupsService]: access token {0} did not match stored one {1}", token, membership.Data["AccessToken"]);
}
else
m_log.DebugFormat("[Groups.HGGroupsService]: membership not found for {0}", agentID);
return false;
}
}
}

View File

@@ -0,0 +1,268 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using log4net;
using Mono.Addins;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Client;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
namespace OpenSim.OfflineIM
{
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "OfflineIMConnectorModule")]
public class OfflineIMRegionModule : ISharedRegionModule, IOfflineIMService
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private bool m_Enabled = false;
private List<Scene> m_SceneList = new List<Scene>();
IMessageTransferModule m_TransferModule = null;
private bool m_ForwardOfflineGroupMessages = true;
private IOfflineIMService m_OfflineIMService;
public void Initialise(IConfigSource config)
{
IConfig cnf = config.Configs["Messaging"];
if (cnf == null)
return;
if (cnf != null && cnf.GetString("OfflineMessageModule", string.Empty) != Name)
return;
m_Enabled = true;
string serviceLocation = cnf.GetString("OfflineMessageURL", string.Empty);
if (serviceLocation == string.Empty)
m_OfflineIMService = new OfflineIMService(config);
else
m_OfflineIMService = new OfflineIMServiceRemoteConnector(config);
m_ForwardOfflineGroupMessages = cnf.GetBoolean("ForwardOfflineGroupMessages", m_ForwardOfflineGroupMessages);
m_log.DebugFormat("[OfflineIM.V2]: Offline messages enabled by {0}", Name);
}
public void AddRegion(Scene scene)
{
if (!m_Enabled)
return;
scene.RegisterModuleInterface<IOfflineIMService>(this);
m_SceneList.Add(scene);
scene.EventManager.OnNewClient += OnNewClient;
}
public void RegionLoaded(Scene scene)
{
if (!m_Enabled)
return;
if (m_TransferModule == null)
{
m_TransferModule = scene.RequestModuleInterface<IMessageTransferModule>();
if (m_TransferModule == null)
{
scene.EventManager.OnNewClient -= OnNewClient;
m_SceneList.Clear();
m_log.Error("[OfflineIM.V2]: No message transfer module is enabled. Disabling offline messages");
}
m_TransferModule.OnUndeliveredMessage += UndeliveredMessage;
}
}
public void RemoveRegion(Scene scene)
{
if (!m_Enabled)
return;
m_SceneList.Remove(scene);
scene.EventManager.OnNewClient -= OnNewClient;
m_TransferModule.OnUndeliveredMessage -= UndeliveredMessage;
scene.ForEachClient(delegate(IClientAPI client)
{
client.OnRetrieveInstantMessages -= RetrieveInstantMessages;
client.OnMuteListRequest -= OnMuteListRequest;
});
}
public void PostInitialise()
{
}
public string Name
{
get { return "Offline Message Module V2"; }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void Close()
{
m_SceneList.Clear();
}
private Scene FindScene(UUID agentID)
{
foreach (Scene s in m_SceneList)
{
ScenePresence presence = s.GetScenePresence(agentID);
if (presence != null && !presence.IsChildAgent)
return s;
}
return null;
}
private IClientAPI FindClient(UUID agentID)
{
foreach (Scene s in m_SceneList)
{
ScenePresence presence = s.GetScenePresence(agentID);
if (presence != null && !presence.IsChildAgent)
return presence.ControllingClient;
}
return null;
}
private void OnNewClient(IClientAPI client)
{
client.OnRetrieveInstantMessages += RetrieveInstantMessages;
client.OnMuteListRequest += OnMuteListRequest;
}
private void RetrieveInstantMessages(IClientAPI client)
{
m_log.DebugFormat("[OfflineIM.V2]: Retrieving stored messages for {0}", client.AgentId);
List<GridInstantMessage> msglist = m_OfflineIMService.GetMessages(client.AgentId);
if (msglist == null)
m_log.DebugFormat("[OfflineIM.V2]: WARNING null message list.");
foreach (GridInstantMessage im in msglist)
{
if (im.dialog == (byte)InstantMessageDialog.InventoryOffered)
// send it directly or else the item will be given twice
client.SendInstantMessage(im);
else
{
// Send through scene event manager so all modules get a chance
// to look at this message before it gets delivered.
//
// Needed for proper state management for stored group
// invitations
//
Scene s = FindScene(client.AgentId);
if (s != null)
s.EventManager.TriggerIncomingInstantMessage(im);
}
}
}
// Apparently this is needed in order for the viewer to request the IMs.
private void OnMuteListRequest(IClientAPI client, uint crc)
{
m_log.DebugFormat("[OfflineIM.V2] Got mute list request for crc {0}", crc);
string filename = "mutes" + client.AgentId.ToString();
IXfer xfer = client.Scene.RequestModuleInterface<IXfer>();
if (xfer != null)
{
xfer.AddNewFile(filename, new Byte[0]);
client.SendMuteListUpdate(filename);
}
}
private void UndeliveredMessage(GridInstantMessage im)
{
if (im.dialog != (byte)InstantMessageDialog.MessageFromObject &&
im.dialog != (byte)InstantMessageDialog.MessageFromAgent &&
im.dialog != (byte)InstantMessageDialog.GroupNotice &&
im.dialog != (byte)InstantMessageDialog.GroupInvitation &&
im.dialog != (byte)InstantMessageDialog.InventoryOffered)
{
return;
}
if (!m_ForwardOfflineGroupMessages)
{
if (im.dialog == (byte)InstantMessageDialog.GroupNotice ||
im.dialog == (byte)InstantMessageDialog.GroupInvitation)
return;
}
string reason = string.Empty;
bool success = m_OfflineIMService.StoreMessage(im, out reason);
if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
{
IClientAPI client = FindClient(new UUID(im.fromAgentID));
if (client == null)
return;
client.SendInstantMessage(new GridInstantMessage(
null, new UUID(im.toAgentID),
"System", new UUID(im.fromAgentID),
(byte)InstantMessageDialog.MessageFromAgent,
"User is not logged in. " +
(success ? "Message saved." : "Message not saved: " + reason),
false, new Vector3()));
}
}
#region IOfflineIM
public List<GridInstantMessage> GetMessages(UUID principalID)
{
return m_OfflineIMService.GetMessages(principalID);
}
public bool StoreMessage(GridInstantMessage im, out string reason)
{
return m_OfflineIMService.StoreMessage(im, out reason);
}
public void DeleteMessages(UUID userID)
{
m_OfflineIMService.DeleteMessages(userID);
}
#endregion
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Mono.Addins;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Addons.OfflineIM")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("http://opensimulator.org")]
[assembly: AssemblyProduct("OpenSim.Addons.OfflineIM")]
[assembly: AssemblyCopyright("Copyright (c) OpenSimulator.org Developers")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a16a9905-4393-4872-9fca-4c81bedbd9f2")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.1.*")]
[assembly: Addin("OpenSim.OfflineIM", "0.1")]
[assembly: AddinDependency("OpenSim", "0.5")]

View File

@@ -0,0 +1,171 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using OpenSim.Framework;
using OpenSim.Framework.ServiceAuth;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenMetaverse;
using log4net;
using Nini.Config;
namespace OpenSim.OfflineIM
{
public class OfflineIMServiceRemoteConnector : IOfflineIMService
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private string m_ServerURI = string.Empty;
private IServiceAuth m_Auth;
private object m_Lock = new object();
public OfflineIMServiceRemoteConnector(string url)
{
m_ServerURI = url;
m_log.DebugFormat("[OfflineIM.V2.RemoteConnector]: Offline IM server at {0}", m_ServerURI);
}
public OfflineIMServiceRemoteConnector(IConfigSource config)
{
IConfig cnf = config.Configs["Messaging"];
if (cnf == null)
{
m_log.WarnFormat("[OfflineIM.V2.RemoteConnector]: Missing Messaging configuration");
return;
}
m_ServerURI = cnf.GetString("OfflineMessageURL", string.Empty);
/// This is from BaseServiceConnector
string authType = Util.GetConfigVarFromSections<string>(config, "AuthType", new string[] { "Network", "Messaging" }, "None");
switch (authType)
{
case "BasicHttpAuthentication":
m_Auth = new BasicHttpAuthentication(config, "Messaging");
break;
}
///
m_log.DebugFormat("[OfflineIM.V2.RemoteConnector]: Offline IM server at {0} with auth {1}",
m_ServerURI, (m_Auth == null ? "None" : m_Auth.GetType().ToString()));
}
#region IOfflineIMService
public List<GridInstantMessage> GetMessages(UUID principalID)
{
List<GridInstantMessage> ims = new List<GridInstantMessage>();
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["PrincipalID"] = principalID;
Dictionary<string, object> ret = MakeRequest("GET", sendData);
if (ret == null)
return ims;
if (!ret.ContainsKey("RESULT"))
return ims;
string result = ret["RESULT"].ToString();
if (result == "NULL" || result.ToLower() == "false")
{
string reason = ret.ContainsKey("REASON") ? ret["REASON"].ToString() : "Unknown error";
m_log.DebugFormat("[OfflineIM.V2.RemoteConnector]: GetMessages for {0} failed: {1}", principalID, reason);
return ims;
}
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
{
GridInstantMessage m = OfflineIMDataUtils.GridInstantMessage((Dictionary<string, object>)v);
ims.Add(m);
}
return ims;
}
public bool StoreMessage(GridInstantMessage im, out string reason)
{
reason = string.Empty;
Dictionary<string, object> sendData = OfflineIMDataUtils.GridInstantMessage(im);
Dictionary<string, object> ret = MakeRequest("STORE", sendData);
if (ret == null)
{
reason = "Bad response from server";
return false;
}
string result = ret["RESULT"].ToString();
if (result == "NULL" || result.ToLower() == "false")
{
reason = ret.ContainsKey("REASON") ? ret["REASON"].ToString() : "Unknown error";
return false;
}
return true;
}
public void DeleteMessages(UUID userID)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["UserID"] = userID;
MakeRequest("DELETE", sendData);
}
#endregion
#region Make Request
private Dictionary<string, object> MakeRequest(string method, Dictionary<string, object> sendData)
{
sendData["METHOD"] = method;
string reply = string.Empty;
lock (m_Lock)
reply = SynchronousRestFormsRequester.MakeRequest("POST",
m_ServerURI + "/offlineim",
ServerUtils.BuildQueryString(sendData),
m_Auth);
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(
reply);
return replyData;
}
#endregion
}
}

View File

@@ -0,0 +1,223 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using System.Text;
using System.Xml;
using System.Collections.Generic;
using System.IO;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Framework.ServiceAuth;
using OpenSim.Server.Handlers.Base;
using log4net;
using OpenMetaverse;
namespace OpenSim.OfflineIM
{
public class OfflineIMServiceRobustConnector : ServiceConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IOfflineIMService m_OfflineIMService;
private string m_ConfigName = "Messaging";
public OfflineIMServiceRobustConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
m_log.DebugFormat("[OfflineIM.V2.RobustConnector]: Starting with config name {0}", m_ConfigName);
m_OfflineIMService = new OfflineIMService(config);
IServiceAuth auth = ServiceAuth.Create(config, m_ConfigName);
server.AddStreamHandler(new OfflineIMServicePostHandler(m_OfflineIMService, auth));
}
}
public class OfflineIMServicePostHandler : BaseStreamHandler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IOfflineIMService m_OfflineIMService;
public OfflineIMServicePostHandler(IOfflineIMService service, IServiceAuth auth) :
base("POST", "/offlineim", auth)
{
m_OfflineIMService = service;
}
protected override byte[] ProcessRequest(string path, Stream requestData,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
StreamReader sr = new StreamReader(requestData);
string body = sr.ReadToEnd();
sr.Close();
body = body.Trim();
//m_log.DebugFormat("[XXX]: query String: {0}", body);
try
{
Dictionary<string, object> request =
ServerUtils.ParseQueryString(body);
if (!request.ContainsKey("METHOD"))
return FailureResult();
string method = request["METHOD"].ToString();
request.Remove("METHOD");
switch (method)
{
case "GET":
return HandleGet(request);
case "STORE":
return HandleStore(request);
case "DELETE":
return HandleDelete(request);
}
m_log.DebugFormat("[OFFLINE IM HANDLER]: unknown method request: {0}", method);
}
catch (Exception e)
{
m_log.Error(string.Format("[OFFLINE IM HANDLER]: Exception {0} ", e.Message), e);
}
return FailureResult();
}
byte[] HandleStore(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
GridInstantMessage im = OfflineIMDataUtils.GridInstantMessage(request);
string reason = string.Empty;
bool success = m_OfflineIMService.StoreMessage(im, out reason);
result["RESULT"] = success.ToString();
if (!success)
result["REASON"] = reason;
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleGet(Dictionary<string, object> request)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (!request.ContainsKey("PrincipalID"))
NullResult(result, "Bad network data");
else
{
UUID principalID = new UUID(request["PrincipalID"].ToString());
List<GridInstantMessage> ims = m_OfflineIMService.GetMessages(principalID);
Dictionary<string, object> dict = new Dictionary<string, object>();
int i = 0;
foreach (GridInstantMessage m in ims)
dict["im-" + i++] = OfflineIMDataUtils.GridInstantMessage(m);
result["RESULT"] = dict;
}
string xmlString = ServerUtils.BuildXmlResponse(result);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
return Util.UTF8NoBomEncoding.GetBytes(xmlString);
}
byte[] HandleDelete(Dictionary<string, object> request)
{
if (!request.ContainsKey("UserID"))
{
return FailureResult();
}
else
{
UUID userID = new UUID(request["UserID"].ToString());
m_OfflineIMService.DeleteMessages(userID);
return SuccessResult();
}
}
#region Helpers
private void NullResult(Dictionary<string, object> result, string reason)
{
result["RESULT"] = "NULL";
result["REASON"] = reason;
}
private byte[] FailureResult()
{
return BoolResult(false);
}
private byte[] SuccessResult()
{
return BoolResult(true);
}
private byte[] BoolResult(bool value)
{
XmlDocument doc = new XmlDocument();
XmlNode xmlnode = doc.CreateNode(XmlNodeType.XmlDeclaration,
"", "");
doc.AppendChild(xmlnode);
XmlElement rootElement = doc.CreateElement("", "ServerResponse",
"");
doc.AppendChild(rootElement);
XmlElement result = doc.CreateElement("", "RESULT", "");
result.AppendChild(doc.CreateTextNode(value.ToString()));
rootElement.AppendChild(result);
return Util.DocToBytes(doc);
}
#endregion
}
}

View File

@@ -0,0 +1,135 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using System.Timers;
using System.Xml;
using System.Xml.Serialization;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Data;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
namespace OpenSim.OfflineIM
{
public class OfflineIMService : OfflineIMServiceBase, IOfflineIMService
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private const int MAX_IM = 25;
private XmlSerializer m_serializer;
private static bool m_Initialized = false;
public OfflineIMService(IConfigSource config)
: base(config)
{
m_serializer = new XmlSerializer(typeof(GridInstantMessage));
if (!m_Initialized)
{
m_Database.DeleteOld();
m_Initialized = true;
}
}
public List<GridInstantMessage> GetMessages(UUID principalID)
{
List<GridInstantMessage> ims = new List<GridInstantMessage>();
OfflineIMData[] messages = m_Database.Get("PrincipalID", principalID.ToString());
if (messages == null || (messages != null && messages.Length == 0))
return ims;
foreach (OfflineIMData m in messages)
{
using (MemoryStream mstream = new MemoryStream(Encoding.UTF8.GetBytes(m.Data["Message"])))
{
GridInstantMessage im = (GridInstantMessage)m_serializer.Deserialize(mstream);
ims.Add(im);
}
}
// Then, delete them
m_Database.Delete("PrincipalID", principalID.ToString());
return ims;
}
public bool StoreMessage(GridInstantMessage im, out string reason)
{
reason = string.Empty;
// Check limits
UUID principalID = new UUID(im.toAgentID);
long count = m_Database.GetCount("PrincipalID", principalID.ToString());
if (count >= MAX_IM)
{
reason = "Number of offline IMs has maxed out";
return false;
}
string imXml;
using (MemoryStream mstream = new MemoryStream())
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Util.UTF8NoBomEncoding;
using (XmlWriter writer = XmlWriter.Create(mstream, settings))
{
m_serializer.Serialize(writer, im);
writer.Flush();
}
imXml = Util.UTF8NoBomEncoding.GetString(mstream.ToArray());
}
OfflineIMData data = new OfflineIMData();
data.PrincipalID = principalID;
data.FromID = new UUID(im.fromAgentID);
data.Data = new Dictionary<string, string>();
data.Data["Message"] = imXml;
return m_Database.Store(data);
}
public void DeleteMessages(UUID userID)
{
m_Database.Delete("PrincipalID", userID.ToString());
m_Database.Delete("FromID", userID.ToString());
}
}
}

View File

@@ -1,4 +1,4 @@
/*
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -24,7 +24,6 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
@@ -34,49 +33,51 @@ using OpenSim.Data;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Base;
namespace OpenSim.Services.InventoryService
namespace OpenSim.OfflineIM
{
public class InventoryServiceBase : ServiceBase
public class OfflineIMServiceBase : ServiceBase
{
protected IInventoryDataPlugin m_Database = null;
protected IOfflineIMData m_Database = null;
public InventoryServiceBase(IConfigSource config) : base(config)
public OfflineIMServiceBase(IConfigSource config)
: base(config)
{
string dllName = String.Empty;
string connString = String.Empty;
string realm = "im_offline";
//
// Try reading the [DatabaseService] section first, if it exists
// Try reading the [DatabaseService] section, if it exists
//
IConfig dbConfig = config.Configs["DatabaseService"];
if (dbConfig != null)
{
dllName = dbConfig.GetString("StorageProvider", String.Empty);
connString = dbConfig.GetString("ConnectionString", String.Empty);
if (dllName == String.Empty)
dllName = dbConfig.GetString("StorageProvider", String.Empty);
if (connString == String.Empty)
connString = dbConfig.GetString("ConnectionString", String.Empty);
}
//
// Try reading the more specific [InventoryService] section, if it exists
// [Messaging] section overrides [DatabaseService], if it exists
//
IConfig inventoryConfig = config.Configs["InventoryService"];
if (inventoryConfig != null)
IConfig imConfig = config.Configs["Messaging"];
if (imConfig != null)
{
dllName = inventoryConfig.GetString("StorageProvider", dllName);
connString = inventoryConfig.GetString("ConnectionString", connString);
dllName = imConfig.GetString("StorageProvider", dllName);
connString = imConfig.GetString("ConnectionString", connString);
realm = imConfig.GetString("Realm", realm);
}
//
// We tried, but this doesn't exist. We can't proceed.
//
if (dllName.Equals(String.Empty))
throw new Exception("No InventoryService configuration");
throw new Exception("No StorageProvider configured");
m_Database = LoadPlugin<IInventoryDataPlugin>(dllName);
m_Database = LoadPlugin<IOfflineIMData>(dllName, new Object[] { connString, realm });
if (m_Database == null)
throw new Exception("Could not find a storage interface in the given module");
m_Database.Initialise(connString);
throw new Exception("Could not find a storage interface in the given module " + dllName);
}
}
}

View File

@@ -39,6 +39,7 @@ using OpenSim.Region.CoreModules.Avatar.InstantMessage;
using OpenSim.Region.CoreModules.Scripting.DynamicTexture;
using OpenSim.Region.CoreModules.Scripting.LoadImageURL;
using OpenSim.Region.CoreModules.Scripting.XMLRPC;
using OpenSim.Services.Interfaces;
namespace OpenSim.ApplicationPlugins.LoadRegions
{
@@ -99,12 +100,12 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
RegionInfo[] regionsToLoad = regionLoader.LoadRegions();
m_log.Info("[LOAD REGIONS PLUGIN]: Loading specific shared modules...");
m_log.Info("[LOAD REGIONS PLUGIN]: DynamicTextureModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new DynamicTextureModule());
m_log.Info("[LOAD REGIONS PLUGIN]: LoadImageURLModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new LoadImageURLModule());
m_log.Info("[LOAD REGIONS PLUGIN]: XMLRPCModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new XMLRPCModule());
//m_log.Info("[LOAD REGIONS PLUGIN]: DynamicTextureModule...");
//m_openSim.ModuleLoader.LoadDefaultSharedModule(new DynamicTextureModule());
//m_log.Info("[LOAD REGIONS PLUGIN]: LoadImageURLModule...");
//m_openSim.ModuleLoader.LoadDefaultSharedModule(new LoadImageURLModule());
//m_log.Info("[LOAD REGIONS PLUGIN]: XMLRPCModule...");
//m_openSim.ModuleLoader.LoadDefaultSharedModule(new XMLRPCModule());
// m_log.Info("[LOADREGIONSPLUGIN]: AssetTransactionModule...");
// m_openSim.ModuleLoader.LoadDefaultSharedModule(new AssetTransactionModule());
m_log.Info("[LOAD REGIONS PLUGIN]: Done.");
@@ -115,6 +116,8 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
Environment.Exit(1);
}
List<IScene> createdScenes = new List<IScene>();
for (int i = 0; i < regionsToLoad.Length; i++)
{
IScene scene;
@@ -122,22 +125,25 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
Thread.CurrentThread.ManagedThreadId.ToString() +
")");
m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]);
bool changed = m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]);
m_openSim.CreateRegion(regionsToLoad[i], true, out scene);
regionsToLoad[i].EstateSettings.Save();
if (scene != null)
{
m_newRegionCreatedHandler = OnNewRegionCreated;
if (m_newRegionCreatedHandler != null)
{
m_newRegionCreatedHandler(scene);
}
}
createdScenes.Add(scene);
if (changed)
m_openSim.EstateDataService.StoreEstateSettings(regionsToLoad[i].EstateSettings);
}
m_openSim.ModuleLoader.PostInitialise();
m_openSim.ModuleLoader.ClearCache();
foreach (IScene scene in createdScenes)
{
scene.Start();
m_newRegionCreatedHandler = OnNewRegionCreated;
if (m_newRegionCreatedHandler != null)
{
m_newRegionCreatedHandler(scene);
}
}
}
public void Dispose()

View File

@@ -60,7 +60,6 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("0.6.5.*")]
// [assembly: AssemblyVersion("0.7.6.*")]
[assembly : AssemblyVersion("0.6.5.*")]
[assembly : AssemblyFileVersion("0.6.5.0")]
[assembly : AssemblyVersion("0.8.1.*")]

View File

@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.ApplicationPlugins.RegionModulesController")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("http://opensimulator.org")]
[assembly: AssemblyProduct("OpenSim")]
[assembly: AssemblyCopyright("OpenSimulator developers")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("c023816d-194e-40c1-9195-a0f281d4ac5d")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.1.*")]

View File

@@ -32,6 +32,7 @@ using log4net;
using Mono.Addins;
using Nini.Config;
using OpenSim;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
@@ -45,6 +46,12 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// Controls whether we load modules from Mono.Addins.
/// </summary>
/// <remarks>For debug purposes. Defaults to true.</remarks>
public bool LoadModulesFromAddins { get; set; }
// Config access
private OpenSimBase m_openSim;
@@ -61,6 +68,11 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
private List<ISharedRegionModule> m_sharedInstances =
new List<ISharedRegionModule>();
public RegionModulesControllerPlugin()
{
LoadModulesFromAddins = true;
}
#region IApplicationPlugin implementation
public void Initialise (OpenSimBase openSim)
@@ -69,6 +81,9 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
m_openSim.ApplicationRegistry.RegisterInterface<IRegionModulesController>(this);
m_log.DebugFormat("[REGIONMODULES]: Initializing...");
if (!LoadModulesFromAddins)
return;
// Who we are
string id = AddinManager.CurrentAddin.Id;
@@ -85,30 +100,20 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
if (modulesConfig == null)
modulesConfig = m_openSim.ConfigSource.Source.AddConfig("Modules");
Dictionary<RuntimeAddin, IList<int>> loadedModules = new Dictionary<RuntimeAddin, IList<int>>();
// Scan modules and load all that aren't disabled
foreach (TypeExtensionNode node in
AddinManager.GetExtensionNodes("/OpenSim/RegionModules"))
foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes("/OpenSim/RegionModules"))
AddNode(node, modulesConfig, loadedModules);
foreach (KeyValuePair<RuntimeAddin, IList<int>> loadedModuleData in loadedModules)
{
if (node.Type.GetInterface(typeof(ISharedRegionModule).ToString()) != null)
{
if (CheckModuleEnabled(node, modulesConfig))
{
m_log.DebugFormat("[REGIONMODULES]: Found shared region module {0}, class {1}", node.Id, node.Type);
m_sharedModules.Add(node);
}
}
else if (node.Type.GetInterface(typeof(INonSharedRegionModule).ToString()) != null)
{
if (CheckModuleEnabled(node, modulesConfig))
{
m_log.DebugFormat("[REGIONMODULES]: Found non-shared region module {0}, class {1}", node.Id, node.Type);
m_nonSharedModules.Add(node);
}
}
else
{
m_log.DebugFormat("[REGIONMODULES]: Found unknown type of module {0}, class {1}", node.Id, node.Type);
}
m_log.InfoFormat(
"[REGIONMODULES]: From plugin {0}, (version {1}), loaded {2} modules, {3} shared, {4} non-shared {5} unknown",
loadedModuleData.Key.Id,
loadedModuleData.Key.Version,
loadedModuleData.Value[0] + loadedModuleData.Value[1] + loadedModuleData.Value[2],
loadedModuleData.Value[0], loadedModuleData.Value[1], loadedModuleData.Value[2]);
}
// Load and init the module. We try a constructor with a port
@@ -172,6 +177,41 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
#region IPlugin implementation
private void AddNode(
TypeExtensionNode node, IConfig modulesConfig, Dictionary<RuntimeAddin, IList<int>> loadedModules)
{
IList<int> loadedModuleData;
if (!loadedModules.ContainsKey(node.Addin))
loadedModules.Add(node.Addin, new List<int> { 0, 0, 0 });
loadedModuleData = loadedModules[node.Addin];
if (node.Type.GetInterface(typeof(ISharedRegionModule).ToString()) != null)
{
if (CheckModuleEnabled(node, modulesConfig))
{
m_log.DebugFormat("[REGIONMODULES]: Found shared region module {0}, class {1}", node.Id, node.Type);
m_sharedModules.Add(node);
loadedModuleData[0]++;
}
}
else if (node.Type.GetInterface(typeof(INonSharedRegionModule).ToString()) != null)
{
if (CheckModuleEnabled(node, modulesConfig))
{
m_log.DebugFormat("[REGIONMODULES]: Found non-shared region module {0}, class {1}", node.Id, node.Type);
m_nonSharedModules.Add(node);
loadedModuleData[1]++;
}
}
else
{
m_log.WarnFormat("[REGIONMODULES]: Found unknown type of module {0}, class {1}", node.Id, node.Type);
loadedModuleData[2]++;
}
}
// We don't do that here
//
public void Initialise ()
@@ -193,6 +233,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
m_sharedInstances[0].Close();
m_sharedInstances.RemoveAt(0);
}
m_sharedModules.Clear();
m_nonSharedModules.Clear();
}
@@ -215,7 +256,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
}
}
#region IRegionModulesController implementation
#region Region Module interfacesController implementation
/// <summary>
/// Check that the given module is no disabled in the [Modules] section of the config files.

View File

@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.ApplicationPlugins.RemoteController")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("http://opensimulator.org")]
[assembly: AssemblyProduct("OpenSim")]
[assembly: AssemblyCopyright("Copyright OpenSimulator developers © 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("efec6e69-fc4a-4e21-86e6-4a261c12d4db")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.1.*")]

View File

@@ -28,6 +28,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Xml;
using System.Net;
@@ -50,6 +51,8 @@ using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
using PermissionMask = OpenSim.Framework.PermissionMask;
using RegionInfo = OpenSim.Framework.RegionInfo;
namespace OpenSim.ApplicationPlugins.RemoteController
{
@@ -136,6 +139,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod);
// Agent management
availableMethods["admin_get_agents"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcGetAgentsMethod);
availableMethods["admin_teleport_agent"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcTeleportAgentMethod);
// User management
@@ -143,6 +147,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
availableMethods["admin_create_user_email"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcCreateUserMethod);
availableMethods["admin_exists_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcUserExistsMethod);
availableMethods["admin_update_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcUpdateUserAccountMethod);
availableMethods["admin_authenticate_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAuthenticateUserMethod);
// Region state management
availableMethods["admin_load_xml"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcLoadXMLMethod);
@@ -155,6 +160,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
availableMethods["admin_acl_add"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListAdd);
availableMethods["admin_acl_remove"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListRemove);
availableMethods["admin_acl_list"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListList);
availableMethods["admin_estate_reload"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcEstateReload);
// Land management
availableMethods["admin_reset_land"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcResetLand);
// Either enable full remote functionality or just selected features
string enabledMethods = m_config.GetString("enabled_methods", "all");
@@ -324,18 +333,26 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// k, (string)requestData[k], ((string)requestData[k]).Length);
// }
CheckStringParameters(requestData, responseData, new string[] {"filename", "regionid"});
CheckStringParameters(requestData, responseData, new string[] { "filename" });
CheckRegionParams(requestData, responseData);
Scene scene = null;
GetSceneFromRegionParams(requestData, responseData, out scene);
string file = (string)requestData["filename"];
responseData["accepted"] = true;
if (scene != null)
{
string file = (string)requestData["filename"];
LoadHeightmap(file, scene.RegionInfo.RegionID);
responseData["accepted"] = true;
responseData["success"] = true;
LoadHeightmap(file, scene.RegionInfo.RegionID);
responseData["success"] = true;
}
else
{
responseData["success"] = false;
}
m_log.Info("[RADMIN]: Load height maps request complete");
}
@@ -349,23 +366,30 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString());
CheckStringParameters(requestData, responseData, new string[] { "filename", "regionid" });
CheckStringParameters(requestData, responseData, new string[] { "filename" });
CheckRegionParams(requestData, responseData);
Scene region = null;
GetSceneFromRegionParams(requestData, responseData, out region);
Scene scene = null;
GetSceneFromRegionParams(requestData, responseData, out scene);
string file = (string)requestData["filename"];
m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file);
if (scene != null)
{
string file = (string)requestData["filename"];
m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file);
responseData["accepted"] = true;
responseData["accepted"] = true;
ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>();
if (null == terrainModule) throw new Exception("terrain module not available");
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
if (null == terrainModule) throw new Exception("terrain module not available");
terrainModule.SaveToFile(file);
terrainModule.SaveToFile(file);
responseData["success"] = true;
responseData["success"] = true;
}
else
{
responseData["success"] = false;
}
m_log.Info("[RADMIN]: Save height maps request complete");
}
@@ -572,7 +596,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
region.ExternalHostName = (string) requestData["external_address"];
bool persist = Convert.ToBoolean((string) requestData["persist"]);
bool persist = Convert.ToBoolean(requestData["persist"]);
if (persist)
{
// default place for region configuration files is in the
@@ -673,7 +697,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
region.EstateSettings.EstateName = (string) requestData["estate_name"];
region.EstateSettings.EstateOwner = userID;
// Persistence does not seem to effect the need to save a new estate
region.EstateSettings.Save();
m_application.EstateDataService.StoreEstateSettings(region.EstateSettings);
if (!m_application.EstateDataService.LinkRegion(region.RegionID, (int) region.EstateSettings.EstateID))
throw new Exception("Failed to join estate.");
@@ -698,11 +722,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
IScene newScene;
m_application.CreateRegion(region, out newScene);
newScene.Start();
// If an access specification was provided, use it.
// Otherwise accept the default.
newScene.RegionInfo.EstateSettings.PublicAccess = GetBoolean(requestData, "public", m_publicAccess);
newScene.RegionInfo.EstateSettings.Save();
m_application.EstateDataService.StoreEstateSettings(newScene.RegionInfo.EstateSettings);
// enable voice on newly created region if
// requested by either the XmlRpc request or the
@@ -728,7 +753,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = true;
responseData["region_name"] = region.RegionName;
responseData["region_id"] = region.RegionID.ToString();
responseData["region_uuid"] = region.RegionID.ToString(); //Deprecate July 2012
m_log.Info("[RADMIN]: CreateRegion: request complete");
}
@@ -889,7 +913,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
scene.RegionInfo.EstateSettings.PublicAccess =
GetBoolean(requestData,"public", scene.RegionInfo.EstateSettings.PublicAccess);
if (scene.RegionInfo.Persistent)
scene.RegionInfo.EstateSettings.Save();
m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
if (requestData.ContainsKey("enable_voice"))
{
@@ -982,8 +1006,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
string lastName = (string) requestData["user_lastname"];
string password = (string) requestData["user_password"];
uint regionXLocation = Convert.ToUInt32((Int32) requestData["start_region_x"]);
uint regionYLocation = Convert.ToUInt32((Int32) requestData["start_region_y"]);
uint regionXLocation = Convert.ToUInt32(requestData["start_region_x"]);
uint regionYLocation = Convert.ToUInt32(requestData["start_region_y"]);
string email = ""; // empty string for email
if (requestData.Contains("user_email"))
@@ -1001,7 +1025,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// Set home position
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
(int)(regionXLocation * Constants.RegionSize), (int)(regionYLocation * Constants.RegionSize));
(int)Util.RegionToWorldLoc(regionXLocation), (int)Util.RegionToWorldLoc(regionYLocation));
if (null == home)
{
m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", firstName, lastName);
@@ -1093,7 +1117,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
GridUserInfo userInfo = m_application.SceneManager.CurrentOrFirstScene.GridUserService.GetGridUserInfo(account.PrincipalID.ToString());
if (userInfo != null)
responseData["lastlogin"] = userInfo.Login;
responseData["lastlogin"] = Util.ToUnixTime(userInfo.Login);
else
responseData["lastlogin"] = 0;
@@ -1180,9 +1204,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (requestData.ContainsKey("user_password")) password = (string) requestData["user_password"];
if (requestData.ContainsKey("start_region_x"))
regionXLocation = Convert.ToUInt32((Int32) requestData["start_region_x"]);
regionXLocation = Convert.ToUInt32(requestData["start_region_x"]);
if (requestData.ContainsKey("start_region_y"))
regionYLocation = Convert.ToUInt32((Int32) requestData["start_region_y"]);
regionYLocation = Convert.ToUInt32(requestData["start_region_y"]);
// if (requestData.ContainsKey("start_lookat_x"))
// ulaX = Convert.ToUInt32((Int32) requestData["start_lookat_x"]);
@@ -1231,7 +1255,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if ((null != regionXLocation) && (null != regionYLocation))
{
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
(int)(regionXLocation * Constants.RegionSize), (int)(regionYLocation * Constants.RegionSize));
(int)Util.RegionToWorldLoc((uint)regionXLocation), (int)Util.RegionToWorldLoc((uint)regionYLocation));
if (null == home) {
m_log.WarnFormat("[RADMIN]: Unable to set home region for updated user account {0} {1}", firstName, lastName);
} else {
@@ -1262,6 +1286,139 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
}
/// <summary>
/// Authenticate an user.
/// <summary>
/// <param name="request">incoming XML RPC request</param>
/// <remarks>
/// XmlRpcAuthenticateUserMethod takes the following XMLRPC
/// parameters
/// <list type="table">
/// <listheader><term>parameter name</term><description>description</description></listheader>
/// <item><term>password</term>
/// <description>admin password as set in OpenSim.ini</description></item>
/// <item><term>user_firstname</term>
/// <description>avatar's first name</description></item>
/// <item><term>user_lastname</term>
/// <description>avatar's last name</description></item>
/// <item><term>user_password</term>
/// <description>MD5 hash of avatar's password</description></item>
/// <item><term>token_lifetime</term>
/// <description>the lifetime of the returned token (upper bounded to 30s)</description></item>
/// </list>
///
/// XmlRpcAuthenticateUserMethod returns
/// <list type="table">
/// <listheader><term>name</term><description>description</description></listheader>
/// <item><term>success</term>
/// <description>true or false</description></item>
/// <item><term>token</term>
/// <description>the authentication token sent by OpenSim</description></item>
/// <item><term>error</term>
/// <description>error message if success is false</description></item>
/// </list>
/// </remarks>
private void XmlRpcAuthenticateUserMethod(XmlRpcRequest request, XmlRpcResponse response,
IPEndPoint remoteClient)
{
m_log.Info("[RADMIN]: AuthenticateUser: new request");
var responseData = (Hashtable)response.Value;
var requestData = (Hashtable)request.Params[0];
lock (m_requestLock)
{
try
{
CheckStringParameters(requestData, responseData, new[]
{
"user_firstname",
"user_lastname",
"user_password",
"token_lifetime"
});
var firstName = (string)requestData["user_firstname"];
var lastName = (string)requestData["user_lastname"];
var password = (string)requestData["user_password"];
var scene = m_application.SceneManager.CurrentOrFirstScene;
if (scene.Equals(null))
{
m_log.Debug("scene does not exist");
throw new Exception("Scene does not exist.");
}
var scopeID = scene.RegionInfo.ScopeID;
var account = scene.UserAccountService.GetUserAccount(scopeID, firstName, lastName);
if (account.Equals(null) || account.PrincipalID.Equals(UUID.Zero))
{
m_log.DebugFormat("avatar {0} {1} does not exist", firstName, lastName);
throw new Exception(String.Format("avatar {0} {1} does not exist", firstName, lastName));
}
if (String.IsNullOrEmpty(password))
{
m_log.DebugFormat("[RADMIN]: AuthenticateUser: no password provided for {0} {1}", firstName,
lastName);
throw new Exception(String.Format("no password provided for {0} {1}", firstName,
lastName));
}
int lifetime;
if (int.TryParse((string)requestData["token_lifetime"], NumberStyles.Integer, CultureInfo.InvariantCulture, out lifetime) == false)
{
m_log.DebugFormat("[RADMIN]: AuthenticateUser: no token lifetime provided for {0} {1}", firstName,
lastName);
throw new Exception(String.Format("no token lifetime provided for {0} {1}", firstName,
lastName));
}
// Upper bound on lifetime set to 30s.
if (lifetime > 30)
{
m_log.DebugFormat("[RADMIN]: AuthenticateUser: token lifetime longer than 30s for {0} {1}", firstName,
lastName);
throw new Exception(String.Format("token lifetime longer than 30s for {0} {1}", firstName,
lastName));
}
var authModule = scene.RequestModuleInterface<IAuthenticationService>();
if (authModule == null)
{
m_log.Debug("[RADMIN]: AuthenticateUser: no authentication module loded");
throw new Exception("no authentication module loaded");
}
var token = authModule.Authenticate(account.PrincipalID, password, lifetime);
if (String.IsNullOrEmpty(token))
{
m_log.DebugFormat("[RADMIN]: AuthenticateUser: authentication failed for {0} {1}", firstName,
lastName);
throw new Exception(String.Format("authentication failed for {0} {1}", firstName,
lastName));
}
m_log.DebugFormat("[RADMIN]: AuthenticateUser: account for user {0} {1} identified with token {2}",
firstName, lastName, token);
responseData["token"] = token;
responseData["success"] = true;
}
catch (Exception e)
{
responseData["success"] = false;
responseData["error"] = e.Message;
throw e;
}
m_log.Info("[RADMIN]: AuthenticateUser: request complete");
}
}
/// <summary>
/// Load an OAR file into a region..
/// <summary>
@@ -1330,8 +1487,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>();
Dictionary<string, object> archiveOptions = new Dictionary<string,object>();
if (mergeOar) archiveOptions.Add("merge", null);
if (skipAssets) archiveOptions.Add("skipAssets", null);
if (archiver != null)
archiver.DearchiveRegion(filename, mergeOar, skipAssets, Guid.Empty);
archiver.DearchiveRegion(filename, Guid.Empty, archiveOptions);
else
throw new Exception("Archiver module not present for scene");
@@ -1369,6 +1529,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
/// <description>profile url</description></item>
/// <item><term>noassets</term>
/// <description>true if no assets should be saved</description></item>
/// <item><term>all</term>
/// <description>true to save all the regions in the simulator</description></item>
/// <item><term>perm</term>
/// <description>C and/or T</description></item>
/// </list>
@@ -1388,7 +1550,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
/// </remarks>
private void XmlRpcSaveOARMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
m_log.Info("[RADMIN]: Received Save OAR Administrator Request");
m_log.Info("[RADMIN]: Received Save OAR Request");
Hashtable responseData = (Hashtable)response.Value;
Hashtable requestData = (Hashtable)request.Params[0];
@@ -1425,12 +1587,23 @@ namespace OpenSim.ApplicationPlugins.RemoteController
options["checkPermissions"] = (string)requestData["perm"];
}
if ((string)requestData["all"] == "true")
{
options["all"] = (string)requestData["all"];
}
IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>();
if (archiver != null)
{
Guid requestId = Guid.NewGuid();
scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted;
archiver.ArchiveRegion(filename, options);
m_log.InfoFormat(
"[RADMIN]: Submitting save OAR request for {0} to file {1}, request ID {2}",
scene.Name, filename, requestId);
archiver.ArchiveRegion(filename, requestId, options);
lock (m_saveOarLock)
Monitor.Wait(m_saveOarLock,5000);
@@ -1451,12 +1624,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController
throw e;
}
m_log.Info("[RADMIN]: Save OAR Administrator Request complete");
m_log.Info("[RADMIN]: Save OAR Request complete");
}
private void RemoteAdminOarSaveCompleted(Guid uuid, string name)
{
m_log.DebugFormat("[RADMIN]: File processing complete for {0}", name);
if (name != "")
m_log.ErrorFormat("[RADMIN]: Saving of OAR file with request ID {0} failed with message {1}", uuid, name);
else
m_log.DebugFormat("[RADMIN]: Saved OAR file for request {0}", uuid);
lock (m_saveOarLock)
Monitor.Pulse(m_saveOarLock);
}
@@ -1618,7 +1795,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
scene.RegionInfo.EstateSettings.EstateAccess = new UUID[]{};
if (scene.RegionInfo.Persistent)
scene.RegionInfo.EstateSettings.Save();
m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
m_log.Info("[RADMIN]: Access List Clear Request complete");
}
@@ -1664,7 +1841,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
scene.RegionInfo.EstateSettings.EstateAccess = accessControlList.ToArray();
if (scene.RegionInfo.Persistent)
scene.RegionInfo.EstateSettings.Save();
m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
}
responseData["added"] = addedUsers;
@@ -1713,7 +1890,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
scene.RegionInfo.EstateSettings.EstateAccess = accessControlList.ToArray();
if (scene.RegionInfo.Persistent)
scene.RegionInfo.EstateSettings.Save();
m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
}
responseData["removed"] = removedUsers;
@@ -1753,6 +1930,87 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_log.Info("[RADMIN]: Access List List Request complete");
}
private void XmlRpcEstateReload(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
m_log.Info("[RADMIN]: Received Estate Reload Request");
Hashtable responseData = (Hashtable)response.Value;
// Hashtable requestData = (Hashtable)request.Params[0];
m_application.SceneManager.ForEachScene(s =>
s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false)
);
responseData["success"] = true;
m_log.Info("[RADMIN]: Estate Reload Request complete");
}
private void XmlRpcGetAgentsMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
Hashtable responseData = (Hashtable)response.Value;
Hashtable requestData = (Hashtable)request.Params[0];
bool includeChildren = false;
if (requestData.Contains("include_children"))
bool.TryParse((string)requestData["include_children"], out includeChildren);
Scene scene;
GetSceneFromRegionParams(requestData, responseData, out scene);
ArrayList xmlRpcRegions = new ArrayList();
responseData["regions"] = xmlRpcRegions;
Hashtable xmlRpcRegion = new Hashtable();
xmlRpcRegions.Add(xmlRpcRegion);
xmlRpcRegion["name"] = scene.Name;
xmlRpcRegion["id"] = scene.RegionInfo.RegionID.ToString();
List<ScenePresence> agents = scene.GetScenePresences();
ArrayList xmlrpcAgents = new ArrayList();
foreach (ScenePresence agent in agents)
{
if (agent.IsChildAgent && !includeChildren)
continue;
Hashtable xmlRpcAgent = new Hashtable();
xmlRpcAgent.Add("name", agent.Name);
xmlRpcAgent.Add("id", agent.UUID.ToString());
xmlRpcAgent.Add("type", agent.PresenceType.ToString());
xmlRpcAgent.Add("current_parcel_id", agent.currentParcelUUID.ToString());
Vector3 pos = agent.AbsolutePosition;
xmlRpcAgent.Add("pos_x", pos.X.ToString());
xmlRpcAgent.Add("pos_y", pos.Y.ToString());
xmlRpcAgent.Add("pos_z", pos.Z.ToString());
Vector3 lookAt = agent.Lookat;
xmlRpcAgent.Add("lookat_x", lookAt.X.ToString());
xmlRpcAgent.Add("lookat_y", lookAt.Y.ToString());
xmlRpcAgent.Add("lookat_z", lookAt.Z.ToString());
Vector3 vel = agent.Velocity;
xmlRpcAgent.Add("vel_x", vel.X.ToString());
xmlRpcAgent.Add("vel_y", vel.Y.ToString());
xmlRpcAgent.Add("vel_z", vel.Z.ToString());
xmlRpcAgent.Add("is_flying", agent.Flying.ToString());
xmlRpcAgent.Add("is_sat_on_ground", agent.SitGround.ToString());
xmlRpcAgent.Add("is_sat_on_object", agent.IsSatOnObject.ToString());
xmlrpcAgents.Add(xmlRpcAgent);
}
m_log.DebugFormat(
"[REMOTE ADMIN]: XmlRpcGetAgents found {0} agents in {1}", xmlrpcAgents.Count, scene.Name);
xmlRpcRegion["agents"] = xmlrpcAgents;
responseData["success"] = true;
}
private void XmlRpcTeleportAgentMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
Hashtable responseData = (Hashtable)response.Value;
@@ -1808,6 +2066,56 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = true;
}
private void XmlRpcResetLand(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable responseData = (Hashtable)response.Value;
string musicURL = string.Empty;
UUID groupID = UUID.Zero;
uint flags = 0;
bool set_group = false, set_music = false, set_flags = false;
if (requestData.Contains("group") && requestData["group"] != null)
set_group = UUID.TryParse(requestData["group"].ToString(), out groupID);
if (requestData.Contains("music") && requestData["music"] != null)
{
musicURL = requestData["music"].ToString();
set_music = true;
}
if (requestData.Contains("flags") && requestData["flags"] != null)
set_flags = UInt32.TryParse(requestData["flags"].ToString(), out flags);
m_log.InfoFormat("[RADMIN]: Received Reset Land Request group={0} musicURL={1} flags={2}",
(set_group ? groupID.ToString() : "unchanged"),
(set_music ? musicURL : "unchanged"),
(set_flags ? flags.ToString() : "unchanged"));
m_application.SceneManager.ForEachScene(delegate(Scene s)
{
List<ILandObject> parcels = s.LandChannel.AllParcels();
foreach (ILandObject p in parcels)
{
if (set_music)
p.LandData.MusicURL = musicURL;
if (set_group)
p.LandData.GroupID = groupID;
if (set_flags)
p.LandData.Flags = flags;
s.LandChannel.UpdateLandObject(p.LandData.LocalID, p.LandData);
}
}
);
responseData["success"] = true;
m_log.Info("[RADMIN]: Reset Land Request complete");
}
/// <summary>
/// Parse a float with the given parameter name from a request data hash table.
/// </summary>
@@ -1874,29 +2182,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
return;
}
#region Deprecate July 2012
//region_ID, regionid, region_uuid will be deprecated in July 2012!!!!!!
else if (requestData.ContainsKey("regionid") &&
!String.IsNullOrEmpty((string)requestData["regionid"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter regionid will be deprecated as of July 2012. Use region_id instead");
}
else if (requestData.ContainsKey("region_ID") &&
!String.IsNullOrEmpty((string)requestData["region_ID"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter region_ID will be deprecated as of July 2012. Use region_id instead");
}
else if (requestData.ContainsKey("regionID") &&
!String.IsNullOrEmpty((string)requestData["regionID"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter regionID will be deprecated as of July 2012. Use region_id instead");
}
else if (requestData.ContainsKey("region_uuid") &&
!String.IsNullOrEmpty((string)requestData["region_uuid"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter region_uuid will be deprecated as of July 2012. Use region_id instead");
}
#endregion
else
{
responseData["accepted"] = false;
@@ -1918,56 +2203,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
throw new Exception(String.Format("Region ID {0} not found", regionID));
}
}
#region Deprecate July 2012
else if (requestData.ContainsKey("regionid") &&
!String.IsNullOrEmpty((string)requestData["regionid"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter regionid will be deprecated as of July 2012. Use region_id instead");
UUID regionID = (UUID)(string)requestData["regionid"];
if (!m_application.SceneManager.TryGetScene(regionID, out scene))
{
responseData["error"] = String.Format("Region ID {0} not found", regionID);
throw new Exception(String.Format("Region ID {0} not found", regionID));
}
}
else if (requestData.ContainsKey("region_ID") &&
!String.IsNullOrEmpty((string)requestData["region_ID"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter region_ID will be deprecated as of July 2012. Use region_id instead");
UUID regionID = (UUID)(string)requestData["region_ID"];
if (!m_application.SceneManager.TryGetScene(regionID, out scene))
{
responseData["error"] = String.Format("Region ID {0} not found", regionID);
throw new Exception(String.Format("Region ID {0} not found", regionID));
}
}
else if (requestData.ContainsKey("regionID") &&
!String.IsNullOrEmpty((string)requestData["regionID"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter regionID will be deprecated as of July 2012. Use region_id instead");
UUID regionID = (UUID)(string)requestData["regionID"];
if (!m_application.SceneManager.TryGetScene(regionID, out scene))
{
responseData["error"] = String.Format("Region ID {0} not found", regionID);
throw new Exception(String.Format("Region ID {0} not found", regionID));
}
}
else if (requestData.ContainsKey("region_uuid") &&
!String.IsNullOrEmpty((string)requestData["region_uuid"]))
{
m_log.WarnFormat("[RADMIN]: Use of parameter region_uuid will be deprecated as of July 2012. Use region_id instead");
UUID regionID = (UUID)(string)requestData["region_uuid"];
if (!m_application.SceneManager.TryGetScene(regionID, out scene))
{
responseData["error"] = String.Format("Region ID {0} not found", regionID);
throw new Exception(String.Format("Region ID {0} not found", regionID));
}
}
#endregion
else if (requestData.ContainsKey("region_name") &&
!String.IsNullOrEmpty((string)requestData["region_name"]))
{
@@ -2056,7 +2291,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
account.ServiceURLs = new Dictionary<string, object>();
account.ServiceURLs["HomeURI"] = string.Empty;
account.ServiceURLs["GatekeeperURI"] = string.Empty;
account.ServiceURLs["InventoryServerURI"] = string.Empty;
account.ServiceURLs["AssetServerURI"] = string.Empty;
}
@@ -2381,7 +2615,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
destinationItem.Description = item.Description;
destinationItem.InvType = item.InvType;
destinationItem.CreatorId = item.CreatorId;
destinationItem.CreatorIdAsUuid = item.CreatorIdAsUuid;
destinationItem.CreatorData = item.CreatorData;
destinationItem.NextPermissions = item.NextPermissions;
destinationItem.CurrentPermissions = item.CurrentPermissions;
@@ -2436,7 +2669,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
destinationItem.Description = item.Description;
destinationItem.InvType = item.InvType;
destinationItem.CreatorId = item.CreatorId;
destinationItem.CreatorIdAsUuid = item.CreatorIdAsUuid;
destinationItem.CreatorData = item.CreatorData;
destinationItem.NextPermissions = item.NextPermissions;
destinationItem.CurrentPermissions = item.CurrentPermissions;
@@ -2549,7 +2781,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
destinationItem.Description = item.Description;
destinationItem.InvType = item.InvType;
destinationItem.CreatorId = item.CreatorId;
destinationItem.CreatorIdAsUuid = item.CreatorIdAsUuid;
destinationItem.CreatorData = item.CreatorData;
destinationItem.NextPermissions = item.NextPermissions;
destinationItem.CurrentPermissions = item.CurrentPermissions;
@@ -2587,15 +2818,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController
/// </summary>
private void ApplyNextOwnerPermissions(InventoryItemBase item)
{
if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0)
if (item.InvType == (int)InventoryType.Object)
{
if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0)
item.CurrentPermissions &= ~(uint)PermissionMask.Copy;
if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0)
item.CurrentPermissions &= ~(uint)PermissionMask.Transfer;
if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0)
item.CurrentPermissions &= ~(uint)PermissionMask.Modify;
uint perms = item.CurrentPermissions;
PermissionsUtil.ApplyFoldedPermissions(item.CurrentPermissions, ref perms);
item.CurrentPermissions = perms;
}
item.CurrentPermissions &= item.NextPermissions;
item.BasePermissions &= item.NextPermissions;
item.EveryOnePermissions &= item.NextPermissions;
@@ -2707,7 +2936,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// Set home position
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
(int)(regionXLocation * Constants.RegionSize), (int)(regionYLocation * Constants.RegionSize));
(int)Util.RegionToWorldLoc(regionXLocation), (int)Util.RegionToWorldLoc(regionYLocation));
if (null == home) {
m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", names[0], names[1]);
} else {
@@ -2855,7 +3084,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
inventoryItem.Description = GetStringAttribute(item,"desc","");
inventoryItem.InvType = GetIntegerAttribute(item,"invtype",-1);
inventoryItem.CreatorId = GetStringAttribute(item,"creatorid","");
inventoryItem.CreatorIdAsUuid = (UUID)GetStringAttribute(item,"creatoruuid","");
inventoryItem.CreatorData = GetStringAttribute(item, "creatordata", "");
inventoryItem.NextPermissions = GetUnsignedAttribute(perms, "next", 0x7fffffff);
inventoryItem.CurrentPermissions = GetUnsignedAttribute(perms,"current",0x7fffffff);

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
<Addin id="OpenSim.ApplicationPlugins.Rest.Inventory" version="0.1">
<Runtime>
<Import assembly="OpenSim.ApplicationPlugins.Rest.Inventory.dll"/>
</Runtime>
<Dependencies>
<Addin id="OpenSim" version="0.5" />
</Dependencies>
<Extension path = "/OpenSim/Startup">
<Plugin id="RestInventory" type="OpenSim.ApplicationPlugins.Rest.Inventory.RestHandler" />
</Extension>
</Addin>

View File

@@ -1,551 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using log4net;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Services.Interfaces;
using IAvatarService = OpenSim.Services.Interfaces.IAvatarService;
namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
public class Rest
{
internal static readonly ILog Log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
internal static bool DEBUG = Log.IsDebugEnabled;
/// <summary>
/// Supported authentication schemes
/// </summary>
public const string AS_BASIC = "Basic"; // simple user/password verification
public const string AS_DIGEST = "Digest"; // password safe authentication
/// Supported Digest algorithms
public const string Digest_MD5 = "MD5"; // assumed default if omitted
public const string Digest_MD5Sess = "MD5-sess"; // session-span - not good for REST?
public const string Qop_Auth = "auth"; // authentication only
public const string Qop_Int = "auth-int"; // TODO
/// <summary>
/// These values have a single value for the whole
/// domain and lifetime of the plugin handler. We
/// make them static for ease of reference within
/// the assembly. These are initialized by the
/// RestHandler class during start-up.
/// </summary>
internal static IRestHandler Plugin = null;
internal static OpenSimBase main = null;
internal static string Prefix = null;
internal static IConfig Config = null;
internal static string GodKey = null;
internal static bool Authenticate = true;
internal static bool Secure = true;
internal static bool ExtendedEscape = true;
internal static bool DumpAsset = false;
internal static bool Fill = true;
internal static bool FlushEnabled = true;
internal static string Realm = "OpenSim REST";
internal static string Scheme = AS_BASIC;
internal static int DumpLineSize = 32; // Should be a multiple of 16 or (possibly) 4
/// <summary>
/// These are all dependent upon the Comms manager
/// being initialized. So they have to be properties
/// because the comms manager is now a module and is
/// not guaranteed to be there when the rest handler
/// initializes.
/// </summary>
internal static IInventoryService InventoryServices
{
get { return main.SceneManager.CurrentOrFirstScene.InventoryService; }
}
internal static IUserAccountService UserServices
{
get { return main.SceneManager.CurrentOrFirstScene.UserAccountService; }
}
internal static IAuthenticationService AuthServices
{
get { return main.SceneManager.CurrentOrFirstScene.AuthenticationService; }
}
internal static IAvatarService AvatarServices
{
get { return main.SceneManager.CurrentOrFirstScene.AvatarService; }
}
internal static IAssetService AssetServices
{
get { return main.SceneManager.CurrentOrFirstScene.AssetService; }
}
/// <summary>
/// HTTP requires that status information be generated for PUT
/// and POST opertaions. This is in support of that. The
/// operation verb gets substituted into the first string,
/// and the completion code is inserted into the tail. The
/// strings are put here to encourage consistency.
/// </summary>
internal static string statusHead = "<html><body><title>{0} status</title><break>";
internal static string statusTail = "</body></html>";
internal static Dictionary<int,string> HttpStatusDesc;
static Rest()
{
HttpStatusDesc = new Dictionary<int,string>();
if (HttpStatusCodeArray.Length != HttpStatusDescArray.Length)
{
Log.ErrorFormat("{0} HTTP Status Code and Description arrays do not match");
throw new Exception("HTTP Status array discrepancy");
}
// Repackage the data into something more tractable. The sparse
// nature of HTTP return codes makes an array a bad choice.
for (int i=0; i<HttpStatusCodeArray.Length; i++)
{
HttpStatusDesc.Add(HttpStatusCodeArray[i], HttpStatusDescArray[i]);
}
}
internal static int CreationDate
{
get { return (int) (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; }
}
internal static string MsgId
{
get { return Plugin.MsgId; }
}
internal static string RequestId
{
get { return Plugin.RequestId; }
}
internal static Encoding Encoding = Util.UTF8;
/// <summary>
/// Version control for REST implementation. This
/// refers to the overall infrastructure represented
/// by the following classes
/// RequestData
/// RequestInventoryPlugin
/// Rest
/// It does no describe implementation classes such as
/// RestInventoryServices, which may morph much more
/// often. Such classes ARE dependent upon this however
/// and should check it in their Initialize method.
/// </summary>
public static readonly float Version = 1.0F;
public const string Name = "REST 1.0";
/// <summary>
/// Currently defined HTTP methods.
/// Only GET and HEAD are required to be
/// supported by all servers. See Respond
/// to see how these are handled.
/// </summary>
// REST AGENT 1.0 interpretations
public const string GET = "get"; // information retrieval - server state unchanged
public const string HEAD = "head"; // same as get except only the headers are returned.
public const string POST = "post"; // Replace the URI designated resource with the entity.
public const string PUT = "put"; // Add the entity to the context represented by the URI
public const string DELETE = "delete"; // Remove the URI designated resource from the server.
public const string OPTIONS = "options"; //
public const string TRACE = "trace"; //
public const string CONNECT = "connect"; //
// Define this in one place...
public const string UrlPathSeparator = "/";
public const string UrlMethodSeparator = ":";
// Redirection qualifications
public const bool PERMANENT = false;
public const bool TEMPORARY = true;
// Constant arrays used by String.Split
public static readonly char C_SPACE = ' ';
public static readonly char C_SLASH = '/';
public static readonly char C_PATHSEP = '/';
public static readonly char C_COLON = ':';
public static readonly char C_PLUS = '+';
public static readonly char C_PERIOD = '.';
public static readonly char C_COMMA = ',';
public static readonly char C_DQUOTE = '"';
public static readonly string CS_SPACE = " ";
public static readonly string CS_SLASH = "/";
public static readonly string CS_PATHSEP = "/";
public static readonly string CS_COLON = ":";
public static readonly string CS_PLUS = "+";
public static readonly string CS_PERIOD = ".";
public static readonly string CS_COMMA = ",";
public static readonly string CS_DQUOTE = "\"";
public static readonly char[] CA_SPACE = { C_SPACE };
public static readonly char[] CA_SLASH = { C_SLASH };
public static readonly char[] CA_PATHSEP = { C_PATHSEP };
public static readonly char[] CA_COLON = { C_COLON };
public static readonly char[] CA_PERIOD = { C_PERIOD };
public static readonly char[] CA_PLUS = { C_PLUS };
public static readonly char[] CA_COMMA = { C_COMMA };
public static readonly char[] CA_DQUOTE = { C_DQUOTE };
// HTTP Code Values (in value order)
public const int HttpStatusCodeContinue = 100;
public const int HttpStatusCodeSwitchingProtocols = 101;
public const int HttpStatusCodeOK = 200;
public const int HttpStatusCodeCreated = 201;
public const int HttpStatusCodeAccepted = 202;
public const int HttpStatusCodeNonAuthoritative = 203;
public const int HttpStatusCodeNoContent = 204;
public const int HttpStatusCodeResetContent = 205;
public const int HttpStatusCodePartialContent = 206;
public const int HttpStatusCodeMultipleChoices = 300;
public const int HttpStatusCodePermanentRedirect = 301;
public const int HttpStatusCodeFound = 302;
public const int HttpStatusCodeSeeOther = 303;
public const int HttpStatusCodeNotModified = 304;
public const int HttpStatusCodeUseProxy = 305;
public const int HttpStatusCodeReserved306 = 306;
public const int HttpStatusCodeTemporaryRedirect = 307;
public const int HttpStatusCodeBadRequest = 400;
public const int HttpStatusCodeNotAuthorized = 401;
public const int HttpStatusCodePaymentRequired = 402;
public const int HttpStatusCodeForbidden = 403;
public const int HttpStatusCodeNotFound = 404;
public const int HttpStatusCodeMethodNotAllowed = 405;
public const int HttpStatusCodeNotAcceptable = 406;
public const int HttpStatusCodeProxyAuthenticate = 407;
public const int HttpStatusCodeTimeOut = 408;
public const int HttpStatusCodeConflict = 409;
public const int HttpStatusCodeGone = 410;
public const int HttpStatusCodeLengthRequired = 411;
public const int HttpStatusCodePreconditionFailed = 412;
public const int HttpStatusCodeEntityTooLarge = 413;
public const int HttpStatusCodeUriTooLarge = 414;
public const int HttpStatusCodeUnsupportedMedia = 415;
public const int HttpStatusCodeRangeNotSatsified = 416;
public const int HttpStatusCodeExpectationFailed = 417;
public const int HttpStatusCodeServerError = 500;
public const int HttpStatusCodeNotImplemented = 501;
public const int HttpStatusCodeBadGateway = 502;
public const int HttpStatusCodeServiceUnavailable = 503;
public const int HttpStatusCodeGatewayTimeout = 504;
public const int HttpStatusCodeHttpVersionError = 505;
public static readonly int[] HttpStatusCodeArray = {
HttpStatusCodeContinue,
HttpStatusCodeSwitchingProtocols,
HttpStatusCodeOK,
HttpStatusCodeCreated,
HttpStatusCodeAccepted,
HttpStatusCodeNonAuthoritative,
HttpStatusCodeNoContent,
HttpStatusCodeResetContent,
HttpStatusCodePartialContent,
HttpStatusCodeMultipleChoices,
HttpStatusCodePermanentRedirect,
HttpStatusCodeFound,
HttpStatusCodeSeeOther,
HttpStatusCodeNotModified,
HttpStatusCodeUseProxy,
HttpStatusCodeReserved306,
HttpStatusCodeTemporaryRedirect,
HttpStatusCodeBadRequest,
HttpStatusCodeNotAuthorized,
HttpStatusCodePaymentRequired,
HttpStatusCodeForbidden,
HttpStatusCodeNotFound,
HttpStatusCodeMethodNotAllowed,
HttpStatusCodeNotAcceptable,
HttpStatusCodeProxyAuthenticate,
HttpStatusCodeTimeOut,
HttpStatusCodeConflict,
HttpStatusCodeGone,
HttpStatusCodeLengthRequired,
HttpStatusCodePreconditionFailed,
HttpStatusCodeEntityTooLarge,
HttpStatusCodeUriTooLarge,
HttpStatusCodeUnsupportedMedia,
HttpStatusCodeRangeNotSatsified,
HttpStatusCodeExpectationFailed,
HttpStatusCodeServerError,
HttpStatusCodeNotImplemented,
HttpStatusCodeBadGateway,
HttpStatusCodeServiceUnavailable,
HttpStatusCodeGatewayTimeout,
HttpStatusCodeHttpVersionError
};
// HTTP Status Descriptions (in status code order)
// This array must be kept strictly consistent with respect
// to the status code array above.
public static readonly string[] HttpStatusDescArray = {
"Continue Request",
"Switching Protocols",
"OK",
"CREATED",
"ACCEPTED",
"NON-AUTHORITATIVE INFORMATION",
"NO CONTENT",
"RESET CONTENT",
"PARTIAL CONTENT",
"MULTIPLE CHOICES",
"PERMANENT REDIRECT",
"FOUND",
"SEE OTHER",
"NOT MODIFIED",
"USE PROXY",
"RESERVED CODE 306",
"TEMPORARY REDIRECT",
"BAD REQUEST",
"NOT AUTHORIZED",
"PAYMENT REQUIRED",
"FORBIDDEN",
"NOT FOUND",
"METHOD NOT ALLOWED",
"NOT ACCEPTABLE",
"PROXY AUTHENTICATION REQUIRED",
"TIMEOUT",
"CONFLICT",
"GONE",
"LENGTH REQUIRED",
"PRECONDITION FAILED",
"ENTITY TOO LARGE",
"URI TOO LARGE",
"UNSUPPORTED MEDIA",
"RANGE NOT SATISFIED",
"EXPECTATION FAILED",
"SERVER ERROR",
"NOT IMPLEMENTED",
"BAD GATEWAY",
"SERVICE UNAVAILABLE",
"GATEWAY TIMEOUT",
"HTTP VERSION NOT SUPPORTED"
};
// HTTP Headers
public const string HttpHeaderAccept = "Accept";
public const string HttpHeaderAcceptCharset = "Accept-Charset";
public const string HttpHeaderAcceptEncoding = "Accept-Encoding";
public const string HttpHeaderAcceptLanguage = "Accept-Language";
public const string HttpHeaderAcceptRanges = "Accept-Ranges";
public const string HttpHeaderAge = "Age";
public const string HttpHeaderAllow = "Allow";
public const string HttpHeaderAuthorization = "Authorization";
public const string HttpHeaderCacheControl = "Cache-Control";
public const string HttpHeaderConnection = "Connection";
public const string HttpHeaderContentEncoding = "Content-Encoding";
public const string HttpHeaderContentLanguage = "Content-Language";
public const string HttpHeaderContentLength = "Content-Length";
public const string HttpHeaderContentLocation = "Content-Location";
public const string HttpHeaderContentMD5 = "Content-MD5";
public const string HttpHeaderContentRange = "Content-Range";
public const string HttpHeaderContentType = "Content-Type";
public const string HttpHeaderDate = "Date";
public const string HttpHeaderETag = "ETag";
public const string HttpHeaderExpect = "Expect";
public const string HttpHeaderExpires = "Expires";
public const string HttpHeaderFrom = "From";
public const string HttpHeaderHost = "Host";
public const string HttpHeaderIfMatch = "If-Match";
public const string HttpHeaderIfModifiedSince = "If-Modified-Since";
public const string HttpHeaderIfNoneMatch = "If-None-Match";
public const string HttpHeaderIfRange = "If-Range";
public const string HttpHeaderIfUnmodifiedSince = "If-Unmodified-Since";
public const string HttpHeaderLastModified = "Last-Modified";
public const string HttpHeaderLocation = "Location";
public const string HttpHeaderMaxForwards = "Max-Forwards";
public const string HttpHeaderPragma = "Pragma";
public const string HttpHeaderProxyAuthenticate = "Proxy-Authenticate";
public const string HttpHeaderProxyAuthorization = "Proxy-Authorization";
public const string HttpHeaderRange = "Range";
public const string HttpHeaderReferer = "Referer";
public const string HttpHeaderRetryAfter = "Retry-After";
public const string HttpHeaderServer = "Server";
public const string HttpHeaderTE = "TE";
public const string HttpHeaderTrailer = "Trailer";
public const string HttpHeaderTransferEncoding = "Transfer-Encoding";
public const string HttpHeaderUpgrade = "Upgrade";
public const string HttpHeaderUserAgent = "User-Agent";
public const string HttpHeaderVary = "Vary";
public const string HttpHeaderVia = "Via";
public const string HttpHeaderWarning = "Warning";
public const string HttpHeaderWWWAuthenticate = "WWW-Authenticate";
/// Utility routines
public static string StringToBase64(string str)
{
try
{
byte[] encData_byte = new byte[str.Length];
encData_byte = Util.UTF8.GetBytes(str);
return Convert.ToBase64String(encData_byte);
}
catch
{
return String.Empty;
}
}
public static string Base64ToString(string str)
{
try
{
return Util.Base64ToString(str);
}
catch
{
return String.Empty;
}
}
private const string hvals = "0123456789abcdef";
public static int Hex2Int(string hex)
{
int val = 0;
int sum = 0;
string tmp = null;
if (hex != null)
{
tmp = hex.ToLower();
for (int i = 0; i < tmp.Length; i++)
{
val = hvals.IndexOf(tmp[i]);
if (val == -1)
break;
sum *= 16;
sum += val;
}
}
return sum;
}
// Nonce management
public static string NonceGenerator()
{
return StringToBase64(CreationDate + Guid.NewGuid().ToString());
}
// Dump the specified data stream
public static void Dump(byte[] data)
{
char[] buffer = new char[DumpLineSize];
int cc = 0;
for (int i = 0; i < data.Length; i++)
{
if (i % DumpLineSize == 0) Console.Write("\n{0}: ",i.ToString("d8"));
if (i % 4 == 0) Console.Write(" ");
Console.Write("{0}",data[i].ToString("x2"));
if (data[i] < 127 && data[i] > 31)
buffer[i % DumpLineSize] = (char) data[i];
else
buffer[i % DumpLineSize] = '.';
cc++;
if (i != 0 && (i + 1) % DumpLineSize == 0)
{
Console.Write(" |"+(new String(buffer))+"|");
cc = 0;
}
}
// Finish off any incomplete line
if (cc != 0)
{
for (int i = cc ; i < DumpLineSize; i++)
{
if (i % 4 == 0) Console.Write(" ");
Console.Write(" ");
buffer[i % DumpLineSize] = ' ';
}
Console.WriteLine(" |"+(new String(buffer))+"|");
}
else
{
Console.Write("\n");
}
}
}
// Local exception type
public class RestException : Exception
{
internal int statusCode;
internal string statusDesc;
internal string httpmethod;
internal string httppath;
public RestException(string msg) : base(msg)
{
}
}
}

View File

@@ -1,860 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
public class RestAppearanceServices : IRest
{
// private static readonly int PARM_USERID = 0;
// private static readonly int PARM_PATH = 1;
// private bool enabled = false;
private string qPrefix = "appearance";
/// <summary>
/// The constructor makes sure that the service prefix is absolute
/// and the registers the service handler and the allocator.
/// </summary>
public RestAppearanceServices()
{
Rest.Log.InfoFormat("{0} User appearance services initializing", MsgId);
Rest.Log.InfoFormat("{0} Using REST Implementation Version {1}", MsgId, Rest.Version);
// If a relative path was specified for the handler's domain,
// add the standard prefix to make it absolute, e.g. /admin
if (!qPrefix.StartsWith(Rest.UrlPathSeparator))
{
Rest.Log.InfoFormat("{0} Domain is relative, adding absolute prefix", MsgId);
qPrefix = String.Format("{0}{1}{2}", Rest.Prefix, Rest.UrlPathSeparator, qPrefix);
qPrefix = String.Format("{0}{1}{2}", Rest.Prefix, Rest.UrlPathSeparator, qPrefix);
Rest.Log.InfoFormat("{0} Domain is now <{1}>", MsgId, qPrefix);
}
// Register interface using the absolute URI.
Rest.Plugin.AddPathHandler(DoAppearance,qPrefix,Allocate);
// Activate if everything went OK
// enabled = true;
Rest.Log.InfoFormat("{0} User appearance services initialization complete", MsgId);
}
/// <summary>
/// Post-construction, pre-enabled initialization opportunity
/// Not currently exploited.
/// </summary>
public void Initialize()
{
}
/// <summary>
/// Called by the plug-in to halt service processing. Local processing is
/// disabled.
/// </summary>
public void Close()
{
// enabled = false;
Rest.Log.InfoFormat("{0} User appearance services closing down", MsgId);
}
/// <summary>
/// This property is declared locally because it is used a lot and
/// brevity is nice.
/// </summary>
internal string MsgId
{
get { return Rest.MsgId; }
}
#region Interface
/// <summary>
/// The plugin (RestHandler) calls this method to allocate the request
/// state carrier for a new request. It is destroyed when the request
/// completes. All request-instance specific state is kept here. This
/// is registered when this service provider is registered.
/// </summary>
/// <param name=request>Inbound HTTP request information</param>
/// <param name=response>Outbound HTTP request information</param>
/// <param name=qPrefix>REST service domain prefix</param>
/// <returns>A RequestData instance suitable for this service</returns>
private RequestData Allocate(OSHttpRequest request, OSHttpResponse response, string prefix)
{
return (RequestData) new AppearanceRequestData(request, response, prefix);
}
/// <summary>
/// This method is registered with the handler when this service provider
/// is initialized. It is called whenever the plug-in identifies this service
/// provider as the best match for a given request.
/// It handles all aspects of inventory REST processing, i.e. /admin/inventory
/// </summary>
/// <param name=hdata>A consolidated HTTP request work area</param>
private void DoAppearance(RequestData hdata)
{
// !!! REFACTORIMG PROBLEM. This needs rewriting for 0.7
//AppearanceRequestData rdata = (AppearanceRequestData) hdata;
//Rest.Log.DebugFormat("{0} DoAppearance ENTRY", MsgId);
//// If we're disabled, do nothing.
//if (!enabled)
//{
// return;
//}
//// Now that we know this is a serious attempt to
//// access inventory data, we should find out who
//// is asking, and make sure they are authorized
//// to do so. We need to validate the caller's
//// identity before revealing anything about the
//// status quo. Authenticate throws an exception
//// via Fail if no identity information is present.
////
//// With the present HTTP server we can't use the
//// builtin authentication mechanisms because they
//// would be enforced for all in-bound requests.
//// Instead we look at the headers ourselves and
//// handle authentication directly.
//try
//{
// if (!rdata.IsAuthenticated)
// {
// rdata.Fail(Rest.HttpStatusCodeNotAuthorized,String.Format("user \"{0}\" could not be authenticated", rdata.userName));
// }
//}
//catch (RestException e)
//{
// if (e.statusCode == Rest.HttpStatusCodeNotAuthorized)
// {
// Rest.Log.WarnFormat("{0} User not authenticated", MsgId);
// Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, rdata.request.Headers.Get("Authorization"));
// }
// else
// {
// Rest.Log.ErrorFormat("{0} User authentication failed", MsgId);
// Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, rdata.request.Headers.Get("Authorization"));
// }
// throw (e);
//}
//Rest.Log.DebugFormat("{0} Authenticated {1}", MsgId, rdata.userName);
//// We can only get here if we are authorized
////
//// The requestor may have specified an UUID or
//// a conjoined FirstName LastName string. We'll
//// try both. If we fail with the first, UUID,
//// attempt, we try the other. As an example, the
//// URI for a valid inventory request might be:
////
//// http://<host>:<port>/admin/inventory/Arthur Dent
////
//// Indicating that this is an inventory request for
//// an avatar named Arthur Dent. This is ALL that is
//// required to designate a GET for an entire
//// inventory.
////
//// Do we have at least a user agent name?
//if (rdata.Parameters.Length < 1)
//{
// Rest.Log.WarnFormat("{0} Appearance: No user agent identifier specified", MsgId);
// rdata.Fail(Rest.HttpStatusCodeBadRequest, "no user identity specified");
//}
//// The first parameter MUST be the agent identification, either an UUID
//// or a space-separated First-name Last-Name specification. We check for
//// an UUID first, if anyone names their character using a valid UUID
//// that identifies another existing avatar will cause this a problem...
//try
//{
// rdata.uuid = new UUID(rdata.Parameters[PARM_USERID]);
// Rest.Log.DebugFormat("{0} UUID supplied", MsgId);
// rdata.userProfile = Rest.UserServices.GetUserProfile(rdata.uuid);
//}
//catch
//{
// string[] names = rdata.Parameters[PARM_USERID].Split(Rest.CA_SPACE);
// if (names.Length == 2)
// {
// Rest.Log.DebugFormat("{0} Agent Name supplied [2]", MsgId);
// rdata.userProfile = Rest.UserServices.GetUserProfile(names[0],names[1]);
// }
// else
// {
// Rest.Log.WarnFormat("{0} A Valid UUID or both first and last names must be specified", MsgId);
// rdata.Fail(Rest.HttpStatusCodeBadRequest, "invalid user identity");
// }
//}
//// If the user profile is null then either the server is broken, or the
//// user is not known. We always assume the latter case.
//if (rdata.userProfile != null)
//{
// Rest.Log.DebugFormat("{0} User profile obtained for agent {1} {2}",
// MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName);
//}
//else
//{
// Rest.Log.WarnFormat("{0} No user profile for {1}", MsgId, rdata.path);
// rdata.Fail(Rest.HttpStatusCodeNotFound, "unrecognized user identity");
//}
//// If we get to here, then we have effectively validated the user's
//switch (rdata.method)
//{
// case Rest.HEAD : // Do the processing, set the status code, suppress entity
// DoGet(rdata);
// rdata.buffer = null;
// break;
// case Rest.GET : // Do the processing, set the status code, return entity
// DoGet(rdata);
// break;
// case Rest.PUT : // Update named element
// DoUpdate(rdata);
// break;
// case Rest.POST : // Add new information to identified context.
// DoExtend(rdata);
// break;
// case Rest.DELETE : // Delete information
// DoDelete(rdata);
// break;
// default :
// Rest.Log.WarnFormat("{0} Method {1} not supported for {2}",
// MsgId, rdata.method, rdata.path);
// rdata.Fail(Rest.HttpStatusCodeMethodNotAllowed,
// String.Format("{0} not supported", rdata.method));
// break;
//}
}
#endregion Interface
#region method-specific processing
/// <summary>
/// This method implements GET processing for user's appearance.
/// </summary>
/// <param name=rdata>HTTP service request work area</param>
// private void DoGet(AppearanceRequestData rdata)
// {
// AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
//
// if (adata == null)
// {
// rdata.Fail(Rest.HttpStatusCodeNoContent,
// String.Format("appearance data not found for user {0} {1}",
// rdata.userProfile.FirstName, rdata.userProfile.SurName));
// }
// rdata.userAppearance = adata.ToAvatarAppearance(rdata.userProfile.ID);
//
// rdata.initXmlWriter();
//
// FormatUserAppearance(rdata);
//
// // Indicate a successful request
//
// rdata.Complete();
//
// // Send the response to the user. The body will be implicitly
// // constructed from the result of the XML writer.
//
// rdata.Respond(String.Format("Appearance {0} Normal completion", rdata.method));
// }
/// <summary>
/// POST adds NEW information to the user profile database.
/// This effectively resets the appearance before applying those
/// characteristics supplied in the request.
/// </summary>
// private void DoExtend(AppearanceRequestData rdata)
// {
//
// bool created = false;
// bool modified = false;
// string newnode = String.Empty;
//
// Rest.Log.DebugFormat("{0} POST ENTRY", MsgId);
//
// //AvatarAppearance old = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
//
// rdata.userAppearance = new AvatarAppearance();
//
// // Although the following behavior is admitted by HTTP I am becoming
// // increasingly doubtful that it is appropriate for REST. If I attempt to
// // add a new record, and it already exists, then it seems to me that the
// // attempt should fail, rather than update the existing record.
// AvatarData adata = null;
// if (GetUserAppearance(rdata))
// {
// modified = rdata.userAppearance != null;
// created = !modified;
// adata = new AvatarData(rdata.userAppearance);
// Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
// // Rest.UserServices.UpdateUserProfile(rdata.userProfile);
// }
// else
// {
// created = true;
// adata = new AvatarData(rdata.userAppearance);
// Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
// // Rest.UserServices.UpdateUserProfile(rdata.userProfile);
// }
//
// if (created)
// {
// newnode = String.Format("{0} {1}", rdata.userProfile.FirstName,
// rdata.userProfile.SurName);
// // Must include a location header with a URI that identifies the new resource.
//
// rdata.AddHeader(Rest.HttpHeaderLocation,String.Format("http://{0}{1}:{2}{3}{4}",
// rdata.hostname,rdata.port,rdata.path,Rest.UrlPathSeparator, newnode));
// rdata.Complete(Rest.HttpStatusCodeCreated);
//
// }
// else
// {
// if (modified)
// {
// rdata.Complete(Rest.HttpStatusCodeOK);
// }
// else
// {
// rdata.Complete(Rest.HttpStatusCodeNoContent);
// }
// }
//
// rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
//
// }
/// <summary>
/// This updates the user's appearance. not all aspects need to be provided,
/// only those supplied will be changed.
/// </summary>
// private void DoUpdate(AppearanceRequestData rdata)
// {
//
// // REFACTORING PROBLEM This was commented out. It doesn't work for 0.7
//
// //bool created = false;
// //bool modified = false;
//
//
// //rdata.userAppearance = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
//
// //// If the user exists then this is considered a modification regardless
// //// of what may, or may not be, specified in the payload.
//
// //if (rdata.userAppearance != null)
// //{
// // modified = true;
// // Rest.AvatarServices.UpdateUserAppearance(rdata.userProfile.ID, rdata.userAppearance);
// // Rest.UserServices.UpdateUserProfile(rdata.userProfile);
// //}
//
// //if (created)
// //{
// // rdata.Complete(Rest.HttpStatusCodeCreated);
// //}
// //else
// //{
// // if (modified)
// // {
// // rdata.Complete(Rest.HttpStatusCodeOK);
// // }
// // else
// // {
// // rdata.Complete(Rest.HttpStatusCodeNoContent);
// // }
// //}
//
// rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
//
// }
/// <summary>
/// Delete the specified user's appearance. This actually performs a reset
/// to the default avatar appearance, if the info is already there.
/// Existing ownership is preserved. All prior updates are lost and can not
/// be recovered.
/// </summary>
// private void DoDelete(AppearanceRequestData rdata)
// {
// AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
//
// if (adata != null)
// {
// AvatarAppearance old = adata.ToAvatarAppearance(rdata.userProfile.ID);
// rdata.userAppearance = new AvatarAppearance();
// rdata.userAppearance.Owner = old.Owner;
// adata = new AvatarData(rdata.userAppearance);
//
// Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
//
// rdata.Complete();
// }
// else
// {
//
// rdata.Complete(Rest.HttpStatusCodeNoContent);
// }
//
// rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
// }
#endregion method-specific processing
private bool GetUserAppearance(AppearanceRequestData rdata)
{
XmlReader xml;
bool indata = false;
rdata.initXmlReader();
xml = rdata.reader;
while (xml.Read())
{
switch (xml.NodeType)
{
case XmlNodeType.Element :
switch (xml.Name)
{
case "Appearance" :
if (xml.MoveToAttribute("Height"))
{
rdata.userAppearance.AvatarHeight = (float) Convert.ToDouble(xml.Value);
indata = true;
}
// if (xml.MoveToAttribute("Owner"))
// {
// rdata.userAppearance.Owner = (UUID)xml.Value;
// indata = true;
// }
if (xml.MoveToAttribute("Serial"))
{
rdata.userAppearance.Serial = Convert.ToInt32(xml.Value);
indata = true;
}
break;
/*
case "Body" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.BodyItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.BodyAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Skin" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.SkinItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.SkinAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Hair" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.HairItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.HairAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Eyes" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.EyesItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.EyesAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Shirt" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.ShirtItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.ShirtAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Pants" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.PantsItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.PantsAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Shoes" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.ShoesItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.ShoesAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Socks" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.SocksItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.SocksAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Jacket" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.JacketItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.JacketAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Gloves" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.GlovesItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.GlovesAsset = (UUID)xml.Value;
indata = true;
}
break;
case "UnderShirt" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.UnderShirtItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.UnderShirtAsset = (UUID)xml.Value;
indata = true;
}
break;
case "UnderPants" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.UnderPantsItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.UnderPantsAsset = (UUID)xml.Value;
indata = true;
}
break;
case "Skirt" :
if (xml.MoveToAttribute("Item"))
{
rdata.userAppearance.SkirtItem = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Asset"))
{
rdata.userAppearance.SkirtAsset = (UUID)xml.Value;
indata = true;
}
break;
*/
case "Attachment" :
{
int ap;
UUID asset;
UUID item;
if (xml.MoveToAttribute("AtPoint"))
{
ap = Convert.ToInt32(xml.Value);
if (xml.MoveToAttribute("Asset"))
{
asset = new UUID(xml.Value);
if (xml.MoveToAttribute("Asset"))
{
item = new UUID(xml.Value);
rdata.userAppearance.SetAttachment(ap, item, asset);
indata = true;
}
}
}
}
break;
case "Texture" :
if (xml.MoveToAttribute("Default"))
{
rdata.userAppearance.Texture = new Primitive.TextureEntry(new UUID(xml.Value));
indata = true;
}
break;
case "Face" :
{
uint index;
if (xml.MoveToAttribute("Index"))
{
index = Convert.ToUInt32(xml.Value);
if (xml.MoveToAttribute("Id"))
{
rdata.userAppearance.Texture.CreateFace(index).TextureID = new UUID(xml.Value);
indata = true;
}
}
}
break;
case "VisualParameters" :
{
xml.ReadContentAsBase64(rdata.userAppearance.VisualParams,
0, rdata.userAppearance.VisualParams.Length);
indata = true;
}
break;
}
break;
}
}
return indata;
}
private void FormatPart(AppearanceRequestData rdata, string part, UUID item, UUID asset)
{
if (item != UUID.Zero || asset != UUID.Zero)
{
rdata.writer.WriteStartElement(part);
if (item != UUID.Zero)
{
rdata.writer.WriteAttributeString("Item",item.ToString());
}
if (asset != UUID.Zero)
{
rdata.writer.WriteAttributeString("Asset",asset.ToString());
}
rdata.writer.WriteEndElement();
}
}
private void FormatUserAppearance(AppearanceRequestData rdata)
{
Rest.Log.DebugFormat("{0} FormatUserAppearance", MsgId);
if (rdata.userAppearance != null)
{
Rest.Log.DebugFormat("{0} FormatUserAppearance: appearance object exists", MsgId);
rdata.writer.WriteStartElement("Appearance");
rdata.writer.WriteAttributeString("Height", rdata.userAppearance.AvatarHeight.ToString());
// if (rdata.userAppearance.Owner != UUID.Zero)
// rdata.writer.WriteAttributeString("Owner", rdata.userAppearance.Owner.ToString());
rdata.writer.WriteAttributeString("Serial", rdata.userAppearance.Serial.ToString());
/*
FormatPart(rdata, "Body", rdata.userAppearance.BodyItem, rdata.userAppearance.BodyAsset);
FormatPart(rdata, "Skin", rdata.userAppearance.SkinItem, rdata.userAppearance.SkinAsset);
FormatPart(rdata, "Hair", rdata.userAppearance.HairItem, rdata.userAppearance.HairAsset);
FormatPart(rdata, "Eyes", rdata.userAppearance.EyesItem, rdata.userAppearance.EyesAsset);
FormatPart(rdata, "Shirt", rdata.userAppearance.ShirtItem, rdata.userAppearance.ShirtAsset);
FormatPart(rdata, "Pants", rdata.userAppearance.PantsItem, rdata.userAppearance.PantsAsset);
FormatPart(rdata, "Skirt", rdata.userAppearance.SkirtItem, rdata.userAppearance.SkirtAsset);
FormatPart(rdata, "Shoes", rdata.userAppearance.ShoesItem, rdata.userAppearance.ShoesAsset);
FormatPart(rdata, "Socks", rdata.userAppearance.SocksItem, rdata.userAppearance.SocksAsset);
FormatPart(rdata, "Jacket", rdata.userAppearance.JacketItem, rdata.userAppearance.JacketAsset);
FormatPart(rdata, "Gloves", rdata.userAppearance.GlovesItem, rdata.userAppearance.GlovesAsset);
FormatPart(rdata, "UnderShirt", rdata.userAppearance.UnderShirtItem, rdata.userAppearance.UnderShirtAsset);
FormatPart(rdata, "UnderPants", rdata.userAppearance.UnderPantsItem, rdata.userAppearance.UnderPantsAsset);
*/
Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting attachments", MsgId);
rdata.writer.WriteStartElement("Attachments");
List<AvatarAttachment> attachments = rdata.userAppearance.GetAttachments();
foreach (AvatarAttachment attach in attachments)
{
rdata.writer.WriteStartElement("Attachment");
rdata.writer.WriteAttributeString("AtPoint", attach.AttachPoint.ToString());
rdata.writer.WriteAttributeString("Item", attach.ItemID.ToString());
rdata.writer.WriteAttributeString("Asset", attach.AssetID.ToString());
rdata.writer.WriteEndElement();
}
rdata.writer.WriteEndElement();
Primitive.TextureEntry texture = rdata.userAppearance.Texture;
if (texture != null && (texture.DefaultTexture != null || texture.FaceTextures != null))
{
Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting textures", MsgId);
rdata.writer.WriteStartElement("Texture");
if (texture.DefaultTexture != null)
{
Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting default texture", MsgId);
rdata.writer.WriteAttributeString("Default",
texture.DefaultTexture.TextureID.ToString());
}
if (texture.FaceTextures != null)
{
Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting face textures", MsgId);
for (int i=0; i<texture.FaceTextures.Length;i++)
{
if (texture.FaceTextures[i] != null)
{
rdata.writer.WriteStartElement("Face");
rdata.writer.WriteAttributeString("Index", i.ToString());
rdata.writer.WriteAttributeString("Id",
texture.FaceTextures[i].TextureID.ToString());
rdata.writer.WriteEndElement();
}
}
}
rdata.writer.WriteEndElement();
}
Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting visual parameters", MsgId);
rdata.writer.WriteStartElement("VisualParameters");
rdata.writer.WriteBase64(rdata.userAppearance.VisualParams,0,
rdata.userAppearance.VisualParams.Length);
rdata.writer.WriteEndElement();
rdata.writer.WriteFullEndElement();
}
Rest.Log.DebugFormat("{0} FormatUserAppearance: completed", MsgId);
return;
}
#region appearance RequestData extension
internal class AppearanceRequestData : RequestData
{
/// <summary>
/// These are the inventory specific request/response state
/// extensions.
/// </summary>
internal UUID uuid = UUID.Zero;
internal UserProfileData userProfile = null;
internal AvatarAppearance userAppearance = null;
internal AppearanceRequestData(OSHttpRequest request, OSHttpResponse response, string prefix)
: base(request, response, prefix)
{
}
}
#endregion Appearance RequestData extension
}
}

View File

@@ -1,383 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Xml;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
public class RestAssetServices : IRest
{
private bool enabled = false;
private string qPrefix = "assets";
// A simple constructor is used to handle any once-only
// initialization of working classes.
public RestAssetServices()
{
Rest.Log.InfoFormat("{0} Asset services initializing", MsgId);
Rest.Log.InfoFormat("{0} Using REST Implementation Version {1}", MsgId, Rest.Version);
// If the handler specifies a relative path for its domain
// then we must add the standard absolute prefix, e.g. /admin
if (!qPrefix.StartsWith(Rest.UrlPathSeparator))
{
Rest.Log.InfoFormat("{0} Prefixing domain name ({1})", MsgId, qPrefix);
qPrefix = String.Format("{0}{1}{2}", Rest.Prefix, Rest.UrlPathSeparator, qPrefix);
Rest.Log.InfoFormat("{0} Fully qualified domain name is <{1}>", MsgId, qPrefix);
}
// Register interface using the fully-qualified prefix
Rest.Plugin.AddPathHandler(DoAsset, qPrefix, Allocate);
// Activate if all went OK
enabled = true;
Rest.Log.InfoFormat("{0} Asset services initialization complete", MsgId);
}
// Post-construction, pre-enabled initialization opportunity
// Not currently exploited.
public void Initialize()
{
}
// Called by the plug-in to halt REST processing. Local processing is
// disabled, and control blocks until all current processing has
// completed. No new processing will be started
public void Close()
{
enabled = false;
Rest.Log.InfoFormat("{0} Asset services ({1}) closing down", MsgId, qPrefix);
}
// Properties
internal string MsgId
{
get { return Rest.MsgId; }
}
#region Interface
private RequestData Allocate(OSHttpRequest request, OSHttpResponse response, string prefix)
{
return (RequestData) new AssetRequestData(request, response, prefix);
}
// Asset Handler
private void DoAsset(RequestData rparm)
{
if (!enabled) return;
AssetRequestData rdata = (AssetRequestData) rparm;
Rest.Log.DebugFormat("{0} REST Asset handler ({1}) ENTRY", MsgId, qPrefix);
// Now that we know this is a serious attempt to
// access inventory data, we should find out who
// is asking, and make sure they are authorized
// to do so. We need to validate the caller's
// identity before revealing anything about the
// status quo. Authenticate throws an exception
// via Fail if no identity information is present.
//
// With the present HTTP server we can't use the
// builtin authentication mechanisms because they
// would be enforced for all in-bound requests.
// Instead we look at the headers ourselves and
// handle authentication directly.
try
{
if (!rdata.IsAuthenticated)
{
rdata.Fail(Rest.HttpStatusCodeNotAuthorized, String.Format("user \"{0}\" could not be authenticated"));
}
}
catch (RestException e)
{
if (e.statusCode == Rest.HttpStatusCodeNotAuthorized)
{
Rest.Log.WarnFormat("{0} User not authenticated", MsgId);
Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId,
rdata.request.Headers.Get("Authorization"));
}
else
{
Rest.Log.ErrorFormat("{0} User authentication failed", MsgId);
Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId,
rdata.request.Headers.Get("Authorization"));
}
throw (e);
}
// Remove the prefix and what's left are the parameters. If we don't have
// the parameters we need, fail the request. Parameters do NOT include
// any supplied query values.
if (rdata.Parameters.Length > 0)
{
switch (rdata.method)
{
case "get" :
DoGet(rdata);
break;
case "put" :
DoPut(rdata);
break;
case "post" :
DoPost(rdata);
break;
case "delete" :
default :
Rest.Log.WarnFormat("{0} Asset: Method not supported: {1}",
MsgId, rdata.method);
rdata.Fail(Rest.HttpStatusCodeBadRequest,String.Format("method <{0}> not supported", rdata.method));
break;
}
}
else
{
Rest.Log.WarnFormat("{0} Asset: No agent information provided", MsgId);
rdata.Fail(Rest.HttpStatusCodeBadRequest, "no agent information provided");
}
Rest.Log.DebugFormat("{0} REST Asset handler EXIT", MsgId);
}
#endregion Interface
/// <summary>
/// The only parameter we recognize is a UUID.If an asset with this identification is
/// found, it's content, base-64 encoded, is returned to the client.
/// </summary>
private void DoGet(AssetRequestData rdata)
{
Rest.Log.DebugFormat("{0} REST Asset handler, Method = <{1}> ENTRY", MsgId, rdata.method);
if (rdata.Parameters.Length == 1)
{
UUID uuid = new UUID(rdata.Parameters[0]);
AssetBase asset = Rest.AssetServices.Get(uuid.ToString());
if (asset != null)
{
Rest.Log.DebugFormat("{0} Asset located <{1}>", MsgId, rdata.Parameters[0]);
rdata.initXmlWriter();
rdata.writer.WriteStartElement(String.Empty,"Asset",String.Empty);
rdata.writer.WriteAttributeString("id", asset.ID);
rdata.writer.WriteAttributeString("name", asset.Name);
rdata.writer.WriteAttributeString("desc", asset.Description);
rdata.writer.WriteAttributeString("type", asset.Type.ToString());
rdata.writer.WriteAttributeString("local", asset.Local.ToString());
rdata.writer.WriteAttributeString("temporary", asset.Temporary.ToString());
rdata.writer.WriteBase64(asset.Data,0,asset.Data.Length);
rdata.writer.WriteFullEndElement();
}
else
{
Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeNotFound, "invalid parameters");
}
}
rdata.Complete();
rdata.Respond(String.Format("Asset <{0}> : Normal completion", rdata.method));
}
/// <summary>
/// UPDATE existing item, if it exists. URI identifies the item in question.
/// The only parameter we recognize is a UUID. The enclosed asset data (base-64 encoded)
/// is decoded and stored in the database, identified by the supplied UUID.
/// </summary>
private void DoPut(AssetRequestData rdata)
{
bool modified = false;
bool created = false;
AssetBase asset = null;
Rest.Log.DebugFormat("{0} REST Asset handler, Method = <{1}> ENTRY", MsgId, rdata.method);
if (rdata.Parameters.Length == 1)
{
rdata.initXmlReader();
XmlReader xml = rdata.reader;
if (!xml.ReadToFollowing("Asset"))
{
Rest.Log.DebugFormat("{0} Invalid request data: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeBadRequest,"invalid request data");
}
UUID uuid = new UUID(rdata.Parameters[0]);
asset = Rest.AssetServices.Get(uuid.ToString());
modified = (asset != null);
created = !modified;
asset = new AssetBase(uuid, xml.GetAttribute("name"), SByte.Parse(xml.GetAttribute("type")), UUID.Zero.ToString());
asset.Description = xml.GetAttribute("desc");
asset.Local = Int32.Parse(xml.GetAttribute("local")) != 0;
asset.Temporary = Int32.Parse(xml.GetAttribute("temporary")) != 0;
asset.Data = Convert.FromBase64String(xml.ReadElementContentAsString("Asset", ""));
if (asset.ID != rdata.Parameters[0])
{
Rest.Log.WarnFormat("{0} URI and payload disagree on UUID U:{1} vs P:{2}",
MsgId, rdata.Parameters[0], asset.ID);
}
Rest.AssetServices.Store(asset);
}
else
{
Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeNotFound, "invalid parameters");
}
if (created)
{
rdata.appendStatus(String.Format("<p> Created asset {0}, UUID {1} <p>", asset.Name, asset.FullID));
rdata.Complete(Rest.HttpStatusCodeCreated);
}
else
{
if (modified)
{
rdata.appendStatus(String.Format("<p> Modified asset {0}, UUID {1} <p>", asset.Name, asset.FullID));
rdata.Complete(Rest.HttpStatusCodeOK);
}
else
{
rdata.Complete(Rest.HttpStatusCodeNoContent);
}
}
rdata.Respond(String.Format("Asset {0} : Normal completion", rdata.method));
}
/// <summary>
/// CREATE new item, replace if it exists. URI identifies the context for the item in question.
/// No parameters are required for POST, just thepayload.
/// </summary>
private void DoPost(AssetRequestData rdata)
{
bool modified = false;
bool created = false;
Rest.Log.DebugFormat("{0} REST Asset handler, Method = <{1}> ENTRY", MsgId, rdata.method);
if (rdata.Parameters.Length != 0)
{
Rest.Log.WarnFormat("{0} Parameters ignored <{1}>", MsgId, rdata.path);
Rest.Log.InfoFormat("{0} POST of an asset has no parameters", MsgId, rdata.path);
}
rdata.initXmlReader();
XmlReader xml = rdata.reader;
if (!xml.ReadToFollowing("Asset"))
{
Rest.Log.DebugFormat("{0} Invalid request data: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeBadRequest,"invalid request data");
}
UUID uuid = new UUID(xml.GetAttribute("id"));
AssetBase asset = Rest.AssetServices.Get(uuid.ToString());
modified = (asset != null);
created = !modified;
asset = new AssetBase(uuid, xml.GetAttribute("name"), SByte.Parse(xml.GetAttribute("type")), UUID.Zero.ToString());
asset.Description = xml.GetAttribute("desc");
asset.Local = Int32.Parse(xml.GetAttribute("local")) != 0;
asset.Temporary = Int32.Parse(xml.GetAttribute("temporary")) != 0;
asset.Data = Convert.FromBase64String(xml.ReadElementContentAsString("Asset", ""));
Rest.AssetServices.Store(asset);
if (created)
{
rdata.appendStatus(String.Format("<p> Created asset {0}, UUID {1} <p>", asset.Name, asset.FullID));
rdata.Complete(Rest.HttpStatusCodeCreated);
}
else
{
if (modified)
{
rdata.appendStatus(String.Format("<p> Modified asset {0}, UUID {1} <p>", asset.Name, asset.FullID));
rdata.Complete(Rest.HttpStatusCodeOK);
}
else
{
rdata.Complete(Rest.HttpStatusCodeNoContent);
}
}
rdata.Respond(String.Format("Asset {0} : Normal completion", rdata.method));
}
/// <summary>
/// Asset processing has no special data area requirements.
/// </summary>
internal class AssetRequestData : RequestData
{
internal AssetRequestData(OSHttpRequest request, OSHttpResponse response, string prefix)
: base(request, response, prefix)
{
}
}
}
}

View File

@@ -1,448 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Xml;
using System.IO;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
public class RestFileServices : IRest
{
private bool enabled = false;
private string qPrefix = "files";
// A simple constructor is used to handle any once-only
// initialization of working classes.
public RestFileServices()
{
Rest.Log.InfoFormat("{0} File services initializing", MsgId);
Rest.Log.InfoFormat("{0} Using REST Implementation Version {1}", MsgId, Rest.Version);
// If the handler specifies a relative path for its domain
// then we must add the standard absolute prefix, e.g. /admin
if (!qPrefix.StartsWith(Rest.UrlPathSeparator))
{
Rest.Log.InfoFormat("{0} Prefixing domain name ({1})", MsgId, qPrefix);
qPrefix = String.Format("{0}{1}{2}", Rest.Prefix, Rest.UrlPathSeparator, qPrefix);
Rest.Log.InfoFormat("{0} Fully qualified domain name is <{1}>", MsgId, qPrefix);
}
// Register interface using the fully-qualified prefix
Rest.Plugin.AddPathHandler(DoFile, qPrefix, Allocate);
// Activate if all went OK
enabled = true;
Rest.Log.InfoFormat("{0} File services initialization complete", MsgId);
}
// Post-construction, pre-enabled initialization opportunity
// Not currently exploited.
public void Initialize()
{
}
// Called by the plug-in to halt REST processing. Local processing is
// disabled, and control blocks until all current processing has
// completed. No new processing will be started
public void Close()
{
enabled = false;
Rest.Log.InfoFormat("{0} File services ({1}) closing down", MsgId, qPrefix);
}
// Properties
internal string MsgId
{
get { return Rest.MsgId; }
}
#region Interface
private RequestData Allocate(OSHttpRequest request, OSHttpResponse response, string prefix)
{
return (RequestData) new FileRequestData(request, response, prefix);
}
// Asset Handler
private void DoFile(RequestData rparm)
{
if (!enabled) return;
FileRequestData rdata = (FileRequestData) rparm;
Rest.Log.DebugFormat("{0} REST File handler ({1}) ENTRY", MsgId, qPrefix);
// Now that we know this is a serious attempt to
// access file data, we should find out who
// is asking, and make sure they are authorized
// to do so. We need to validate the caller's
// identity before revealing anything about the
// status quo. Authenticate throws an exception
// via Fail if no identity information is present.
//
// With the present HTTP server we can't use the
// builtin authentication mechanisms because they
// would be enforced for all in-bound requests.
// Instead we look at the headers ourselves and
// handle authentication directly.
try
{
if (!rdata.IsAuthenticated)
{
rdata.Fail(Rest.HttpStatusCodeNotAuthorized, String.Format("user \"{0}\" could not be authenticated"));
}
}
catch (RestException e)
{
if (e.statusCode == Rest.HttpStatusCodeNotAuthorized)
{
Rest.Log.WarnFormat("{0} User not authenticated", MsgId);
Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId,
rdata.request.Headers.Get("Authorization"));
}
else
{
Rest.Log.ErrorFormat("{0} User authentication failed", MsgId);
Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId,
rdata.request.Headers.Get("Authorization"));
}
throw (e);
}
// Remove the prefix and what's left are the parameters. If we don't have
// the parameters we need, fail the request. Parameters do NOT include
// any supplied query values.
if (rdata.Parameters.Length > 0)
{
switch (rdata.method)
{
case "get" :
DoGet(rdata);
break;
case "put" :
DoPut(rdata);
break;
case "post" :
DoPost(rdata);
break;
case "delete" :
DoDelete(rdata);
break;
default :
Rest.Log.WarnFormat("{0} File: Method not supported: {1}",
MsgId, rdata.method);
rdata.Fail(Rest.HttpStatusCodeBadRequest,String.Format("method <{0}> not supported", rdata.method));
break;
}
}
else
{
Rest.Log.WarnFormat("{0} File: No agent information provided", MsgId);
rdata.Fail(Rest.HttpStatusCodeBadRequest, "no agent information provided");
}
Rest.Log.DebugFormat("{0} REST File handler EXIT", MsgId);
}
#endregion Interface
/// <summary>
/// The only parameter we recognize is a UUID.If an asset with this identification is
/// found, it's content, base-64 encoded, is returned to the client.
/// </summary>
private void DoGet(FileRequestData rdata)
{
string path = String.Empty;
Rest.Log.DebugFormat("{0} REST File handler, Method = <{1}> ENTRY", MsgId, rdata.method);
if (rdata.Parameters.Length > 1)
{
try
{
path = rdata.path.Substring(rdata.Parameters[0].Length+qPrefix.Length+2);
if (File.Exists(path))
{
Rest.Log.DebugFormat("{0} File located <{1}>", MsgId, path);
Byte[] data = File.ReadAllBytes(path);
rdata.initXmlWriter();
rdata.writer.WriteStartElement(String.Empty,"File",String.Empty);
rdata.writer.WriteAttributeString("name", path);
rdata.writer.WriteBase64(data,0,data.Length);
rdata.writer.WriteFullEndElement();
}
else
{
Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, path);
rdata.Fail(Rest.HttpStatusCodeNotFound, String.Format("invalid parameters : {0}", path));
}
}
catch (Exception e)
{
Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, e.Message);
rdata.Fail(Rest.HttpStatusCodeNotFound, String.Format("invalid parameters : {0} {1}",
path, e.Message));
}
}
rdata.Complete();
rdata.Respond(String.Format("File <{0}> : Normal completion", rdata.method));
}
/// <summary>
/// UPDATE existing item, if it exists. URI identifies the item in question.
/// The only parameter we recognize is a UUID. The enclosed asset data (base-64 encoded)
/// is decoded and stored in the database, identified by the supplied UUID.
/// </summary>
private void DoPut(FileRequestData rdata)
{
bool modified = false;
bool created = false;
string path = String.Empty;
Rest.Log.DebugFormat("{0} REST File handler, Method = <{1}> ENTRY", MsgId, rdata.method);
if (rdata.Parameters.Length > 1)
{
try
{
path = rdata.path.Substring(rdata.Parameters[0].Length+qPrefix.Length+2);
bool maymod = File.Exists(path);
rdata.initXmlReader();
XmlReader xml = rdata.reader;
if (!xml.ReadToFollowing("File"))
{
Rest.Log.DebugFormat("{0} Invalid request data: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeBadRequest,"invalid request data");
}
Byte[] data = Convert.FromBase64String(xml.ReadElementContentAsString("File", ""));
File.WriteAllBytes(path,data);
modified = maymod;
created = ! maymod;
}
catch (Exception e)
{
Rest.Log.DebugFormat("{0} Exception during file processing : {1}", MsgId,
e.Message);
}
}
else
{
Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeNotFound, "invalid parameters");
}
if (created)
{
rdata.appendStatus(String.Format("<p> Created file {0} <p>", path));
rdata.Complete(Rest.HttpStatusCodeCreated);
}
else
{
if (modified)
{
rdata.appendStatus(String.Format("<p> Modified file {0} <p>", path));
rdata.Complete(Rest.HttpStatusCodeOK);
}
else
{
rdata.Complete(Rest.HttpStatusCodeNoContent);
}
}
rdata.Respond(String.Format("File {0} : Normal completion", rdata.method));
}
/// <summary>
/// CREATE new item, replace if it exists. URI identifies the context for the item in question.
/// No parameters are required for POST, just thepayload.
/// </summary>
private void DoPost(FileRequestData rdata)
{
bool modified = false;
bool created = false;
string path = String.Empty;
Rest.Log.DebugFormat("{0} REST File handler, Method = <{1}> ENTRY", MsgId, rdata.method);
if (rdata.Parameters.Length > 1)
{
try
{
path = rdata.path.Substring(rdata.Parameters[0].Length+qPrefix.Length+2);
bool maymod = File.Exists(path);
rdata.initXmlReader();
XmlReader xml = rdata.reader;
if (!xml.ReadToFollowing("File"))
{
Rest.Log.DebugFormat("{0} Invalid request data: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeBadRequest,"invalid request data");
}
Byte[] data = Convert.FromBase64String(xml.ReadElementContentAsString("File", ""));
File.WriteAllBytes(path,data);
modified = maymod;
created = ! maymod;
}
catch (Exception e)
{
Rest.Log.DebugFormat("{0} Exception during file processing : {1}", MsgId,
e.Message);
}
}
else
{
Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeNotFound, "invalid parameters");
}
if (created)
{
rdata.appendStatus(String.Format("<p> Created file {0} <p>", path));
rdata.Complete(Rest.HttpStatusCodeCreated);
}
else
{
if (modified)
{
rdata.appendStatus(String.Format("<p> Modified file {0} <p>", path));
rdata.Complete(Rest.HttpStatusCodeOK);
}
else
{
rdata.Complete(Rest.HttpStatusCodeNoContent);
}
}
rdata.Respond(String.Format("File {0} : Normal completion", rdata.method));
}
/// <summary>
/// CREATE new item, replace if it exists. URI identifies the context for the item in question.
/// No parameters are required for POST, just thepayload.
/// </summary>
private void DoDelete(FileRequestData rdata)
{
bool modified = false;
bool created = false;
string path = String.Empty;
Rest.Log.DebugFormat("{0} REST File handler, Method = <{1}> ENTRY", MsgId, rdata.method);
if (rdata.Parameters.Length > 1)
{
try
{
path = rdata.path.Substring(rdata.Parameters[0].Length+qPrefix.Length+2);
if (File.Exists(path))
{
File.Delete(path);
}
}
catch (Exception e)
{
Rest.Log.DebugFormat("{0} Exception during file processing : {1}", MsgId,
e.Message);
rdata.Fail(Rest.HttpStatusCodeNotFound, String.Format("invalid parameters : {0} {1}",
path, e.Message));
}
}
else
{
Rest.Log.DebugFormat("{0} Invalid parameters: <{1}>", MsgId, rdata.path);
rdata.Fail(Rest.HttpStatusCodeNotFound, "invalid parameters");
}
if (created)
{
rdata.appendStatus(String.Format("<p> Created file {0} <p>", path));
rdata.Complete(Rest.HttpStatusCodeCreated);
}
else
{
if (modified)
{
rdata.appendStatus(String.Format("<p> Modified file {0} <p>", path));
rdata.Complete(Rest.HttpStatusCodeOK);
}
else
{
rdata.Complete(Rest.HttpStatusCodeNoContent);
}
}
rdata.Respond(String.Format("File {0} : Normal completion", rdata.method));
}
/// <summary>
/// File processing has no special data area requirements.
/// </summary>
internal class FileRequestData : RequestData
{
internal FileRequestData(OSHttpRequest request, OSHttpResponse response, string prefix)
: base(request, response, prefix)
{
}
}
}
}

View File

@@ -1,659 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
/// <remarks>
/// The class signature reveals the roles that RestHandler plays.
///
/// [1] It is a sub-class of RestPlugin. It inherits and extends
/// the functionality of this class, constraining it to the
/// specific needs of this REST implementation. This relates
/// to the plug-in mechanism supported by OpenSim, the specifics
/// of which are mostly hidden by RestPlugin.
/// [2] IRestHandler describes the interface that this class
/// exports to service implementations. This is the services
/// management interface.
/// [3] IHttpAgentHandler describes the interface that is exported
/// to the BaseHttpServer in support of this particular HTTP
/// processing model. This is the request interface of the
/// handler.
/// </remarks>
public class RestHandler : RestPlugin, IRestHandler, IHttpAgentHandler
{
// Handler tables: both stream and REST are supported. The path handlers and their
// respective allocators are stored in separate tables.
internal Dictionary<string,RestMethodHandler> pathHandlers = new Dictionary<string,RestMethodHandler>();
internal Dictionary<string,RestMethodAllocator> pathAllocators = new Dictionary<string,RestMethodAllocator>();
internal Dictionary<string,RestStreamHandler> streamHandlers = new Dictionary<string,RestStreamHandler>();
#region local static state
private static bool handlersLoaded = false;
private static List<Type> classes = new List<Type>();
private static List<IRest> handlers = new List<IRest>();
private static Type[] parms = new Type[0];
private static Object[] args = new Object[0];
/// <summary>
/// This static initializer scans the ASSEMBLY for classes that
/// export the IRest interface and builds a list of them. These
/// are later activated by the handler. To add a new handler it
/// is only necessary to create a new services class that implements
/// the IRest interface, and recompile the handler. This gives
/// all of the build-time flexibility of a modular approach
/// while not introducing yet-another module loader. Note that
/// multiple assembles can still be built, each with its own set
/// of handlers. Examples of services classes are RestInventoryServices
/// and RestSkeleton.
/// </summary>
static RestHandler()
{
Module[] mods = Assembly.GetExecutingAssembly().GetModules();
foreach (Module m in mods)
{
Type[] types = m.GetTypes();
foreach (Type t in types)
{
try
{
if (t.GetInterface("IRest") != null)
{
classes.Add(t);
}
}
catch (Exception)
{
Rest.Log.WarnFormat("[STATIC-HANDLER]: #0 Error scanning {1}", t);
Rest.Log.InfoFormat("[STATIC-HANDLER]: #0 {1} is not included", t);
}
}
}
}
#endregion local static state
#region local instance state
/// <summary>
/// This routine loads all of the handlers discovered during
/// instance initialization.
/// A table of all loaded and successfully constructed handlers
/// is built, and this table is then used by the constructor to
/// initialize each of the handlers in turn.
/// NOTE: The loading process does not automatically imply that
/// the handler has registered any kind of an interface, that
/// may be (optionally) done by the handler either during
/// construction, or during initialization.
///
/// I was not able to make this code work within a constructor
/// so it is isolated within this method.
/// </summary>
private void LoadHandlers()
{
lock (handlers)
{
if (!handlersLoaded)
{
ConstructorInfo ci;
Object ht;
foreach (Type t in classes)
{
try
{
ci = t.GetConstructor(parms);
ht = ci.Invoke(args);
handlers.Add((IRest)ht);
}
catch (Exception e)
{
Rest.Log.WarnFormat("{0} Unable to load {1} : {2}", MsgId, t, e.Message);
}
}
handlersLoaded = true;
}
}
}
#endregion local instance state
#region overriding properties
// These properties override definitions
// in the base class.
// Name is used to differentiate the message header.
public override string Name
{
get { return "HANDLER"; }
}
// Used to partition the .ini configuration space.
public override string ConfigName
{
get { return "RestHandler"; }
}
// We have to rename these because we want
// to be able to share the values with other
// classes in our assembly and the base
// names are protected.
public string MsgId
{
get { return base.MsgID; }
}
public string RequestId
{
get { return base.RequestID; }
}
#endregion overriding properties
#region overriding methods
/// <summary>
/// This method is called by OpenSimMain immediately after loading the
/// plugin and after basic server setup, but before running any server commands.
/// </summary>
/// <remarks>
/// Note that entries MUST be added to the active configuration files before
/// the plugin can be enabled.
/// </remarks>
public override void Initialise(OpenSimBase openSim)
{
try
{
// This plugin will only be enabled if the broader
// REST plugin mechanism is enabled.
//Rest.Log.InfoFormat("{0} Plugin is initializing", MsgId);
base.Initialise(openSim);
// IsEnabled is implemented by the base class and
// reflects an overall RestPlugin status
if (!IsEnabled)
{
//Rest.Log.WarnFormat("{0} Plugins are disabled", MsgId);
return;
}
Rest.Log.InfoFormat("{0} Rest <{1}> plugin will be enabled", MsgId, Name);
Rest.Log.InfoFormat("{0} Configuration parameters read from <{1}>", MsgId, ConfigName);
// These are stored in static variables to make
// them easy to reach from anywhere in the assembly.
Rest.main = openSim;
if (Rest.main == null)
throw new Exception("OpenSim base pointer is null");
Rest.Plugin = this;
Rest.Config = Config;
Rest.Prefix = Prefix;
Rest.GodKey = GodKey;
Rest.Authenticate = Rest.Config.GetBoolean("authenticate", Rest.Authenticate);
Rest.Scheme = Rest.Config.GetString("auth-scheme", Rest.Scheme);
Rest.Secure = Rest.Config.GetBoolean("secured", Rest.Secure);
Rest.ExtendedEscape = Rest.Config.GetBoolean("extended-escape", Rest.ExtendedEscape);
Rest.Realm = Rest.Config.GetString("realm", Rest.Realm);
Rest.DumpAsset = Rest.Config.GetBoolean("dump-asset", Rest.DumpAsset);
Rest.Fill = Rest.Config.GetBoolean("path-fill", Rest.Fill);
Rest.DumpLineSize = Rest.Config.GetInt("dump-line-size", Rest.DumpLineSize);
Rest.FlushEnabled = Rest.Config.GetBoolean("flush-on-error", Rest.FlushEnabled);
// Note: Odd spacing is required in the following strings
Rest.Log.InfoFormat("{0} Authentication is {1}required", MsgId,
(Rest.Authenticate ? "" : "not "));
Rest.Log.InfoFormat("{0} Security is {1}enabled", MsgId,
(Rest.Secure ? "" : "not "));
Rest.Log.InfoFormat("{0} Extended URI escape processing is {1}enabled", MsgId,
(Rest.ExtendedEscape ? "" : "not "));
Rest.Log.InfoFormat("{0} Dumping of asset data is {1}enabled", MsgId,
(Rest.DumpAsset ? "" : "not "));
// The supplied prefix MUST be absolute
if (Rest.Prefix.Substring(0,1) != Rest.UrlPathSeparator)
{
Rest.Log.WarnFormat("{0} Prefix <{1}> is not absolute and must be", MsgId, Rest.Prefix);
Rest.Log.InfoFormat("{0} Prefix changed to </{1}>", MsgId, Rest.Prefix);
Rest.Prefix = String.Format("{0}{1}", Rest.UrlPathSeparator, Rest.Prefix);
}
// If data dumping is requested, report on the chosen line
// length.
if (Rest.DumpAsset)
{
Rest.Log.InfoFormat("{0} Dump {1} bytes per line", MsgId, Rest.DumpLineSize);
}
// Load all of the handlers present in the
// assembly
// In principle, as we're an application plug-in,
// most of what needs to be done could be done using
// static resources, however the Open Sim plug-in
// model makes this an instance, so that's what we
// need to be.
// There is only one Communications manager per
// server, and by inference, only one each of the
// user, asset, and inventory servers. So we can cache
// those using a static initializer.
// We move all of this processing off to another
// services class to minimize overlap between function
// and infrastructure.
LoadHandlers();
// The intention of a post construction initializer
// is to allow for setup that is dependent upon other
// activities outside of the agency.
foreach (IRest handler in handlers)
{
try
{
handler.Initialize();
}
catch (Exception e)
{
Rest.Log.ErrorFormat("{0} initialization error: {1}", MsgId, e.Message);
}
}
// Now that everything is setup we can proceed to
// add THIS agent to the HTTP server's handler list
if (!AddAgentHandler(Rest.Name,this))
{
Rest.Log.ErrorFormat("{0} Unable to activate handler interface", MsgId);
foreach (IRest handler in handlers)
{
handler.Close();
}
}
}
catch (Exception e)
{
Rest.Log.ErrorFormat("{0} Plugin initialization has failed: {1}", MsgId, e.Message);
}
}
/// <summary>
/// In the interests of efficiency, and because we cannot determine whether
/// or not this instance will actually be harvested, we clobber the only
/// anchoring reference to the working state for this plug-in. What the
/// call to close does is irrelevant to this class beyond knowing that it
/// can nullify the reference when it returns.
/// To make sure everything is copacetic we make sure the primary interface
/// is disabled by deleting the handler from the HTTP server tables.
/// </summary>
public override void Close()
{
Rest.Log.InfoFormat("{0} Plugin is terminating", MsgId);
try
{
RemoveAgentHandler(Rest.Name, this);
}
catch (KeyNotFoundException){}
foreach (IRest handler in handlers)
{
handler.Close();
}
}
#endregion overriding methods
#region interface methods
/// <summary>
/// This method is called by the HTTP server to match an incoming
/// request. It scans all of the strings registered by the
/// underlying handlers and looks for the best match. It returns
/// true if a match is found.
/// The matching process could be made arbitrarily complex.
/// Note: The match is case-insensitive.
/// </summary>
public bool Match(OSHttpRequest request, OSHttpResponse response)
{
string path = request.RawUrl.ToLower();
// Rest.Log.DebugFormat("{0} Match ENTRY", MsgId);
try
{
foreach (string key in pathHandlers.Keys)
{
// Rest.Log.DebugFormat("{0} Match testing {1} against agent prefix <{2}>", MsgId, path, key);
// Note that Match will not necessarily find the handler that will
// actually be used - it does no test for the "closest" fit. It
// simply reflects that at least one possible handler exists.
if (path.StartsWith(key))
{
// Rest.Log.DebugFormat("{0} Matched prefix <{1}>", MsgId, key);
// This apparently odd evaluation is needed to prevent a match
// on anything other than a URI token boundary. Otherwise we
// may match on URL's that were not intended for this handler.
return (path.Length == key.Length ||
path.Substring(key.Length, 1) == Rest.UrlPathSeparator);
}
}
path = String.Format("{0}{1}{2}", request.HttpMethod, Rest.UrlMethodSeparator, path);
foreach (string key in streamHandlers.Keys)
{
// Rest.Log.DebugFormat("{0} Match testing {1} against stream prefix <{2}>", MsgId, path, key);
// Note that Match will not necessarily find the handler that will
// actually be used - it does no test for the "closest" fit. It
// simply reflects that at least one possible handler exists.
if (path.StartsWith(key))
{
// Rest.Log.DebugFormat("{0} Matched prefix <{1}>", MsgId, key);
// This apparently odd evaluation is needed to prevent a match
// on anything other than a URI token boundary. Otherwise we
// may match on URL's that were not intended for this handler.
return (path.Length == key.Length ||
path.Substring(key.Length, 1) == Rest.UrlPathSeparator);
}
}
}
catch (Exception e)
{
Rest.Log.ErrorFormat("{0} matching exception for path <{1}> : {2}", MsgId, path, e.Message);
}
return false;
}
/// <summary>
/// This is called by the HTTP server once the handler has indicated
/// that it is able to handle the request.
/// Preconditions:
/// [1] request != null and is a valid request object
/// [2] response != null and is a valid response object
/// Behavior is undefined if preconditions are not satisfied.
/// </summary>
public bool Handle(OSHttpRequest request, OSHttpResponse response)
{
bool handled;
base.MsgID = base.RequestID;
// Debug only
if (Rest.DEBUG)
{
Rest.Log.DebugFormat("{0} ENTRY", MsgId);
Rest.Log.DebugFormat("{0} Agent: {1}", MsgId, request.UserAgent);
Rest.Log.DebugFormat("{0} Method: {1}", MsgId, request.HttpMethod);
for (int i = 0; i < request.Headers.Count; i++)
{
Rest.Log.DebugFormat("{0} Header [{1}] : <{2}> = <{3}>",
MsgId, i, request.Headers.GetKey(i), request.Headers.Get(i));
}
Rest.Log.DebugFormat("{0} URI: {1}", MsgId, request.RawUrl);
}
// If a path handler worked we're done, otherwise try any
// available stream handlers too.
try
{
handled = (FindPathHandler(request, response) ||
FindStreamHandler(request, response));
}
catch (Exception e)
{
// A raw exception indicates that something we weren't expecting has
// happened. This should always reflect a shortcoming in the plugin,
// or a failure to satisfy the preconditions. It should not reflect
// an error in the request itself. Under such circumstances the state
// of the request cannot be determined and we are obliged to mark it
// as 'handled'.
Rest.Log.ErrorFormat("{0} Plugin error: {1}", MsgId, e.Message);
handled = true;
}
Rest.Log.DebugFormat("{0} EXIT", MsgId);
return handled;
}
#endregion interface methods
/// <summary>
/// If there is a stream handler registered that can handle the
/// request, then fine. If the request is not matched, do
/// nothing.
/// Note: The selection is case-insensitive
/// </summary>
private bool FindStreamHandler(OSHttpRequest request, OSHttpResponse response)
{
RequestData rdata = new RequestData(request, response, String.Empty);
string bestMatch = String.Empty;
string path = String.Format("{0}:{1}", rdata.method, rdata.path).ToLower();
Rest.Log.DebugFormat("{0} Checking for stream handler for <{1}>", MsgId, path);
if (!IsEnabled)
{
return false;
}
foreach (string pattern in streamHandlers.Keys)
{
if (path.StartsWith(pattern))
{
if (pattern.Length > bestMatch.Length)
{
bestMatch = pattern;
}
}
}
// Handle using the best match available
if (bestMatch.Length > 0)
{
Rest.Log.DebugFormat("{0} Stream-based handler matched with <{1}>", MsgId, bestMatch);
RestStreamHandler handler = streamHandlers[bestMatch];
rdata.buffer = handler.Handle(rdata.path, rdata.request.InputStream, rdata.request, rdata.response);
rdata.AddHeader(rdata.response.ContentType,handler.ContentType);
rdata.Respond("FindStreamHandler Completion");
}
return rdata.handled;
}
/// <summary>
/// Add a stream handler for the designated HTTP method and path prefix.
/// If the handler is not enabled, the request is ignored. If the path
/// does not start with the REST prefix, it is added. If method-qualified
/// path has not already been registered, the method is added to the active
/// handler table.
/// </summary>
public void AddStreamHandler(string httpMethod, string path, RestMethod method)
{
if (!IsEnabled)
{
return;
}
if (!path.StartsWith(Rest.Prefix))
{
path = String.Format("{0}{1}", Rest.Prefix, path);
}
path = String.Format("{0}{1}{2}", httpMethod, Rest.UrlMethodSeparator, path);
// Conditionally add to the list
if (!streamHandlers.ContainsKey(path))
{
streamHandlers.Add(path, new RestStreamHandler(httpMethod, path, method));
Rest.Log.DebugFormat("{0} Added handler for {1}", MsgId, path);
}
else
{
Rest.Log.WarnFormat("{0} Ignoring duplicate handler for {1}", MsgId, path);
}
}
/// <summary>
/// Given the supplied request/response, if the handler is enabled, the inbound
/// information is used to match an entry in the active path handler tables, using
/// the method-qualified path information. If a match is found, then the handler is
/// invoked. The result is the boolean result of the handler, or false if no
/// handler was located. The boolean indicates whether or not the request has been
/// handled, not whether or not the request was successful - that information is in
/// the response.
/// Note: The selection process is case-insensitive
/// </summary>
internal bool FindPathHandler(OSHttpRequest request, OSHttpResponse response)
{
RequestData rdata = null;
string bestMatch = null;
if (!IsEnabled)
{
return false;
}
// Conditionally add to the list
Rest.Log.DebugFormat("{0} Checking for path handler for <{1}>", MsgId, request.RawUrl);
foreach (string pattern in pathHandlers.Keys)
{
if (request.RawUrl.ToLower().StartsWith(pattern))
{
if (String.IsNullOrEmpty(bestMatch) || pattern.Length > bestMatch.Length)
{
bestMatch = pattern;
}
}
}
if (!String.IsNullOrEmpty(bestMatch))
{
rdata = pathAllocators[bestMatch](request, response, bestMatch);
Rest.Log.DebugFormat("{0} Path based REST handler matched with <{1}>", MsgId, bestMatch);
try
{
pathHandlers[bestMatch](rdata);
}
// A plugin generated error indicates a request-related error
// that has been handled by the plugin.
catch (RestException r)
{
Rest.Log.WarnFormat("{0} Request failed: {1}", MsgId, r.Message);
}
}
return (rdata == null) ? false : rdata.handled;
}
/// <summary>
/// A method handler and a request allocator are stored using the designated
/// path as a key. If an entry already exists, it is replaced by the new one.
/// </summary>
public void AddPathHandler(RestMethodHandler mh, string path, RestMethodAllocator ra)
{
if (!IsEnabled)
{
return;
}
if (pathHandlers.ContainsKey(path))
{
Rest.Log.DebugFormat("{0} Replacing handler for <${1}>", MsgId, path);
pathHandlers.Remove(path);
}
if (pathAllocators.ContainsKey(path))
{
Rest.Log.DebugFormat("{0} Replacing allocator for <${1}>", MsgId, path);
pathAllocators.Remove(path);
}
Rest.Log.DebugFormat("{0} Adding path handler for {1}", MsgId, path);
pathHandlers.Add(path, mh);
pathAllocators.Add(path, ra);
}
}
}

View File

@@ -1,246 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
public class RestTestServices : IRest
{
private bool enabled = false;
private string qPrefix = "test";
// A simple constructor is used to handle any once-only
// initialization of working classes.
public RestTestServices()
{
Rest.Log.InfoFormat("{0} Test services initializing", MsgId);
Rest.Log.InfoFormat("{0} Using REST Implementation Version {1}", MsgId, Rest.Version);
// If a relative path was specified, make it absolute by adding
// the standard prefix, e.g. /admin
if (!qPrefix.StartsWith(Rest.UrlPathSeparator))
{
Rest.Log.InfoFormat("{0} Domain is relative, adding absolute prefix", MsgId);
qPrefix = String.Format("{0}{1}{2}", Rest.Prefix, Rest.UrlPathSeparator, qPrefix);
Rest.Log.InfoFormat("{0} Domain is now <{1}>", MsgId, qPrefix);
}
// Load test cases
loadTests();
foreach (ITest test in tests)
{
test.Initialize();
}
// Register interface
Rest.Plugin.AddPathHandler(DoTests,qPrefix,Allocate);
// Activate
enabled = true;
Rest.Log.InfoFormat("{0} Test services initialization complete", MsgId);
}
// Post-construction, pre-enabled initialization opportunity
// Not currently exploited.
public void Initialize()
{
}
// Called by the plug-in to halt REST processing. Local processing is
// disabled, and control blocks until all current processing has
// completed. No new processing will be started
public void Close()
{
enabled = false;
foreach (ITest test in tests)
{
test.Close();
}
Rest.Log.InfoFormat("{0} Test services closing down", MsgId);
}
// Properties
internal string MsgId
{
get { return Rest.MsgId; }
}
#region Interface
private RequestData Allocate(OSHttpRequest request, OSHttpResponse response, string prefix)
{
return new RequestData(request, response, prefix);
}
// Inventory Handler
private void DoTests(RequestData rdata)
{
if (!enabled)
return;
// Now that we know this is a serious attempt to
// access inventory data, we should find out who
// is asking, and make sure they are authorized
// to do so. We need to validate the caller's
// identity before revealing anything about the
// status quo. Authenticate throws an exception
// via Fail if no identity information is present.
//
// With the present HTTP server we can't use the
// builtin authentication mechanisms because they
// would be enforced for all in-bound requests.
// Instead we look at the headers ourselves and
// handle authentication directly.
try
{
if (!rdata.IsAuthenticated)
{
rdata.Fail(Rest.HttpStatusCodeNotAuthorized,
String.Format("user \"{0}\" could not be authenticated", rdata.userName));
}
}
catch (RestException e)
{
if (e.statusCode == Rest.HttpStatusCodeNotAuthorized)
{
Rest.Log.WarnFormat("{0} User not authenticated", MsgId);
Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, rdata.request.Headers.Get("Authorization"));
}
else
{
Rest.Log.ErrorFormat("{0} User authentication failed", MsgId);
Rest.Log.DebugFormat("{0} Authorization header: {1}", MsgId, rdata.request.Headers.Get("Authorization"));
}
throw (e);
}
// Check that a test was specified
if (rdata.Parameters.Length < 1)
{
Rest.Log.DebugFormat("{0} Insufficient parameters", MsgId);
rdata.Fail(Rest.HttpStatusCodeBadRequest, "not enough parameters");
}
// Select the test
foreach (ITest test in tests)
{
if (!rdata.handled)
test.Execute(rdata);
}
}
#endregion Interface
private static bool testsLoaded = false;
private static List<Type> classes = new List<Type>();
private static List<ITest> tests = new List<ITest>();
private static Type[] parms = new Type[0];
private static Object[] args = new Object[0];
static RestTestServices()
{
Module[] mods = Assembly.GetExecutingAssembly().GetModules();
foreach (Module m in mods)
{
Type[] types = m.GetTypes();
foreach (Type t in types)
{
try
{
if (t.GetInterface("ITest") != null)
{
classes.Add(t);
}
}
catch (Exception e)
{
Rest.Log.WarnFormat("[STATIC-TEST] Unable to include test {0} : {1}", t, e.Message);
}
}
}
}
/// <summary>
/// This routine loads all of the handlers discovered during
/// instance initialization. Each handler is responsible for
/// registering itself with this handler.
/// I was not able to make this code work in a constructor.
/// </summary>
private void loadTests()
{
lock (tests)
{
if (!testsLoaded)
{
ConstructorInfo ci;
Object ht;
foreach (Type t in classes)
{
try
{
if (t.GetInterface("ITest") != null)
{
ci = t.GetConstructor(parms);
ht = ci.Invoke(args);
tests.Add((ITest)ht);
Rest.Log.InfoFormat("{0} Test {1} added", MsgId, t);
}
}
catch (Exception e)
{
Rest.Log.WarnFormat("{0} Unable to load test {1} : {2}", MsgId, t, e.Message);
}
}
testsLoaded = true;
}
}
}
}
}

View File

@@ -1,46 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
/// <summary>
/// This interface represents the boundary between the general purpose
/// REST plugin handling, and the functionally specific handlers. The
/// handler knows only to initialzie and terminate all such handlers
/// that it finds.
/// </summary>
internal interface ITest
{
void Initialize();
void Execute(RequestData rdata);
void Close();
}
}

View File

@@ -1,204 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using OpenMetaverse;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests
{
public class Remote : ITest
{
private static readonly int PARM_TESTID = 0;
private static readonly int PARM_COMMAND = 1;
private static readonly int PARM_MOVE_AVATAR = 2;
private static readonly int PARM_MOVE_X = 3;
private static readonly int PARM_MOVE_Y = 4;
private static readonly int PARM_MOVE_Z = 5;
private bool enabled = false;
// No constructor code is required.
public Remote()
{
Rest.Log.InfoFormat("{0} Remote services constructor", MsgId);
}
// Post-construction, pre-enabled initialization opportunity
// Not currently exploited.
public void Initialize()
{
enabled = true;
Rest.Log.InfoFormat("{0} Remote services initialized", MsgId);
}
// Called by the plug-in to halt REST processing. Local processing is
// disabled, and control blocks until all current processing has
// completed. No new processing will be started
public void Close()
{
enabled = false;
Rest.Log.InfoFormat("{0} Remote services closing down", MsgId);
}
// Properties
internal string MsgId
{
get { return Rest.MsgId; }
}
// Remote Handler
// Key information of interest here is the Parameters array, each
// entry represents an element of the URI, with element zero being
// the
public void Execute(RequestData rdata)
{
if (!enabled) return;
// If we can't relate to what's there, leave it for others.
if (rdata.Parameters.Length == 0 || rdata.Parameters[PARM_TESTID] != "remote")
return;
Rest.Log.DebugFormat("{0} REST Remote handler ENTRY", MsgId);
// Remove the prefix and what's left are the parameters. If we don't have
// the parameters we need, fail the request. Parameters do NOT include
// any supplied query values.
if (rdata.Parameters.Length > 1)
{
switch (rdata.Parameters[PARM_COMMAND].ToLower())
{
case "move" :
DoMove(rdata);
break;
default :
DoHelp(rdata);
break;
}
}
else
{
DoHelp(rdata);
}
}
private void DoHelp(RequestData rdata)
{
rdata.body = Help;
rdata.Complete();
rdata.Respond("Help");
}
private void DoMove(RequestData rdata)
{
if (rdata.Parameters.Length < 6)
{
Rest.Log.WarnFormat("{0} Move: No movement information provided", MsgId);
rdata.Fail(Rest.HttpStatusCodeBadRequest, "no movement information provided");
}
else
{
string[] names = rdata.Parameters[PARM_MOVE_AVATAR].Split(Rest.CA_SPACE);
ScenePresence presence = null;
Scene scene = null;
if (names.Length != 2)
{
rdata.Fail(Rest.HttpStatusCodeBadRequest,
String.Format("invalid avatar name: <{0}>",rdata.Parameters[PARM_MOVE_AVATAR]));
}
Rest.Log.WarnFormat("{0} '{1}' command received for {2} {3}",
MsgId, rdata.Parameters[0], names[0], names[1]);
// The first parameter should be an avatar name, look for the
// avatar in the known regions first.
Rest.main.SceneManager.ForEachScene(delegate(Scene s)
{
s.ForEachRootScenePresence(delegate(ScenePresence sp)
{
if (sp.Firstname == names[0] && sp.Lastname == names[1])
{
scene = s;
presence = sp;
}
});
});
if (presence != null)
{
Rest.Log.DebugFormat("{0} Move : Avatar {1} located in region {2}",
MsgId, rdata.Parameters[PARM_MOVE_AVATAR], scene.RegionInfo.RegionName);
try
{
float x = Convert.ToSingle(rdata.Parameters[PARM_MOVE_X]);
float y = Convert.ToSingle(rdata.Parameters[PARM_MOVE_Y]);
float z = Convert.ToSingle(rdata.Parameters[PARM_MOVE_Z]);
Vector3 vector = new Vector3(x, y, z);
presence.MoveToTarget(vector, false, false);
}
catch (Exception e)
{
rdata.Fail(Rest.HttpStatusCodeBadRequest,
String.Format("invalid parameters: {0}", e.Message));
}
}
else
{
rdata.Fail(Rest.HttpStatusCodeBadRequest,
String.Format("avatar {0} not present", rdata.Parameters[PARM_MOVE_AVATAR]));
}
rdata.Complete();
rdata.Respond("OK");
}
}
private static readonly string Help =
"<html>"
+ "<head><title>Remote Command Usage</title></head>"
+ "<body>"
+ "<p>Supported commands are:</p>"
+ "<dl>"
+ "<dt>move/avatar-name/x/y/z</dt>"
+ "<dd>moves the specified avatar to another location</dd>"
+ "</dl>"
+ "</body>"
+ "</html>"
;
}
}

View File

@@ -1,228 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.IO;
using System.Xml.Serialization;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.ApplicationPlugins.Rest.Regions
{
public partial class RestRegionPlugin : RestPlugin
{
#region GET methods
public string GetHandler(string request, string path, string param,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// foreach (string h in httpRequest.Headers.AllKeys)
// foreach (string v in httpRequest.Headers.GetValues(h))
// m_log.DebugFormat("{0} IsGod: {1} -> {2}", MsgID, h, v);
MsgID = RequestID;
m_log.DebugFormat("{0} GET path {1} param {2}", MsgID, path, param);
try
{
// param empty: regions list
if (String.IsNullOrEmpty(param)) return GetHandlerRegions(httpResponse);
// param not empty: specific region
return GetHandlerRegion(httpResponse, param);
}
catch (Exception e)
{
return Failure(httpResponse, OSHttpStatusCode.ServerErrorInternalError, "GET", e);
}
}
public string GetHandlerRegions(IOSHttpResponse httpResponse)
{
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
rxw.WriteStartElement(String.Empty, "regions", String.Empty);
foreach (Scene s in App.SceneManager.Scenes)
{
rxw.WriteStartElement(String.Empty, "uuid", String.Empty);
rxw.WriteString(s.RegionInfo.RegionID.ToString());
rxw.WriteEndElement();
}
rxw.WriteEndElement();
return rxw.ToString();
}
protected string ShortRegionInfo(string key, string value)
{
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
if (String.IsNullOrEmpty(value) ||
String.IsNullOrEmpty(key)) return null;
rxw.WriteStartElement(String.Empty, "region", String.Empty);
rxw.WriteStartElement(String.Empty, key, String.Empty);
rxw.WriteString(value);
rxw.WriteEndDocument();
return rxw.ToString();
}
public string GetHandlerRegion(IOSHttpResponse httpResponse, string param)
{
// be resilient and don't get confused by a terminating '/'
param = param.TrimEnd(new char[]{'/'});
string[] comps = param.Split('/');
UUID regionID = (UUID)comps[0];
m_log.DebugFormat("{0} GET region UUID {1}", MsgID, regionID.ToString());
if (UUID.Zero == regionID) throw new Exception("missing region ID");
Scene scene = null;
App.SceneManager.TryGetScene(regionID, out scene);
if (null == scene) return Failure(httpResponse, OSHttpStatusCode.ClientErrorNotFound,
"GET", "cannot find region {0}", regionID.ToString());
RegionDetails details = new RegionDetails(scene.RegionInfo);
// m_log.DebugFormat("{0} GET comps {1}", MsgID, comps.Length);
// for (int i = 0; i < comps.Length; i++) m_log.DebugFormat("{0} GET comps[{1}] >{2}<", MsgID, i, comps[i]);
if (1 == comps.Length)
{
// complete region details requested
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
XmlSerializer xs = new XmlSerializer(typeof(RegionDetails));
xs.Serialize(rxw, details, _xmlNs);
return rxw.ToString();
}
if (2 == comps.Length)
{
string resp = ShortRegionInfo(comps[1], details[comps[1]]);
if (null != resp) return resp;
// m_log.DebugFormat("{0} GET comps advanced: >{1}<", MsgID, comps[1]);
// check for {terrain,stats,prims}
switch (comps[1].ToLower())
{
case "terrain":
return RegionTerrain(httpResponse, scene);
case "stats":
return RegionStats(httpResponse, scene);
case "prims":
return RegionPrims(httpResponse, scene, Vector3.Zero, Vector3.Zero);
}
}
if (3 == comps.Length)
{
switch (comps[1].ToLower())
{
case "prims":
string[] subregion = comps[2].Split(',');
if (subregion.Length == 6)
{
Vector3 min, max;
try
{
min = new Vector3((float)Double.Parse(subregion[0], Culture.NumberFormatInfo), (float)Double.Parse(subregion[1], Culture.NumberFormatInfo), (float)Double.Parse(subregion[2], Culture.NumberFormatInfo));
max = new Vector3((float)Double.Parse(subregion[3], Culture.NumberFormatInfo), (float)Double.Parse(subregion[4], Culture.NumberFormatInfo), (float)Double.Parse(subregion[5], Culture.NumberFormatInfo));
}
catch (Exception)
{
return Failure(httpResponse, OSHttpStatusCode.ClientErrorBadRequest,
"GET", "invalid subregion parameter");
}
return RegionPrims(httpResponse, scene, min, max);
}
else
{
return Failure(httpResponse, OSHttpStatusCode.ClientErrorBadRequest,
"GET", "invalid subregion parameter");
}
}
}
return Failure(httpResponse, OSHttpStatusCode.ClientErrorBadRequest,
"GET", "too many parameters {0}", param);
}
#endregion GET methods
protected string RegionTerrain(IOSHttpResponse httpResponse, Scene scene)
{
httpResponse.SendChunked = true;
httpResponse.ContentType = "text/xml";
return scene.Heightmap.SaveToXmlString();
//return Failure(httpResponse, OSHttpStatusCode.ServerErrorNotImplemented,
// "GET", "terrain not implemented");
}
protected string RegionStats(IOSHttpResponse httpResponse, Scene scene)
{
int users = scene.GetRootAgentCount();
int objects = scene.Entities.Count - users;
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
rxw.WriteStartElement(String.Empty, "region", String.Empty);
rxw.WriteStartElement(String.Empty, "stats", String.Empty);
rxw.WriteStartElement(String.Empty, "users", String.Empty);
rxw.WriteString(users.ToString());
rxw.WriteEndElement();
rxw.WriteStartElement(String.Empty, "objects", String.Empty);
rxw.WriteString(objects.ToString());
rxw.WriteEndElement();
rxw.WriteEndDocument();
return rxw.ToString();
}
protected string RegionPrims(IOSHttpResponse httpResponse, Scene scene, Vector3 min, Vector3 max)
{
httpResponse.SendChunked = true;
httpResponse.ContentType = "text/xml";
IRegionSerialiserModule serialiser = scene.RequestModuleInterface<IRegionSerialiserModule>();
if (serialiser != null)
serialiser.SavePrimsToXml2(scene, new StreamWriter(httpResponse.OutputStream), min, max);
return "";
}
}
}

View File

@@ -1,136 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.IO;
using System.Xml.Serialization;
using OpenMetaverse;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.ApplicationPlugins.Rest.Regions
{
public partial class RestRegionPlugin : RestPlugin
{
#region GET methods
public string GetRegionInfoHandler(string request, string path, string param,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// foreach (string h in httpRequest.Headers.AllKeys)
// foreach (string v in httpRequest.Headers.GetValues(h))
// m_log.DebugFormat("{0} IsGod: {1} -> {2}", MsgID, h, v);
MsgID = RequestID;
m_log.DebugFormat("{0} GET path {1} param {2}", MsgID, path, param);
try
{
// param empty: regions list
// if (String.IsNullOrEmpty(param))
return GetRegionInfoHandlerRegions(httpResponse);
// // param not empty: specific region
// return GetRegionInfoHandlerRegion(httpResponse, param);
}
catch (Exception e)
{
return Failure(httpResponse, OSHttpStatusCode.ServerErrorInternalError, "GET", e);
}
}
public string GetRegionInfoHandlerRegions(IOSHttpResponse httpResponse)
{
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
// regions info
rxw.WriteStartElement(String.Empty, "regions", String.Empty);
{
// regions info: number of regions
rxw.WriteStartAttribute(String.Empty, "number", String.Empty);
rxw.WriteValue(App.SceneManager.Scenes.Count);
rxw.WriteEndAttribute();
// regions info: max number of regions
rxw.WriteStartAttribute(String.Empty, "max", String.Empty);
if (App.ConfigSource.Source.Configs["RemoteAdmin"] != null)
{
rxw.WriteValue(App.ConfigSource.Source.Configs["RemoteAdmin"].GetInt("region_limit", -1));
}
else
{
rxw.WriteValue(-1);
}
rxw.WriteEndAttribute();
// regions info: region
foreach (Scene s in App.SceneManager.Scenes)
{
rxw.WriteStartElement(String.Empty, "region", String.Empty);
rxw.WriteStartAttribute(String.Empty, "uuid", String.Empty);
rxw.WriteString(s.RegionInfo.RegionID.ToString());
rxw.WriteEndAttribute();
rxw.WriteStartAttribute(String.Empty, "name", String.Empty);
rxw.WriteString(s.RegionInfo.RegionName);
rxw.WriteEndAttribute();
rxw.WriteStartAttribute(String.Empty, "x", String.Empty);
rxw.WriteValue(s.RegionInfo.RegionLocX);
rxw.WriteEndAttribute();
rxw.WriteStartAttribute(String.Empty, "y", String.Empty);
rxw.WriteValue(s.RegionInfo.RegionLocY);
rxw.WriteEndAttribute();
rxw.WriteStartAttribute(String.Empty, "external_hostname", String.Empty);
rxw.WriteString(s.RegionInfo.ExternalHostName);
rxw.WriteEndAttribute();
rxw.WriteStartAttribute(String.Empty, "ip", String.Empty);
rxw.WriteString(s.RegionInfo.InternalEndPoint.ToString());
rxw.WriteEndAttribute();
int users = s.GetRootAgentCount();
rxw.WriteStartAttribute(String.Empty, "avatars", String.Empty);
rxw.WriteValue(users);
rxw.WriteEndAttribute();
rxw.WriteStartAttribute(String.Empty, "objects", String.Empty);
rxw.WriteValue(s.Entities.Count - users);
rxw.WriteEndAttribute();
rxw.WriteEndElement();
}
}
return rxw.ToString();
}
#endregion GET methods
}
}

View File

@@ -1,122 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.IO;
using OpenMetaverse;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.ApplicationPlugins.Rest.Regions
{
public partial class RestRegionPlugin : RestPlugin
{
#region POST methods
public string PostHandler(string request, string path, string param,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// foreach (string h in httpRequest.Headers.AllKeys)
// foreach (string v in httpRequest.Headers.GetValues(h))
// m_log.DebugFormat("{0} IsGod: {1} -> {2}", MsgID, h, v);
MsgID = RequestID;
m_log.DebugFormat("{0} POST path {1} param {2}", MsgID, path, param);
try
{
// param empty: new region post
if (!IsGod(httpRequest))
// XXX: this needs to be turned into a FailureUnauthorized(...)
return Failure(httpResponse, OSHttpStatusCode.ClientErrorUnauthorized,
"GET", "you are not god");
if (String.IsNullOrEmpty(param)) return CreateRegion(httpRequest, httpResponse);
// Parse region ID and other parameters
param = param.TrimEnd(new char[] {'/'});
string[] comps = param.Split('/');
UUID regionID = (UUID) comps[0];
m_log.DebugFormat("{0} POST region UUID {1}", MsgID, regionID.ToString());
if (UUID.Zero == regionID) throw new Exception("missing region ID");
Scene scene = null;
App.SceneManager.TryGetScene(regionID, out scene);
if (null == scene)
return Failure(httpResponse, OSHttpStatusCode.ClientErrorNotFound,
"POST", "cannot find region {0}", regionID.ToString());
if (2 == comps.Length)
{
// check for {prims}
switch (comps[1].ToLower())
{
case "prims":
return LoadPrims(request, httpRequest, httpResponse, scene);
}
}
return Failure(httpResponse, OSHttpStatusCode.ClientErrorNotFound,
"POST", "url {0} not supported", param);
}
catch (Exception e)
{
return Failure(httpResponse, OSHttpStatusCode.ServerErrorInternalError, "POST", e);
}
}
public string CreateRegion(IOSHttpRequest request, IOSHttpResponse response)
{
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
rxw.WriteStartElement(String.Empty, "regions", String.Empty);
foreach (Scene s in App.SceneManager.Scenes)
{
rxw.WriteStartElement(String.Empty, "uuid", String.Empty);
rxw.WriteString(s.RegionInfo.RegionID.ToString());
rxw.WriteEndElement();
}
rxw.WriteEndElement();
return rxw.ToString();
}
public string LoadPrims(string requestBody, IOSHttpRequest request, IOSHttpResponse response, Scene scene)
{
IRegionSerialiserModule serialiser = scene.RequestModuleInterface<IRegionSerialiserModule>();
if (serialiser != null)
serialiser.LoadPrimsFromXml2(scene, new StringReader(requestBody), true);
return "";
}
#endregion POST methods
}
}

View File

@@ -1,98 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Xml.Serialization;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.ApplicationPlugins.Rest.Regions
{
[XmlRoot(ElementName="region", IsNullable = false)]
public class RegionDetails
{
public string region_name;
public string region_id;
public uint region_x;
public uint region_y;
public string region_owner;
public string region_owner_id;
public uint region_http_port;
public uint region_port;
public string region_server_uri;
public string region_external_hostname;
public RegionDetails()
{
}
public RegionDetails(RegionInfo regInfo)
{
region_name = regInfo.RegionName;
region_id = regInfo.RegionID.ToString();
region_x = regInfo.RegionLocX;
region_y = regInfo.RegionLocY;
region_owner_id = regInfo.EstateSettings.EstateOwner.ToString();
region_http_port = regInfo.HttpPort;
region_server_uri = regInfo.ServerURI;
region_external_hostname = regInfo.ExternalHostName;
Uri uri = new Uri(region_server_uri);
region_port = (uint)uri.Port;
}
public string this[string idx]
{
get
{
switch (idx.ToLower())
{
case "name":
return region_name;
case "id":
return region_id;
case "location":
return String.Format("<x>{0}</x><y>{1}</y>", region_x, region_y);
case "owner":
return region_owner;
case "owner_id":
return region_owner_id;
case "http_port":
return region_http_port.ToString();
case "server_uri":
return region_server_uri;
case "external_hostname":
case "hostname":
return region_external_hostname;
default:
return null;
}
}
}
}
}

View File

@@ -1,11 +0,0 @@
<Addin id="OpenSim.ApplicationPlugins.Rest.Regions" version="0.1">
<Runtime>
<Import assembly="OpenSim.ApplicationPlugins.Rest.Regions.dll"/>
</Runtime>
<Dependencies>
<Addin id="OpenSim" version="0.5" />
</Dependencies>
<Extension path = "/OpenSim/Startup">
<Plugin id="RestRegions" type="OpenSim.ApplicationPlugins.Rest.Regions.RestRegionPlugin" />
</Extension>
</Addin>

View File

@@ -1,94 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Xml.Serialization;
namespace OpenSim.ApplicationPlugins.Rest.Regions
{
public partial class RestRegionPlugin : RestPlugin
{
private static XmlSerializerNamespaces _xmlNs;
static RestRegionPlugin()
{
_xmlNs = new XmlSerializerNamespaces();
_xmlNs.Add(String.Empty, String.Empty);
}
#region overriding properties
public override string Name
{
get { return "REGION"; }
}
public override string ConfigName
{
get { return "RestRegionPlugin"; }
}
#endregion overriding properties
#region overriding methods
/// <summary>
/// This method is called by OpenSimMain immediately after loading the
/// plugin and after basic server setup, but before running any server commands.
/// </summary>
/// <remarks>
/// Note that entries MUST be added to the active configuration files before
/// the plugin can be enabled.
/// </remarks>
public override void Initialise(OpenSimBase openSim)
{
try
{
base.Initialise(openSim);
if (!IsEnabled)
{
//m_log.WarnFormat("{0} Rest Plugins are disabled", MsgID);
return;
}
m_log.InfoFormat("{0} REST region plugin enabled", MsgID);
// add REST method handlers
AddRestStreamHandler("GET", "/regions/", GetHandler);
AddRestStreamHandler("POST", "/regions/", PostHandler);
AddRestStreamHandler("GET", "/regioninfo/", GetRegionInfoHandler);
}
catch (Exception e)
{
m_log.WarnFormat("{0} Initialization failed: {1}", MsgID, e.Message);
m_log.DebugFormat("{0} Initialization failed: {1}", MsgID, e.ToString());
}
}
public override void Close()
{
}
#endregion overriding methods
}
}

View File

@@ -1,415 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Xml;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
namespace OpenSim.ApplicationPlugins.Rest
{
public abstract class RestPlugin : IApplicationPlugin
{
#region properties
protected static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IConfig _config; // Configuration source: Rest Plugins
private IConfig _pluginConfig; // Configuration source: Plugin specific
private OpenSimBase _app; // The 'server'
private BaseHttpServer _httpd; // The server's RPC interface
private string _prefix; // URL prefix below
// which all REST URLs
// are living
// private StringWriter _sw = null;
// private RestXmlWriter _xw = null;
private string _godkey;
private int _reqk;
[ThreadStatic]
private static string _threadRequestID = String.Empty;
/// <summary>
/// Return an ever increasing request ID for logging
/// </summary>
protected string RequestID
{
get { return _reqk++.ToString(); }
set { _reqk = Convert.ToInt32(value); }
}
/// <summary>
/// Thread-constant message IDs for logging.
/// </summary>
protected string MsgID
{
get { return String.Format("[REST-{0}] #{1}", Name, _threadRequestID); }
set { _threadRequestID = value; }
}
/// <summary>
/// Returns true if Rest Plugins are enabled.
/// </summary>
public bool PluginsAreEnabled
{
get { return null != _config; }
}
/// <summary>
/// Returns true if specific Rest Plugin is enabled.
/// </summary>
public bool IsEnabled
{
get
{
return (null != _pluginConfig) && _pluginConfig.GetBoolean("enabled", false);
}
}
/// <summary>
/// OpenSimMain application
/// </summary>
public OpenSimBase App
{
get { return _app; }
}
/// <summary>
/// RPC server
/// </summary>
public BaseHttpServer HttpServer
{
get { return _httpd; }
}
/// <summary>
/// URL prefix to use for all REST handlers
/// </summary>
public string Prefix
{
get { return _prefix; }
}
/// <summary>
/// Access to GOD password string
/// </summary>
protected string GodKey
{
get { return _godkey; }
}
/// <summary>
/// Configuration of the plugin
/// </summary>
public IConfig Config
{
get { return _pluginConfig; }
}
/// <summary>
/// Name of the plugin
/// </summary>
public abstract string Name { get; }
/// <summary>
/// Return the config section name
/// </summary>
public abstract string ConfigName { get; }
// public XmlTextWriter XmlWriter
// {
// get
// {
// if (null == _xw)
// {
// _sw = new StringWriter();
// _xw = new RestXmlWriter(_sw);
// _xw.Formatting = Formatting.Indented;
// }
// return _xw;
// }
// }
// public string XmlWriterResult
// {
// get
// {
// _xw.Flush();
// _xw.Close();
// _xw = null;
// return _sw.ToString();
// }
// }
#endregion properties
#region methods
// TODO: required by IPlugin, but likely not at all right
private string m_version = "0.0";
public string Version
{
get { return m_version; }
}
public void Initialise()
{
m_log.Info("[RESTPLUGIN]: " + Name + " cannot be default-initialized!");
throw new PluginNotInitialisedException(Name);
}
/// <summary>
/// This method is called by OpenSimMain immediately after loading the
/// plugin and after basic server setup, but before running any server commands.
/// </summary>
/// <remarks>
/// Note that entries MUST be added to the active configuration files before
/// the plugin can be enabled.
/// </remarks>
public virtual void Initialise(OpenSimBase openSim)
{
RequestID = "0";
MsgID = RequestID;
try
{
if ((_config = openSim.ConfigSource.Source.Configs["RestPlugins"]) == null)
{
m_log.WarnFormat("{0} Rest Plugins not configured", MsgID);
return;
}
if (!_config.GetBoolean("enabled", false))
{
//m_log.WarnFormat("{0} Rest Plugins are disabled", MsgID);
return;
}
_app = openSim;
_httpd = openSim.HttpServer;
// Retrieve GOD key value, if any.
_godkey = _config.GetString("god_key", String.Empty);
// Retrive prefix if any.
_prefix = _config.GetString("prefix", "/admin");
// Get plugin specific config
_pluginConfig = openSim.ConfigSource.Source.Configs[ConfigName];
m_log.InfoFormat("{0} Rest Plugins Enabled", MsgID);
}
catch (Exception e)
{
// we can safely ignore this, as it just means that
// the key lookup in Configs failed, which signals to
// us that noone is interested in our services...they
// don't know what they are missing out on...
// NOTE: Under the present OpenSimulator implementation it is
// not possible for the openSimulator pointer to be null. However
// were the implementation to be changed, this could
// result in a silent initialization failure. Harmless
// except for lack of function and lack of any
// diagnostic indication as to why. The same is true if
// the HTTP server reference is bad.
// We should at least issue a message...
m_log.WarnFormat("{0} Initialization failed: {1}", MsgID, e.Message);
m_log.DebugFormat("{0} Initialization failed: {1}", MsgID, e.ToString());
}
}
public virtual void PostInitialise()
{
}
private List<RestStreamHandler> _handlers = new List<RestStreamHandler>();
private Dictionary<string, IHttpAgentHandler> _agents = new Dictionary<string, IHttpAgentHandler>();
/// <summary>
/// Add a REST stream handler to the underlying HTTP server.
/// </summary>
/// <param name="httpMethod">GET/PUT/POST/DELETE or
/// similar</param>
/// <param name="path">URL prefix</param>
/// <param name="method">RestMethod handler doing the actual work</param>
public virtual void AddRestStreamHandler(string httpMethod, string path, RestMethod method)
{
if (!IsEnabled) return;
if (!path.StartsWith(_prefix))
{
path = String.Format("{0}{1}", _prefix, path);
}
RestStreamHandler h = new RestStreamHandler(httpMethod, path, method);
_httpd.AddStreamHandler(h);
_handlers.Add(h);
m_log.DebugFormat("{0} Added REST handler {1} {2}", MsgID, httpMethod, path);
}
/// <summary>
/// Add a powerful Agent handler to the underlying HTTP
/// server.
/// </summary>
/// <param name="agentName">name of agent handler</param>
/// <param name="handler">agent handler method</param>
/// <returns>false when the plugin is disabled or the agent
/// handler could not be added. Any generated exceptions are
/// allowed to drop through to the caller, i.e. ArgumentException.
/// </returns>
public bool AddAgentHandler(string agentName, IHttpAgentHandler handler)
{
if (!IsEnabled) return false;
_agents.Add(agentName, handler);
return _httpd.AddAgentHandler(agentName, handler);
}
/// <summary>
/// Remove a powerful Agent handler from the underlying HTTP
/// server.
/// </summary>
/// <param name="agentName">name of agent handler</param>
/// <param name="handler">agent handler method</param>
/// <returns>false when the plugin is disabled or the agent
/// handler could not be removed. Any generated exceptions are
/// allowed to drop through to the caller, i.e. KeyNotFound.
/// </returns>
public bool RemoveAgentHandler(string agentName, IHttpAgentHandler handler)
{
if (!IsEnabled) return false;
if (_agents[agentName] == handler)
{
_agents.Remove(agentName);
return _httpd.RemoveAgentHandler(agentName, handler);
}
return false;
}
/// <summary>
/// Check whether the HTTP request came from god; that is, is
/// the god_key as configured in the config section supplied
/// via X-OpenSim-Godkey?
/// </summary>
/// <param name="request">HTTP request header</param>
/// <returns>true when the HTTP request came from god.</returns>
protected bool IsGod(IOSHttpRequest request)
{
string[] keys = request.Headers.GetValues("X-OpenSim-Godkey");
if (null == keys) return false;
// we take the last key supplied
return keys[keys.Length - 1] == _godkey;
}
/// <summary>
/// Checks wether the X-OpenSim-Password value provided in the
/// HTTP header is indeed the password on file for the avatar
/// specified by the UUID
/// </summary>
protected bool IsVerifiedUser(IOSHttpRequest request, UUID uuid)
{
// XXX under construction
return false;
}
/// <summary>
/// Clean up and remove all handlers that were added earlier.
/// </summary>
public virtual void Close()
{
foreach (RestStreamHandler h in _handlers)
{
_httpd.RemoveStreamHandler(h.HttpMethod, h.Path);
}
_handlers = null;
foreach (KeyValuePair<string, IHttpAgentHandler> h in _agents)
{
_httpd.RemoveAgentHandler(h.Key, h.Value);
}
_agents = null;
}
public virtual void Dispose()
{
Close();
}
/// <summary>
/// Return a failure message.
/// </summary>
/// <param name="method">origin of the failure message</param>
/// <param name="message">failure message</param>
/// <remarks>This should probably set a return code as
/// well. (?)</remarks>
protected string Failure(IOSHttpResponse response, OSHttpStatusCode status,
string method, string format, params string[] msg)
{
string m = String.Format(format, msg);
response.StatusCode = (int) status;
response.StatusDescription = m;
m_log.ErrorFormat("{0} {1} failed: {2}", MsgID, method, m);
return String.Format("<error>{0}</error>", m);
}
/// <summary>
/// Return a failure message.
/// </summary>
/// <param name="method">origin of the failure message</param>
/// <param name="e">exception causing the failure message</param>
/// <remarks>This should probably set a return code as
/// well. (?)</remarks>
public string Failure(IOSHttpResponse response, OSHttpStatusCode status,
string method, Exception e)
{
string m = String.Format("exception occurred: {0}", e.Message);
response.StatusCode = (int) status;
response.StatusDescription = m;
m_log.DebugFormat("{0} {1} failed: {2}", MsgID, method, e.ToString());
m_log.ErrorFormat("{0} {1} failed: {2}", MsgID, method, e.Message);
return String.Format("<error>{0}</error>", e.Message);
}
#endregion methods
}
}

View File

@@ -1,276 +0,0 @@
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Open Simulator Export/Import XML schema
August 2008
</xsd:documentation>
</xsd:annotation>
<!-- WARNING!!!
This is currently a draft, it does not reflect
what is exported, nor what will be understood
on import. It is included as a working document
and this comment will be removed at such time as
the schema corresponds to reality.
-->
<!--
REST-related information
Inventory data is always framed by an
inventory element. Consists of zero or
more elements representing either folders
or items within those folders. The inventory
element represents the "real" root folder.
-->
<xsd:element name="inventory" type="inventory_ct" />
<!--
The inventory complex type is just an arbitrary
sequence of folders and items. In reality it is
typically just folders. Both item and folder
have corresponding complex types. It is distinct
from folders insofar as it has no other defining
attributes.
-->
<xsd:complexType name="inventory_ct">
<xsd:element name="folder" type="folder_ct" maxOccurs="unbounded"/>
<xsd:element name="item" type="item_ct" maxOccurs="unbounded" />
</xsd:complexType>
<xsd:complexType name="folder_ct">
<xsd:attribute name="UUID" type="uuid_st" />
<xsd:attribute name="name" type="name_st" />
<xsd:attribute name="type" type="folder_type_st" />
<xsd:attribute name="description" type="xsd:string" /> <!-- added -->
<xsd:attribute name="version" type="unsignedShort" />
<xsd:attribute name="owner" type="uuid_st" />
<xsd:attribute name="creator" type="uuid_st" /> <!-- added -->
<xsd:attribute name="creationdate" type="date_st" /> <!-- added -->
<xsd:attribute name="parent" type="uuid_st" />
<xsd:element name="permissions" type="permissions_ct" maxOccurs="unbounded" /> <!-- added -->
<xsd:element name="folder" type="folder_ct" maxOccurs="unbounded" />
<xsd:element name="item" type="item_ct" maxOccurs="unbounded" />
</xsd:complexType>
<xsd:complexType name="item_ct">
<xsd:attribute name="UUID" type="uuid_st" />
<xsd:attribute name="name" type="name_st" />
<xsd:attribute name="type" type="inventory_type_st" />
<xsd:attribute name="description" type="xsd:string" />
<xsd:attribute name="version" type="unsignedShort" /> <!-- added -->
<xsd:attribute name="owner" type="uuid_st" />
<xsd:attribute name="creator" type="uuid_st" />
<xsd:attribute name="creationdate" type="date_st" />
<xsd:attribute name="folder" type="uuid_st" />
<xsd:attribute name="groupid" type="uuid_st" />
<xsd:attribute name="groupowned" type="xsd:boolean" />
<xsd:attribute name="saletype" type="sale_st" />
<xsd:attribute name="saleprice" type="xsd:decimal" />
<xsd:element name="permissions" type="permissions_ct" maxOccurs="unbounded" />
</xsd:complexType>
<xsd:complexType name="asset_ct">
<xsd:attribute name="UUID" type="uuid_st" />
<xsd:attribute name="name" type="name_st" />
<xsd:attribute name="type" type="asset_type_st" />
<xsd:attribute name="description" type="xsd:string" />
<xsd:attribute name="version" type="unsignedShort" /> <!-- added -->
<xsd:attribute name="owner" type="uuid_st" />
<xsd:attribute name="creator" type="uuid_st" />
<xsd:attribute name="creationdate" type="date_st" />
<xsd:attribute name="temporary" type="xsd:boolean" />
<xsd:attribute name="local" type="xsd:boolean" />
<xsd:attribute name="inline" type="xsd:boolean" />
</xsd:complexType>
<!-- Constrained Simple Data types -->
<!--
We need to specify name as a simple type because on
some platforms it is constrained by a certain length
limitation. For completeness we indicate that whitespace
should be preserved exactly as specified.
-->
<xsd:simpleType name="name_st">
<xsd:restriction base="xsd:string">
<whiteSpace value="preserve" />
<minLength value="0" />
<maxLength value="64" />
</xsd:restriction>
</xsd:simpleType>
<!--
Type information in the folder is meant to indicate
the preferred asset type for this folder. As such, that
currently corresponds to the type values allowed for
assets, however that is not mandated, so for
now at least I'll represent this as a distinct
enumeration.
This seems inappropriate; it seems like the folder's
content should reflect the InventoryType classifications
rather than the asset types.
-->
<xsd:simpleType name="folder_type_st">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Texture" />
<xsd:enumeration value="Sound" />
<xsd:enumeration value="CallingCard" />
<xsd:enumeration value="Landmark" />
<xsd:enumeration value="Script" />
<xsd:enumeration value="Clothing" />
<xsd:enumeration value="Object" />
<xsd:enumeration value="Notecard" />
<xsd:enumeration value="LSLText" />
<xsd:enumeration value="LSLByteCode" />
<xsd:enumeration value="TextureTGA" />
<xsd:enumeration value="BodyPart" />
<xsd:enumeration value="SoundWAV" />
<xsd:enumeration value="ImageTGA" />
<xsd:enumeration value="ImageJPEG" />
<xsd:enumeration value="Animation" />
<xsd:enumeration value="Gesture" />
<xsd:enumeration value="Simstate" />
<xsd:enumeration value="Unknown" />
<xsd:enumeration value="LostAndFoundFolder" />
<xsd:enumeration value="SnapshotFolder" />
<xsd:enumeration value="TrashFolder" />
<xsd:enumeration value="Folder" />
<xsd:enumeration value="RootFolder" />
</xsd:restriction>
</xsd:simpleType>
<!--
Inventory item type designates an asset class, rather
than a specific asset type. For example, "SnapShot"
might include a number of asset types such as JPEG,
TGA, etc.. This is not a consistent interpretation,
classifications such as LostAndFound are meta-types
relative to asset classes.
These types should be abstract and not be tied to a
specific platform. A world's import facility should be
responsible for mapping these to meaningful internal
representations.
These types were based on information in:
libsecondlife/InventoryManager.cs
-->
<xsd:simpleType name="inventory_type_st">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Texture" />
<xsd:enumeration value="Sound" />
<xsd:enumeration value="CallingCard" />
<xsd:enumeration value="Landmark" />
<xsd:enumeration value="Script" />
<xsd:enumeration value="Clothing" />
<xsd:enumeration value="Object" />
<xsd:enumeration value="Notecard" />
<xsd:enumeration value="LSL" />
<xsd:enumeration value="LSLBytecode" />
<xsd:enumeration value="TextureTGA" />
<xsd:enumeration value="BodyPart" />
<xsd:enumeration value="Snapshot" />
<xsd:enumeration value="Attachment" />
<xsd:enumeration value="Wearable" />
<xsd:enumeration value="Animation" />
<xsd:enumeration value="Gesture" />
<xsd:enumeration value="Folder" />
<xsd:enumeration value="Unknown" />
<xsd:enumeration value="LostAndFound" />
<xsd:enumeration value="Trash" />
<xsd:enumeration value="Root" />
</xsd:restriction>
</xsd:simpleType>
<!--
The asset types seem to be even more disarrayed than
the inventory types. It seems to be little more than
a reiteration of the inventory type information,
which adds little or nothing to the overall data
model.
Of course, given that these are drawn from the
libsecondlife definitions, we aren't at liberty to
simply redefine them in place. But the XML definitions
here could be made more useful.
These types were based on information in:
libsecondlife/AssetManager.cs
-->
<xsd:simpleType name="asset_type_st">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Texture" />
<xsd:enumeration value="Sound" />
<xsd:enumeration value="CallingCard" />
<xsd:enumeration value="Landmark" />
<xsd:enumeration value="Script" />
<xsd:enumeration value="Clothing" />
<xsd:enumeration value="Object" />
<xsd:enumeration value="Notecard" />
<xsd:enumeration value="LSLText" />
<xsd:enumeration value="LSLByteCode" />
<xsd:enumeration value="TextureTGA" />
<xsd:enumeration value="BodyPart" />
<xsd:enumeration value="SoundWAV" />
<xsd:enumeration value="ImageTGA" />
<xsd:enumeration value="ImageJPEG" />
<xsd:enumeration value="Animation" />
<xsd:enumeration value="Gesture" />
<xsd:enumeration value="Simstate" />
<xsd:enumeration value="Unknown" />
<xsd:enumeration value="LostAndFoundFolder" />
<xsd:enumeration value="SnapshotFolder" />
<xsd:enumeration value="TrashFolder" />
<xsd:enumeration value="Folder" />
<xsd:enumeration value="RootFolder" />
</xsd:restriction>
</xsd:simpleType>
<!-- This is describing the apparent form of a UUID. If
we ever want a more metaphysical definition we'll
need to add to it.
-->
<xsd:simpleType name="uuid_st">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"/>
</xsd:restriction>
</xsd:simpleType>
<!-- This constrains the date representation. Currently
it is simply an integer representing the elapsed
?? since ??.
-->
<xsd:simpleType name="date_st">
<xsd:restriction base="xsd:positiveInteger">
</xsd:restriction>
</xsd:simpleType>
<!-- This constrains the representation of sale price.
Currently it is a simple decimal with no unit
specified.
Issues: interoperability.
-->
<xsd:simpleType name="sale_st">
<xsd:restriction base="xsd:decimal">
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

View File

@@ -50,8 +50,7 @@ namespace OpenSim.Framework.Capabilities
public class Caps
{
// private static readonly ILog m_log =
// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private string m_httpListenerHostName;
private uint m_httpListenPort;
@@ -63,7 +62,11 @@ namespace OpenSim.Framework.Capabilities
public string CapsObjectPath { get { return m_capsObjectPath; } }
private CapsHandlers m_capsHandlers;
private Dictionary<string, string> m_externalCapsHandlers;
private Dictionary<string, PollServiceEventArgs> m_pollServiceHandlers
= new Dictionary<string, PollServiceEventArgs>();
private Dictionary<string, string> m_externalCapsHandlers = new Dictionary<string, string>();
private IHttpServer m_httpListener;
private UUID m_agentID;
@@ -132,7 +135,6 @@ namespace OpenSim.Framework.Capabilities
m_agentID = agent;
m_capsHandlers = new CapsHandlers(httpServer, httpListen, httpPort, (httpServer == null) ? false : httpServer.UseSSL);
m_externalCapsHandlers = new Dictionary<string, string>();
m_regionName = regionName;
}
@@ -143,8 +145,33 @@ namespace OpenSim.Framework.Capabilities
/// <param name="handler"></param>
public void RegisterHandler(string capName, IRequestHandler handler)
{
m_capsHandlers[capName] = handler;
//m_log.DebugFormat("[CAPS]: Registering handler for \"{0}\": path {1}", capName, handler.Path);
m_capsHandlers[capName] = handler;
}
public void RegisterPollHandler(string capName, PollServiceEventArgs pollServiceHandler)
{
// m_log.DebugFormat(
// "[CAPS]: Registering handler with name {0}, url {1} for {2}",
// capName, pollServiceHandler.Url, m_agentID, m_regionName);
m_pollServiceHandlers.Add(capName, pollServiceHandler);
m_httpListener.AddPollServiceHTTPHandler(pollServiceHandler.Url, pollServiceHandler);
// uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port;
// string protocol = "http";
// string hostName = m_httpListenerHostName;
//
// if (MainServer.Instance.UseSSL)
// {
// hostName = MainServer.Instance.SSLCommonName;
// port = MainServer.Instance.SSLPort;
// protocol = "https";
// }
// RegisterHandler(
// capName, String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, pollServiceHandler.Url));
}
/// <summary>
@@ -163,13 +190,70 @@ namespace OpenSim.Framework.Capabilities
/// </summary>
public void DeregisterHandlers()
{
if (m_capsHandlers != null)
foreach (string capsName in m_capsHandlers.Caps)
{
foreach (string capsName in m_capsHandlers.Caps)
{
m_capsHandlers.Remove(capsName);
}
m_capsHandlers.Remove(capsName);
}
foreach (PollServiceEventArgs handler in m_pollServiceHandlers.Values)
{
m_httpListener.RemovePollServiceHTTPHandler("", handler.Url);
}
}
public bool TryGetPollHandler(string name, out PollServiceEventArgs pollHandler)
{
return m_pollServiceHandlers.TryGetValue(name, out pollHandler);
}
public Dictionary<string, PollServiceEventArgs> GetPollHandlers()
{
return new Dictionary<string, PollServiceEventArgs>(m_pollServiceHandlers);
}
/// <summary>
/// Return an LLSD-serializable Hashtable describing the
/// capabilities and their handler details.
/// </summary>
/// <param name="excludeSeed">If true, then exclude the seed cap.</param>
public Hashtable GetCapsDetails(bool excludeSeed, List<string> requestedCaps)
{
Hashtable caps = CapsHandlers.GetCapsDetails(excludeSeed, requestedCaps);
lock (m_pollServiceHandlers)
{
foreach (KeyValuePair <string, PollServiceEventArgs> kvp in m_pollServiceHandlers)
{
if (!requestedCaps.Contains(kvp.Key))
continue;
string hostName = m_httpListenerHostName;
uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port;
string protocol = "http";
if (MainServer.Instance.UseSSL)
{
hostName = MainServer.Instance.SSLCommonName;
port = MainServer.Instance.SSLPort;
protocol = "https";
}
//
// caps.RegisterHandler("FetchInventoryDescendents2", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, capUrl));
caps[kvp.Key] = string.Format("{0}://{1}:{2}{3}", protocol, hostName, port, kvp.Value.Url);
}
}
// Add the external too
foreach (KeyValuePair<string, string> kvp in ExternalCapsHandlers)
{
if (!requestedCaps.Contains(kvp.Key))
continue;
caps[kvp.Key] = kvp.Value;
}
return caps;
}
}
}
}

View File

@@ -39,7 +39,7 @@ namespace OpenSim.Framework.Capabilities
/// </summary>
public class CapsHandlers
{
private Dictionary <string, IRequestHandler> m_capsHandlers = new Dictionary<string, IRequestHandler>();
private Dictionary<string, IRequestHandler> m_capsHandlers = new Dictionary<string, IRequestHandler>();
private IHttpServer m_httpListener;
private string m_httpListenerHostName;
private uint m_httpListenerPort;
@@ -158,7 +158,7 @@ namespace OpenSim.Framework.Capabilities
/// capabilities and their handler details.
/// </summary>
/// <param name="excludeSeed">If true, then exclude the seed cap.</param>
public Hashtable GetCapsDetails(bool excludeSeed)
public Hashtable GetCapsDetails(bool excludeSeed, List<string> requestedCaps)
{
Hashtable caps = new Hashtable();
string protocol = "http://";
@@ -175,11 +175,26 @@ namespace OpenSim.Framework.Capabilities
if (excludeSeed && "SEED" == capsName)
continue;
if (requestedCaps != null && !requestedCaps.Contains(capsName))
continue;
caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
}
}
return caps;
}
/// <summary>
/// Returns a copy of the dictionary of all the HTTP cap handlers
/// </summary>
/// <returns>
/// The dictionary copy. The key is the capability name, the value is the HTTP handler.
/// </returns>
public Dictionary<string, IRequestHandler> GetCapsHandlers()
{
lock (m_capsHandlers)
return new Dictionary<string, IRequestHandler>(m_capsHandlers);
}
}
}

View File

@@ -0,0 +1,116 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Reflection;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
//using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class AvatarPickerSearchHandler : BaseStreamHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IPeople m_PeopleService;
public AvatarPickerSearchHandler(string path, IPeople peopleService, string name, string description)
: base("GET", path, name, description)
{
m_PeopleService = peopleService;
}
protected override byte[] ProcessRequest(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// Try to parse the texture ID from the request URL
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
string names = query.GetOne("names");
string psize = query.GetOne("page_size");
string pnumber = query.GetOne("page");
if (m_PeopleService == null)
return FailureResponse(names, (int)System.Net.HttpStatusCode.InternalServerError, httpResponse);
if (string.IsNullOrEmpty(names) || names.Length < 3)
return FailureResponse(names, (int)System.Net.HttpStatusCode.BadRequest, httpResponse);
m_log.DebugFormat("[AVATAR PICKER SEARCH]: search for {0}", names);
int page_size = (string.IsNullOrEmpty(psize) ? 500 : Int32.Parse(psize));
int page_number = (string.IsNullOrEmpty(pnumber) ? 1 : Int32.Parse(pnumber));
// Full content request
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK;
//httpResponse.ContentLength = ??;
httpResponse.ContentType = "application/llsd+xml";
List<UserData> users = m_PeopleService.GetUserData(names, page_size, page_number);
LLSDAvatarPicker osdReply = new LLSDAvatarPicker();
osdReply.next_page_url = httpRequest.RawUrl;
foreach (UserData u in users)
osdReply.agents.Array.Add(ConvertUserData(u));
string reply = LLSDHelpers.SerialiseLLSDReply(osdReply);
return System.Text.Encoding.UTF8.GetBytes(reply);
}
private LLSDPerson ConvertUserData(UserData user)
{
LLSDPerson p = new LLSDPerson();
p.legacy_first_name = user.FirstName;
p.legacy_last_name = user.LastName;
p.display_name = user.FirstName + " " + user.LastName;
if (user.LastName.StartsWith("@"))
p.username = user.FirstName.ToLower() + user.LastName.ToLower();
else
p.username = user.FirstName.ToLower() + "." + user.LastName.ToLower();
p.id = user.Id;
p.is_display_name_default = false;
return p;
}
private byte[] FailureResponse(string names, int statuscode, IOSHttpResponse httpResponse)
{
m_log.Error("[AVATAR PICKER SEARCH]: Error searching for " + names);
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return System.Text.Encoding.UTF8.GetBytes(string.Empty);
}
}
}

View File

@@ -46,7 +46,7 @@ namespace OpenSim.Capabilities.Handlers
{
public class FetchInventory2Handler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IInventoryService m_inventoryService;
@@ -101,18 +101,8 @@ namespace OpenSim.Capabilities.Handlers
llsdItem.item_id = invItem.ID;
llsdItem.name = invItem.Name;
llsdItem.parent_id = invItem.Folder;
try
{
llsdItem.type = Utils.AssetTypeToString((AssetType)invItem.AssetType);
llsdItem.inv_type = Utils.InventoryTypeToString((InventoryType)invItem.InvType);
}
catch (Exception e)
{
m_log.ErrorFormat(
"[WEB FETCH INV DESC HANDLER]: Problem setting asset {0} inventory {1} types while converting inventory item {2}: {3}",
invItem.AssetType, invItem.InvType, invItem.Name, e.Message);
}
llsdItem.type = invItem.AssetType;
llsdItem.inv_type = invItem.InvType;
llsdItem.permissions = new LLSDPermissions();
llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid;
@@ -126,23 +116,9 @@ namespace OpenSim.Capabilities.Handlers
llsdItem.permissions.owner_mask = (int)invItem.CurrentPermissions;
llsdItem.sale_info = new LLSDSaleInfo();
llsdItem.sale_info.sale_price = invItem.SalePrice;
switch (invItem.SaleType)
{
default:
llsdItem.sale_info.sale_type = "not";
break;
case 1:
llsdItem.sale_info.sale_type = "original";
break;
case 2:
llsdItem.sale_info.sale_type = "copy";
break;
case 3:
llsdItem.sale_info.sale_type = "contents";
break;
}
llsdItem.sale_info.sale_type = invItem.SaleType;
return llsdItem;
}
}
}
}

View File

@@ -63,7 +63,8 @@ namespace OpenSim.Capabilities.Handlers
FetchInventory2Handler fiHandler = new FetchInventory2Handler(m_InventoryService);
IRequestHandler reqHandler
= new RestStreamHandler("POST", "/CAPS/FetchInventory/", fiHandler.FetchInventoryRequest);
= new RestStreamHandler(
"POST", "/CAPS/FetchInventory/", fiHandler.FetchInventoryRequest, "FetchInventory", null);
server.AddStreamHandler(reqHandler);
}
}

View File

@@ -66,13 +66,14 @@ namespace OpenSim.Capabilities.Handlers
throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName));
GetMeshHandler gmeshHandler = new GetMeshHandler(m_AssetService);
IRequestHandler reqHandler = new RestHTTPHandler("GET", "/CAPS/" + UUID.Random(),
delegate(Hashtable m_dhttpMethod)
{
return gmeshHandler.ProcessGetMesh(m_dhttpMethod, UUID.Zero, null);
});
IRequestHandler reqHandler
= new RestHTTPHandler(
"GET",
"/CAPS/" + UUID.Random(),
httpMethod => gmeshHandler.ProcessGetMesh(httpMethod, UUID.Zero, null),
"GetMesh",
null);
server.AddStreamHandler(reqHandler);
}
}
}
}

View File

@@ -56,15 +56,18 @@ namespace OpenSim.Capabilities.Handlers
public const string DefaultFormat = "x-j2c";
// TODO: Change this to a config option
const string REDIRECT_URL = null;
private string m_RedirectURL = null;
public GetTextureHandler(string path, IAssetService assService) :
base("GET", path)
public GetTextureHandler(string path, IAssetService assService, string name, string description, string redirectURL)
: base("GET", path, name, description)
{
m_assetService = assService;
m_RedirectURL = redirectURL;
if (m_RedirectURL != null && !m_RedirectURL.EndsWith("/"))
m_RedirectURL += "/";
}
public override byte[] Handle(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
protected override byte[] ProcessRequest(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// Try to parse the texture ID from the request URL
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
@@ -77,7 +80,6 @@ namespace OpenSim.Capabilities.Handlers
{
m_log.Error("[GETTEXTURE]: Cannot fetch texture " + textureStr + " without an asset service");
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return null;
}
UUID textureID;
@@ -86,7 +88,7 @@ namespace OpenSim.Capabilities.Handlers
// m_log.DebugFormat("[GETTEXTURE]: Received request for texture id {0}", textureID);
string[] formats;
if (format != null && format != string.Empty)
if (!string.IsNullOrEmpty(format))
{
formats = new string[1] { format.ToLower() };
}
@@ -115,7 +117,6 @@ namespace OpenSim.Capabilities.Handlers
// "[GETTEXTURE]: For texture {0} sending back response {1}, data length {2}",
// textureID, httpResponse.StatusCode, httpResponse.ContentLength);
httpResponse.Send();
return null;
}
@@ -136,7 +137,7 @@ namespace OpenSim.Capabilities.Handlers
if (format != DefaultFormat)
fullID = fullID + "-" + format;
if (!String.IsNullOrEmpty(REDIRECT_URL))
if (!String.IsNullOrEmpty(m_RedirectURL))
{
// Only try to fetch locally cached textures. Misses are redirected
texture = m_assetService.GetCached(fullID);
@@ -152,8 +153,9 @@ namespace OpenSim.Capabilities.Handlers
}
else
{
string textureUrl = REDIRECT_URL + textureID.ToString();
string textureUrl = m_RedirectURL + "?texture_id="+ textureID.ToString();
m_log.Debug("[GETTEXTURE]: Redirecting texture request to " + textureUrl);
httpResponse.StatusCode = (int)OSHttpStatusCode.RedirectMovedPermanently;
httpResponse.RedirectLocation = textureUrl;
return true;
}
@@ -165,7 +167,7 @@ namespace OpenSim.Capabilities.Handlers
if (texture == null)
{
//m_log.DebugFormat("[GETTEXTURE]: texture was not in the cache");
// m_log.DebugFormat("[GETTEXTURE]: texture was not in the cache");
// Fetch locally or remotely. Misses return a 404
texture = m_assetService.Get(textureID.ToString());
@@ -191,6 +193,7 @@ namespace OpenSim.Capabilities.Handlers
newTexture.Flags = AssetFlags.Collectable;
newTexture.Temporary = true;
newTexture.Local = true;
m_assetService.Store(newTexture);
WriteTextureData(httpRequest, httpResponse, newTexture, format);
return true;
@@ -199,7 +202,7 @@ namespace OpenSim.Capabilities.Handlers
}
else // it was on the cache
{
//m_log.DebugFormat("[GETTEXTURE]: texture was in the cache");
// m_log.DebugFormat("[GETTEXTURE]: texture was in the cache");
WriteTextureData(httpRequest, httpResponse, texture, format);
return true;
}
@@ -221,25 +224,54 @@ namespace OpenSim.Capabilities.Handlers
int start, end;
if (TryParseRange(range, out start, out end))
{
// Before clamping start make sure we can satisfy it in order to avoid
// sending back the last byte instead of an error status
if (start >= texture.Data.Length)
{
response.StatusCode = (int)System.Net.HttpStatusCode.RequestedRangeNotSatisfiable;
// m_log.DebugFormat(
// "[GETTEXTURE]: Client requested range for texture {0} starting at {1} but texture has end of {2}",
// texture.ID, start, texture.Data.Length);
// Stricly speaking, as per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, we should be sending back
// Requested Range Not Satisfiable (416) here. However, it appears that at least recent implementations
// of the Linden Lab viewer (3.2.1 and 3.3.4 and probably earlier), a viewer that has previously
// received a very small texture may attempt to fetch bytes from the server past the
// range of data that it received originally. Whether this happens appears to depend on whether
// the viewer's estimation of how large a request it needs to make for certain discard levels
// (http://wiki.secondlife.com/wiki/Image_System#Discard_Level_and_Mip_Mapping), chiefly discard
// level 2. If this estimate is greater than the total texture size, returning a RequestedRangeNotSatisfiable
// here will cause the viewer to treat the texture as bad and never display the full resolution
// However, if we return PartialContent (or OK) instead, the viewer will display that resolution.
// response.StatusCode = (int)System.Net.HttpStatusCode.RequestedRangeNotSatisfiable;
// response.AddHeader("Content-Range", String.Format("bytes */{0}", texture.Data.Length));
// response.StatusCode = (int)System.Net.HttpStatusCode.OK;
response.StatusCode = (int)System.Net.HttpStatusCode.PartialContent;
response.ContentType = texture.Metadata.ContentType;
}
else
{
// Handle the case where no second range value was given. This is equivalent to requesting
// the rest of the entity.
if (end == -1)
end = int.MaxValue;
end = Utils.Clamp(end, 0, texture.Data.Length - 1);
start = Utils.Clamp(start, 0, end);
int len = end - start + 1;
//m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
// m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
// Always return PartialContent, even if the range covered the entire data length
// We were accidentally sending back 404 before in this situation
// https://issues.apache.org/bugzilla/show_bug.cgi?id=51878 supports sending 206 even if the
// entire range is requested, and viewer 3.2.2 (and very probably earlier) seems fine with this.
//
// We also do not want to send back OK even if the whole range was satisfiable since this causes
// HTTP textures on at least Imprudence 1.4.0-beta2 to never display the final texture quality.
// if (end > maxEnd)
// response.StatusCode = (int)System.Net.HttpStatusCode.OK;
// else
response.StatusCode = (int)System.Net.HttpStatusCode.PartialContent;
response.ContentLength = len;
@@ -277,15 +309,43 @@ namespace OpenSim.Capabilities.Handlers
// texture.FullID, range, response.StatusCode, response.ContentLength, texture.Data.Length);
}
/// <summary>
/// Parse a range header.
/// </summary>
/// <remarks>
/// As per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,
/// this obeys range headers with two values (e.g. 533-4165) and no second value (e.g. 533-).
/// Where there is no value, -1 is returned.
/// FIXME: Need to cover the case where only a second value is specified (e.g. -4165), probably by returning -1
/// for start.</remarks>
/// <returns></returns>
/// <param name='header'></param>
/// <param name='start'>Start of the range. Undefined if this was not a number.</param>
/// <param name='end'>End of the range. Will be -1 if no end specified. Undefined if there was a raw string but this was not a number.</param>
private bool TryParseRange(string header, out int start, out int end)
{
start = end = 0;
if (header.StartsWith("bytes="))
{
string[] rangeValues = header.Substring(6).Split('-');
if (rangeValues.Length == 2)
{
if (Int32.TryParse(rangeValues[0], out start) && Int32.TryParse(rangeValues[1], out end))
if (!Int32.TryParse(rangeValues[0], out start))
return false;
string rawEnd = rangeValues[1];
if (rawEnd == "")
{
end = -1;
return true;
}
else if (Int32.TryParse(rawEnd, out end))
{
return true;
}
}
}

View File

@@ -62,8 +62,10 @@ namespace OpenSim.Capabilities.Handlers
if (m_AssetService == null)
throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName));
server.AddStreamHandler(new GetTextureHandler("/CAPS/GetTexture/" /*+ UUID.Random() */, m_AssetService));
string rurl = serverConfig.GetString("GetTextureRedirectURL");
;
server.AddStreamHandler(
new GetTextureHandler("/CAPS/GetTexture/" /*+ UUID.Random() */, m_AssetService, "GetTexture", null, rurl));
}
}
}
}

View File

@@ -42,7 +42,7 @@ using OpenSim.Tests.Common.Mock;
namespace OpenSim.Capabilities.Handlers.GetTexture.Tests
{
[TestFixture]
public class GetTextureHandlerTests
public class GetTextureHandlerTests : OpenSimTestCase
{
[Test]
public void TestTextureNotFound()
@@ -50,9 +50,9 @@ namespace OpenSim.Capabilities.Handlers.GetTexture.Tests
TestHelpers.InMethod();
// Overkill - we only really need the asset service, not a whole scene.
Scene scene = SceneHelpers.SetupScene();
Scene scene = new SceneHelpers().SetupScene();
GetTextureHandler handler = new GetTextureHandler(null, scene.AssetService);
GetTextureHandler handler = new GetTextureHandler("/gettexture", scene.AssetService, "TestGetTexture", null, null);
TestOSHttpRequest req = new TestOSHttpRequest();
TestOSHttpResponse resp = new TestOSHttpResponse();
req.Url = new Uri("http://localhost/?texture_id=00000000-0000-1111-9999-000000000012");

View File

@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Capabilities.Handlers")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("http://opensimulator.org")]
[assembly: AssemblyProduct("OpenSim")]
[assembly: AssemblyCopyright("OpenSimulator developers")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("32350823-e1df-45e3-b7fa-0a58b4372433")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.1.*")]

View File

@@ -85,8 +85,8 @@ namespace OpenSim.Capabilities.Handlers
uploader.OnUpLoad += BakedTextureUploaded;
m_HostCapsObj.HttpListener.AddStreamHandler(
new BinaryStreamHandler("POST", capsBase + uploaderPath,
uploader.uploaderCaps));
new BinaryStreamHandler(
"POST", capsBase + uploaderPath, uploader.uploaderCaps, "UploadBakedTexture", null));
string protocol = "http://";

View File

@@ -0,0 +1,76 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using Nini.Config;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenMetaverse;
namespace OpenSim.Capabilities.Handlers
{
public class UploadBakedTextureServerConnector : ServiceConnector
{
private IAssetService m_AssetService;
private string m_ConfigName = "CapsService";
public UploadBakedTextureServerConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
IConfig serverConfig = config.Configs[m_ConfigName];
if (serverConfig == null)
throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName));
string assetService = serverConfig.GetString("AssetService", String.Empty);
if (assetService == String.Empty)
throw new Exception("No AssetService in config file");
Object[] args = new Object[] { config };
m_AssetService =
ServerUtils.LoadPlugin<IAssetService>(assetService, args);
if (m_AssetService == null)
throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName));
// NEED TO FIX THIS
OpenSim.Framework.Capabilities.Caps caps = new OpenSim.Framework.Capabilities.Caps(server, "", server.Port, "", UUID.Zero, "");
server.AddStreamHandler(new RestStreamHandler(
"POST",
"/CAPS/UploadBakedTexture/",
new UploadBakedTextureHandler(caps, m_AssetService, true).UploadBakedTexture,
"UploadBakedTexture",
"Upload Baked Texture Capability"));
}
}
}

View File

@@ -156,21 +156,24 @@ namespace OpenSim.Capabilities.Handlers
inv.Folders = new List<InventoryFolderBase>();
inv.Items = new List<InventoryItemBase>();
int version = 0;
int descendents = 0;
inv
= Fetch(
invFetch.owner_id, invFetch.folder_id, invFetch.owner_id,
invFetch.fetch_folders, invFetch.fetch_items, invFetch.sort_order, out version);
invFetch.fetch_folders, invFetch.fetch_items, invFetch.sort_order, out version, out descendents);
if (inv.Folders != null)
if (inv != null && inv.Folders != null)
{
foreach (InventoryFolderBase invFolder in inv.Folders)
{
contents.categories.Array.Add(ConvertInventoryFolder(invFolder));
}
descendents += inv.Folders.Count;
}
if (inv.Items != null)
if (inv != null && inv.Items != null)
{
foreach (InventoryItemBase invItem in inv.Items)
{
@@ -178,7 +181,7 @@ namespace OpenSim.Capabilities.Handlers
}
}
contents.descendents = contents.items.Array.Count + contents.categories.Array.Count;
contents.descendents = descendents;
contents.version = version;
// m_log.DebugFormat(
@@ -206,7 +209,7 @@ namespace OpenSim.Capabilities.Handlers
/// <returns>An empty InventoryCollection if the inventory look up failed</returns>
private InventoryCollection Fetch(
UUID agentID, UUID folderID, UUID ownerID,
bool fetchFolders, bool fetchItems, int sortOrder, out int version)
bool fetchFolders, bool fetchItems, int sortOrder, out int version, out int descendents)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Fetching folders ({0}), items ({1}) from {2} for agent {3}",
@@ -215,6 +218,8 @@ namespace OpenSim.Capabilities.Handlers
// FIXME MAYBE: We're not handling sortOrder!
version = 0;
descendents = 0;
InventoryFolderImpl fold;
if (m_LibraryService != null && m_LibraryService.LibraryRootFolder != null && agentID == m_LibraryService.LibraryRootFolder.Owner)
{
@@ -223,6 +228,7 @@ namespace OpenSim.Capabilities.Handlers
InventoryCollection ret = new InventoryCollection();
ret.Folders = new List<InventoryFolderBase>();
ret.Items = fold.RequestListOfItems();
descendents = ret.Folders.Count + ret.Items.Count;
return ret;
}
@@ -232,7 +238,15 @@ namespace OpenSim.Capabilities.Handlers
if (folderID != UUID.Zero)
{
contents = m_InventoryService.GetFolderContent(agentID, folderID);
InventoryCollection fetchedContents = m_InventoryService.GetFolderContent(agentID, folderID);
if (fetchedContents == null)
{
m_log.WarnFormat("[WEB FETCH INV DESC HANDLER]: Could not get contents of folder {0} for user {1}", folderID, agentID);
return contents;
}
contents = fetchedContents;
InventoryFolderBase containingFolder = new InventoryFolderBase();
containingFolder.ID = folderID;
containingFolder.Owner = agentID;
@@ -246,24 +260,72 @@ namespace OpenSim.Capabilities.Handlers
version = containingFolder.Version;
// if (fetchItems)
if (fetchItems)
{
List<InventoryItemBase> itemsToReturn = contents.Items;
List<InventoryItemBase> originalItems = new List<InventoryItemBase>(itemsToReturn);
// descendents must only include the links, not the linked items we add
descendents = originalItems.Count;
// Add target items for links in this folder before the links themselves.
foreach (InventoryItemBase item in originalItems)
{
if (item.AssetType == (int)AssetType.Link)
{
InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// rather than having to keep track of every folder requested in the recursion.
if (linkedItem != null && linkedItem.AssetType != (int)AssetType.Link)
itemsToReturn.Insert(0, linkedItem);
}
}
// Now scan for folder links and insert the items they target and those links at the head of the return data
foreach (InventoryItemBase item in originalItems)
{
if (item.AssetType == (int)AssetType.LinkFolder)
{
InventoryCollection linkedFolderContents = m_InventoryService.GetFolderContent(ownerID, item.AssetID);
List<InventoryItemBase> links = linkedFolderContents.Items;
itemsToReturn.InsertRange(0, links);
foreach (InventoryItemBase link in linkedFolderContents.Items)
{
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// rather than having to keep track of every folder requested in the recursion.
if (link != null)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Adding item {0} {1} from folder {2} linked from {3}",
// link.Name, (AssetType)link.AssetType, item.AssetID, containingFolder.Name);
InventoryItemBase linkedItem
= m_InventoryService.GetItem(new InventoryItemBase(link.AssetID));
if (linkedItem != null)
itemsToReturn.Insert(0, linkedItem);
}
}
}
}
}
// foreach (InventoryItemBase item in contents.Items)
// {
// List<InventoryItemBase> linkedItemsToAdd = new List<InventoryItemBase>();
//
// foreach (InventoryItemBase item in contents.Items)
// {
// if (item.AssetType == (int)AssetType.Link)
// {
// InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
//
// // Take care of genuinely broken links where the target doesn't exist
// // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// // but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// // rather than having to keep track of every folder requested in the recursion.
// if (linkedItem != null && linkedItem.AssetType != (int)AssetType.Link)
// linkedItemsToAdd.Insert(0, linkedItem);
// }
// }
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Returning item {0}, type {1}, parent {2} in {3} {4}",
// item.Name, (AssetType)item.AssetType, item.Folder, containingFolder.Name, containingFolder.ID);
// }
// =====
//
// foreach (InventoryItemBase linkedItem in linkedItemsToAdd)
// {
@@ -340,12 +402,8 @@ namespace OpenSim.Capabilities.Handlers
llsdFolder.folder_id = invFolder.ID;
llsdFolder.parent_id = invFolder.ParentID;
llsdFolder.name = invFolder.Name;
if (invFolder.Type == (short)AssetType.Unknown || !Enum.IsDefined(typeof(AssetType), (sbyte)invFolder.Type))
llsdFolder.type = "-1";
else
llsdFolder.type = Utils.AssetTypeToString((AssetType)invFolder.Type);
llsdFolder.preferred_type = "-1";
llsdFolder.type = invFolder.Type;
llsdFolder.preferred_type = -1;
return llsdFolder;
}
@@ -365,18 +423,8 @@ namespace OpenSim.Capabilities.Handlers
llsdItem.item_id = invItem.ID;
llsdItem.name = invItem.Name;
llsdItem.parent_id = invItem.Folder;
try
{
llsdItem.type = Utils.AssetTypeToString((AssetType)invItem.AssetType);
llsdItem.inv_type = Utils.InventoryTypeToString((InventoryType)invItem.InvType);
}
catch (Exception e)
{
m_log.ErrorFormat(
"[WEB FETCH INV DESC HANDLER]: Problem setting asset {0} inventory {1} types while converting inventory item {2}: {3}",
invItem.AssetType, invItem.InvType, invItem.Name, e.Message);
}
llsdItem.type = invItem.AssetType;
llsdItem.inv_type = invItem.InvType;
llsdItem.permissions = new LLSDPermissions();
llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid;
@@ -390,21 +438,7 @@ namespace OpenSim.Capabilities.Handlers
llsdItem.permissions.owner_mask = (int)invItem.CurrentPermissions;
llsdItem.sale_info = new LLSDSaleInfo();
llsdItem.sale_info.sale_price = invItem.SalePrice;
switch (invItem.SaleType)
{
default:
llsdItem.sale_info.sale_type = "not";
break;
case 1:
llsdItem.sale_info.sale_type = "original";
break;
case 2:
llsdItem.sale_info.sale_type = "copy";
break;
case 3:
llsdItem.sale_info.sale_type = "contents";
break;
}
llsdItem.sale_info.sale_type = invItem.SaleType;
return llsdItem;
}

View File

@@ -68,7 +68,13 @@ namespace OpenSim.Capabilities.Handlers
ServerUtils.LoadPlugin<ILibraryService>(libService, args);
WebFetchInvDescHandler webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService);
IRequestHandler reqHandler = new RestStreamHandler("POST", "/CAPS/WebFetchInvDesc/" /*+ UUID.Random()*/, webFetchHandler.FetchInventoryDescendentsRequest);
IRequestHandler reqHandler
= new RestStreamHandler(
"POST",
"/CAPS/WebFetchInvDesc/" /*+ UUID.Random()*/,
webFetchHandler.FetchInventoryDescendentsRequest,
"WebFetchInvDesc",
null);
server.AddStreamHandler(reqHandler);
}

View File

@@ -68,7 +68,10 @@ namespace OpenSim.Framework.Capabilities
/// <returns></returns>
public static object LLSDDeserialize(byte[] b)
{
return LLSDDeserialize(new MemoryStream(b, false));
using (MemoryStream ms = new MemoryStream(b, false))
{
return LLSDDeserialize(ms);
}
}
/// <summary>
@@ -78,21 +81,23 @@ namespace OpenSim.Framework.Capabilities
/// <returns></returns>
public static object LLSDDeserialize(Stream st)
{
XmlTextReader reader = new XmlTextReader(st);
reader.Read();
SkipWS(reader);
using (XmlTextReader reader = new XmlTextReader(st))
{
reader.Read();
SkipWS(reader);
if (reader.NodeType != XmlNodeType.Element || reader.LocalName != "llsd")
throw new LLSDParseException("Expected <llsd>");
if (reader.NodeType != XmlNodeType.Element || reader.LocalName != "llsd")
throw new LLSDParseException("Expected <llsd>");
reader.Read();
object ret = LLSDParseOne(reader);
SkipWS(reader);
reader.Read();
object ret = LLSDParseOne(reader);
SkipWS(reader);
if (reader.NodeType != XmlNodeType.EndElement || reader.LocalName != "llsd")
throw new LLSDParseException("Expected </llsd>");
if (reader.NodeType != XmlNodeType.EndElement || reader.LocalName != "llsd")
throw new LLSDParseException("Expected </llsd>");
return ret;
return ret;
}
}
/// <summary>

View File

@@ -0,0 +1,51 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using OpenMetaverse;
namespace OpenSim.Framework.Capabilities
{
[OSDMap]
public class LLSDAvatarPicker
{
public string next_page_url;
// an array of LLSDPerson
public OSDArray agents = new OSDArray();
}
[OSDMap]
public class LLSDPerson
{
public string username;
public string display_name;
//'display_name_next_update':d"1970-01-01T00:00:00Z"
public string legacy_first_name;
public string legacy_last_name;
public UUID id;
public bool is_display_name_default;
}
}

View File

@@ -0,0 +1,68 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenMetaverse;
namespace OpenSim.Framework.Capabilities
{
[OSDMap]
public class LLSDEnvironmentRequest
{
public UUID messageID;
public UUID regionID;
}
[OSDMap]
public class LLSDEnvironmentSetResponse
{
public UUID regionID;
public UUID messageID;
public Boolean success;
public String fail_reason;
}
public class EnvironmentSettings
{
/// <summary>
/// generates a empty llsd settings response for viewer
/// </summary>
/// <param name="messageID">the message UUID</param>
/// <param name="regionID">the region UUID</param>
public static string EmptySettings(UUID messageID, UUID regionID)
{
OSDArray arr = new OSDArray();
LLSDEnvironmentRequest msg = new LLSDEnvironmentRequest();
msg.messageID = messageID;
msg.regionID = regionID;
arr.Array.Add(msg);
return LLSDHelpers.SerialiseLLSDReply(arr);
}
}
}

View File

@@ -35,7 +35,7 @@ namespace OpenSim.Framework.Capabilities
public UUID folder_id;
public UUID parent_id;
public string name;
public string type;
public string preferred_type;
public int type;
public int preferred_type;
}
}

View File

@@ -37,8 +37,8 @@ namespace OpenSim.Framework.Capabilities
public UUID asset_id;
public UUID item_id;
public LLSDPermissions permissions;
public string type;
public string inv_type;
public int type;
public int inv_type;
public int flags;
public LLSDSaleInfo sale_info;
@@ -65,7 +65,7 @@ namespace OpenSim.Framework.Capabilities
public class LLSDSaleInfo
{
public int sale_price;
public string sale_type;
public int sale_type;
}
[OSDMap]

View File

@@ -39,12 +39,16 @@ namespace OpenSim.Framework.Capabilities
private LLSDMethod<TRequest, TResponse> m_method;
public LLSDStreamhandler(string httpMethod, string path, LLSDMethod<TRequest, TResponse> method)
: base(httpMethod, path)
: this(httpMethod, path, method, null, null) {}
public LLSDStreamhandler(
string httpMethod, string path, LLSDMethod<TRequest, TResponse> method, string name, string description)
: base(httpMethod, path, name, description)
{
m_method = method;
}
public override byte[] Handle(string path, Stream request,
protected override byte[] ProcessRequest(string path, Stream request,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
//Encoding encoding = Util.UTF8;
@@ -62,9 +66,7 @@ namespace OpenSim.Framework.Capabilities
TResponse response = m_method(llsdRequest);
Encoding encoding = new UTF8Encoding(false);
return encoding.GetBytes(LLSDHelpers.SerialiseLLSDReply(response));
return Util.UTF8NoBomEncoding.GetBytes(LLSDHelpers.SerialiseLLSDReply(response));
}
}
}

View File

@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Capabilities")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("http://opensimulator.org")]
[assembly: AssemblyProduct("OpenSim")]
[assembly: AssemblyCopyright("OpenSimulator developers")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7d1a55b1-8fab-42ff-9c83-066a9cc34d76")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.7.6.*")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.ConsoleClient")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("http://opensimulator.org")]
[assembly: AssemblyProduct("OpenSim")]
[assembly: AssemblyCopyright("OpenSimulator developers")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("8945df94-2e5e-475b-88fa-35a7cdde6fd7")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.7.6.*")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -44,13 +44,12 @@ namespace OpenSim.ConsoleClient
ReplyDelegate action)
{
WebRequest request = WebRequest.Create(requestUrl);
WebResponse response = null;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] buffer = new System.Text.ASCIIEncoding().GetBytes(data);
byte[] buffer = Encoding.ASCII.GetBytes(data);
int length = (int) buffer.Length;
request.ContentLength = length;
@@ -64,16 +63,18 @@ namespace OpenSim.ConsoleClient
{
string reply = String.Empty;
response = request.EndGetResponse(ar);
try
using (WebResponse response = request.EndGetResponse(ar))
{
StreamReader r = new StreamReader(response.GetResponseStream());
reply = r.ReadToEnd();
try
{
using (Stream s = response.GetResponseStream())
using (StreamReader r = new StreamReader(s))
reply = r.ReadToEnd();
}
catch (System.InvalidOperationException)
{
}
catch (System.InvalidOperationException)
{
}
}
action(requestUrl, data, reply);

View File

@@ -37,9 +37,8 @@ namespace OpenSim.Data
public abstract class AssetDataBase : IAssetDataPlugin
{
public abstract AssetBase GetAsset(UUID uuid);
public abstract void StoreAsset(AssetBase asset);
public abstract bool ExistsAsset(UUID uuid);
public abstract bool[] AssetsExist(UUID[] uuids);
public abstract List<AssetMetadata> FetchAssetMetadataSet(int start, int count);

View File

@@ -35,7 +35,7 @@ namespace OpenSim.Data
{
AssetBase GetAsset(UUID uuid);
void StoreAsset(AssetBase asset);
bool ExistsAsset(UUID uuid);
bool[] AssetsExist(UUID[] uuids);
List<AssetMetadata> FetchAssetMetadataSet(int start, int count);
void Initialise(string connect);
bool Delete(string id);

View File

@@ -29,7 +29,7 @@ using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.Region.Framework.Interfaces
namespace OpenSim.Data
{
public interface IEstateDataStore
{

View File

@@ -50,6 +50,7 @@ namespace OpenSim.Data
public interface IGridUserData
{
GridUserData Get(string userID);
GridUserData[] GetAll(string query);
bool Store(GridUserData data);
}
}

144
OpenSim/Data/IGroupsData.cs Normal file
View File

@@ -0,0 +1,144 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Collections.Generic;
using OpenSim.Data;
using OpenMetaverse;
namespace OpenSim.Data
{
public class GroupData
{
public UUID GroupID;
public Dictionary<string, string> Data;
}
public class MembershipData
{
public UUID GroupID;
public string PrincipalID;
public Dictionary<string, string> Data;
}
public class RoleData
{
public UUID GroupID;
public UUID RoleID;
public Dictionary<string, string> Data;
}
public class RoleMembershipData
{
public UUID GroupID;
public UUID RoleID;
public string PrincipalID;
}
public class PrincipalData
{
public string PrincipalID;
public UUID ActiveGroupID;
}
public class InvitationData
{
public UUID InviteID;
public UUID GroupID;
public UUID RoleID;
public string PrincipalID;
public Dictionary<string, string> Data;
}
public class NoticeData
{
public UUID GroupID;
public UUID NoticeID;
public Dictionary<string, string> Data;
}
public interface IGroupsData
{
// groups table
bool StoreGroup(GroupData data);
GroupData RetrieveGroup(UUID groupID);
GroupData RetrieveGroup(string name);
GroupData[] RetrieveGroups(string pattern);
bool DeleteGroup(UUID groupID);
int GroupsCount();
// membership table
MembershipData RetrieveMember(UUID groupID, string pricipalID);
MembershipData[] RetrieveMembers(UUID groupID);
MembershipData[] RetrieveMemberships(string pricipalID);
bool StoreMember(MembershipData data);
bool DeleteMember(UUID groupID, string pricipalID);
int MemberCount(UUID groupID);
// roles table
bool StoreRole(RoleData data);
RoleData RetrieveRole(UUID groupID, UUID roleID);
RoleData[] RetrieveRoles(UUID groupID);
bool DeleteRole(UUID groupID, UUID roleID);
int RoleCount(UUID groupID);
// rolememberhip table
RoleMembershipData[] RetrieveRolesMembers(UUID groupID);
RoleMembershipData[] RetrieveRoleMembers(UUID groupID, UUID roleID);
RoleMembershipData[] RetrieveMemberRoles(UUID groupID, string principalID);
RoleMembershipData RetrieveRoleMember(UUID groupID, UUID roleID, string principalID);
int RoleMemberCount(UUID groupID, UUID roleID);
bool StoreRoleMember(RoleMembershipData data);
bool DeleteRoleMember(RoleMembershipData data);
bool DeleteMemberAllRoles(UUID groupID, string principalID);
// principals table
bool StorePrincipal(PrincipalData data);
PrincipalData RetrievePrincipal(string principalID);
bool DeletePrincipal(string principalID);
// invites table
bool StoreInvitation(InvitationData data);
InvitationData RetrieveInvitation(UUID inviteID);
InvitationData RetrieveInvitation(UUID groupID, string principalID);
bool DeleteInvite(UUID inviteID);
void DeleteOldInvites();
// notices table
bool StoreNotice(NoticeData data);
NoticeData RetrieveNotice(UUID noticeID);
NoticeData[] RetrieveNotices(UUID groupID);
bool DeleteNotice(UUID noticeID);
void DeleteOldNotices();
// combinations
MembershipData RetrievePrincipalGroupMembership(string principalID, UUID groupID);
MembershipData[] RetrievePrincipalGroupMemberships(string principalID);
// Misc
}
}

View File

@@ -0,0 +1,59 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.Data
{
// This MUST be a ref type!
public class HGTravelingData
{
public UUID SessionID;
public UUID UserID;
public Dictionary<string, string> Data;
public HGTravelingData()
{
Data = new Dictionary<string, string>();
}
}
/// <summary>
/// An interface for connecting to the user grid datastore
/// </summary>
public interface IHGTravelingData
{
HGTravelingData Get(UUID sessionID);
HGTravelingData[] GetSessions(UUID userID);
bool Store(HGTravelingData data);
bool Delete(UUID sessionID);
void DeleteOld();
}
}

View File

@@ -0,0 +1,50 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Collections.Generic;
using OpenSim.Data;
using OpenMetaverse;
namespace OpenSim.Data
{
public class OfflineIMData
{
public UUID PrincipalID;
public UUID FromID;
public Dictionary<string, string> Data;
}
public interface IOfflineIMData
{
OfflineIMData[] Get(string field, string val);
long GetCount(string field, string key);
bool Store(OfflineIMData data);
bool Delete(string field, string val);
void DeleteOld();
}
}

View File

@@ -53,5 +53,6 @@ namespace OpenSim.Data
bool ReportAgent(UUID sessionID, UUID regionID);
PresenceData[] Get(string field, string data);
bool Delete(string field, string val);
bool VerifyAgent(UUID agentId, UUID secureSessionID);
}
}

View File

@@ -0,0 +1,58 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
namespace OpenSim.Data
{
public interface IProfilesData
{
OSDArray GetClassifiedRecords(UUID creatorId);
bool UpdateClassifiedRecord(UserClassifiedAdd ad, ref string result);
bool DeleteClassifiedRecord(UUID recordId);
OSDArray GetAvatarPicks(UUID avatarId);
UserProfilePick GetPickInfo(UUID avatarId, UUID pickId);
bool UpdatePicksRecord(UserProfilePick pick);
bool DeletePicksRecord(UUID pickId);
bool GetAvatarNotes(ref UserProfileNotes note);
bool UpdateAvatarNotes(ref UserProfileNotes note, ref string result);
bool GetAvatarProperties(ref UserProfileProperties props, ref string result);
bool UpdateAvatarProperties(ref UserProfileProperties props, ref string result);
bool UpdateAvatarInterests(UserProfileProperties up, ref string result);
bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result);
bool UpdateUserPreferences(ref UserPreferences pref, ref string result);
bool GetUserPreferences(ref UserPreferences pref, ref string result);
bool GetUserAppData(ref UserAppData props, ref string result);
bool SetUserAppData(UserAppData props, ref string result);
OSDArray GetUserImageAssets(UUID avatarId);
}
}

View File

@@ -52,14 +52,14 @@ namespace OpenSim.Data
public int sizeY;
/// <summary>
/// Return the x-coordinate of this region.
/// Return the x-coordinate of this region in region units.
/// </summary>
public int coordX { get { return posX / (int)Constants.RegionSize; } }
public int coordX { get { return (int)Util.WorldToRegionLoc((uint)posX); } }
/// <summary>
/// Return the y-coordinate of this region.
/// Return the y-coordinate of this region in region units.
/// </summary>
public int coordY { get { return posY / (int)Constants.RegionSize; } }
public int coordY { get { return (int)Util.WorldToRegionLoc((uint)posY); } }
public Dictionary<string, object> Data;
}
@@ -81,25 +81,11 @@ namespace OpenSim.Data
bool Delete(UUID regionID);
List<RegionData> GetDefaultRegions(UUID scopeID);
List<RegionData> GetDefaultHypergridRegions(UUID scopeID);
List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y);
List<RegionData> GetHyperlinks(UUID scopeID);
}
[Flags]
public enum RegionFlags : int
{
DefaultRegion = 1, // Used for new Rez. Random if multiple defined
FallbackRegion = 2, // Regions we redirect to when the destination is down
RegionOnline = 4, // Set when a region comes online, unset when it unregisters and DeleteOnUnregister is false
NoDirectLogin = 8, // Region unavailable for direct logins (by name)
Persistent = 16, // Don't remove on unregister
LockedOut = 32, // Don't allow registration
NoMove = 64, // Don't allow moving this region
Reservation = 128, // This is an inactive reservation
Authenticate = 256, // Require authentication
Hyperlink = 512 // Record represents a HG link
}
public class RegionDataDistanceCompare : IComparer<RegionData>
{
private Vector2 m_origin;

View File

@@ -0,0 +1,47 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.Data
{
/// <summary>
/// This interface exists to distinguish between the normal IAssetDataPlugin and the one used by XAssetService
/// for now.
/// </summary>
public interface IXAssetDataPlugin : IPlugin
{
AssetBase GetAsset(UUID uuid);
void StoreAsset(AssetBase asset);
bool[] AssetsExist(UUID[] uuids);
List<AssetMetadata> FetchAssetMetadataSet(int start, int count);
void Initialise(string connect);
bool Delete(string id);
}
}

118
OpenSim/Data/IXGroupData.cs Normal file
View File

@@ -0,0 +1,118 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.Data
{
public class XGroup
{
public UUID groupID;
public UUID ownerRoleID;
public string name;
public string charter;
public bool showInList;
public UUID insigniaID;
public int membershipFee;
public bool openEnrollment;
public bool allowPublish;
public bool maturePublish;
public UUID founderID;
public ulong everyonePowers;
public ulong ownersPowers;
public Dictionary<UUID, XGroupMember> members = new Dictionary<UUID, XGroupMember>();
public Dictionary<UUID, XGroupNotice> notices = new Dictionary<UUID, XGroupNotice>();
public XGroup Clone()
{
XGroup clone = (XGroup)MemberwiseClone();
clone.members = new Dictionary<UUID, XGroupMember>();
clone.notices = new Dictionary<UUID, XGroupNotice>();
foreach (KeyValuePair<UUID, XGroupMember> kvp in members)
clone.members[kvp.Key] = kvp.Value.Clone();
foreach (KeyValuePair<UUID, XGroupNotice> kvp in notices)
clone.notices[kvp.Key] = kvp.Value.Clone();
return clone;
}
}
public class XGroupMember
{
public UUID agentID;
public UUID groupID;
public UUID roleID;
public bool acceptNotices = true;
public bool listInProfile = true;
public XGroupMember Clone()
{
return (XGroupMember)MemberwiseClone();
}
}
public class XGroupNotice
{
public UUID groupID;
public UUID noticeID;
public uint timestamp;
public string fromName;
public string subject;
public string message;
public byte[] binaryBucket;
public bool hasAttachment;
public int assetType;
public XGroupNotice Clone()
{
XGroupNotice clone = (XGroupNotice)MemberwiseClone();
clone.binaryBucket = (byte[])binaryBucket.Clone();
return clone;
}
}
/// <summary>
/// Early stub interface for groups data, not final.
/// </summary>
/// <remarks>
/// Currently in-use only for regression test purposes.
/// </remarks>
public interface IXGroupData
{
bool StoreGroup(XGroup group);
XGroup GetGroup(UUID groupID);
Dictionary<UUID, XGroup> GetGroups();
bool DeleteGroup(UUID groupID);
}
}

View File

@@ -40,6 +40,11 @@ namespace OpenSim.Data
public UUID folderID;
public UUID agentID;
public UUID parentFolderID;
public XInventoryFolder Clone()
{
return (XInventoryFolder)MemberwiseClone();
}
}
public class XInventoryItem
@@ -64,6 +69,11 @@ namespace OpenSim.Data
public UUID avatarID;
public UUID parentFolderID;
public int inventoryGroupPermissions;
public XInventoryItem Clone()
{
return (XInventoryItem)MemberwiseClone();
}
}
public interface IXInventoryData
@@ -106,7 +116,22 @@ namespace OpenSim.Data
/// <returns>true if the delete was successful, false if it was not</returns>
bool DeleteItems(string[] fields, string[] vals);
bool MoveItem(string id, string newParent);
/// <summary>
/// Move an item to another folder.
/// </summary>
/// <returns>/returns>
/// <param name='id'>UUID of the item</param>
/// <param name='newParent'>UUID of the new parent folder.</param>
bool MoveItem(string id, string newParentFolderID);
/// <summary>
/// Move a folder to another folder.
/// </summary>
/// <returns>/returns>
/// <param name='id'>UUID of the item</param>
/// <param name='newParent'>UUID of the new parent folder.</param>
bool MoveFolder(string id, string newParentFolderID);
XInventoryItem[] GetActiveGestures(UUID principalID);
int GetAssetPermissions(UUID principalID, UUID assetID);
}

View File

@@ -160,17 +160,21 @@ namespace OpenSim.Data.MSSQL
@temporary, @create_time, @access_time, @creatorid, @asset_flags, @data)";
string assetName = asset.Name;
if (asset.Name.Length > 64)
if (asset.Name.Length > AssetBase.MAX_ASSET_NAME)
{
assetName = asset.Name.Substring(0, 64);
m_log.Warn("[ASSET DB]: Name field truncated from " + asset.Name.Length + " to " + assetName.Length + " characters on add");
assetName = asset.Name.Substring(0, AssetBase.MAX_ASSET_NAME);
m_log.WarnFormat(
"[ASSET DB]: Name '{0}' for asset {1} truncated from {2} to {3} characters on add",
asset.Name, asset.ID, asset.Name.Length, assetName.Length);
}
string assetDescription = asset.Description;
if (asset.Description.Length > 64)
if (asset.Description.Length > AssetBase.MAX_ASSET_DESC)
{
assetDescription = asset.Description.Substring(0, 64);
m_log.Warn("[ASSET DB]: Description field truncated from " + asset.Description.Length + " to " + assetDescription.Length + " characters on add");
assetDescription = asset.Description.Substring(0, AssetBase.MAX_ASSET_DESC);
m_log.WarnFormat(
"[ASSET DB]: Description '{0}' for asset {1} truncated from {2} to {3} characters on add",
asset.Description, asset.ID, asset.Description.Length, assetDescription.Length);
}
using (SqlConnection conn = new SqlConnection(m_connectionString))
@@ -221,17 +225,38 @@ namespace OpenSim.Data.MSSQL
// }
/// <summary>
/// Check if asset exist in m_database
/// Check if the assets exist in the database.
/// </summary>
/// <param name="uuid"></param>
/// <returns>true if exist.</returns>
override public bool ExistsAsset(UUID uuid)
/// <param name="uuids">The assets' IDs</param>
/// <returns>For each asset: true if it exists, false otherwise</returns>
public override bool[] AssetsExist(UUID[] uuids)
{
if (GetAsset(uuid) != null)
if (uuids.Length == 0)
return new bool[0];
HashSet<UUID> exist = new HashSet<UUID>();
string ids = "'" + string.Join("','", uuids) + "'";
string sql = string.Format("SELECT id FROM assets WHERE id IN ({0})", ids);
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
return true;
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
UUID id = DBGuid.FromDB(reader["id"]);
exist.Add(id);
}
}
}
return false;
bool[] results = new bool[uuids.Length];
for (int i = 0; i < uuids.Length; i++)
results[i] = exist.Contains(uuids[i]);
return results;
}
/// <summary>

View File

@@ -1,4 +1,4 @@
/*
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -55,7 +55,7 @@ namespace OpenSim.Data.MSSQL
return Delete(principalID.ToString(), friend);
}
public bool Delete(string principalID, string friend)
public override bool Delete(string principalID, string friend)
{
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
@@ -89,5 +89,11 @@ namespace OpenSim.Data.MSSQL
return DoQuery(cmd);
}
}
public FriendsData[] GetFriends(Guid principalID)
{
return GetFriends(principalID.ToString());
}
}
}

View File

@@ -50,7 +50,7 @@ namespace OpenSim.Data.MSSQL
{
}
public GridUserData Get(string userID)
public new GridUserData Get(string userID)
{
GridUserData[] ret = Get("UserID", userID);
@@ -60,5 +60,10 @@ namespace OpenSim.Data.MSSQL
return ret[0];
}
public GridUserData[] GetAll(string userID)
{
return base.Get(String.Format("UserID LIKE '{0}%'", userID));
}
}
}

View File

@@ -813,7 +813,7 @@ namespace OpenSim.Data.MSSQL
{
try
{
using (SqlCommand command = new SqlCommand("DELETE FROM inventoryfolders WHERE folderID=@folderID", connection))
using (SqlCommand command = new SqlCommand("DELETE FROM inventoryfolders WHERE folderID=@folderID and type=-1", connection))
{
command.Parameters.Add(database.CreateParameter("folderID", folderID));

View File

@@ -104,6 +104,11 @@ namespace OpenSim.Data.MSSQL
{
return SqlDbType.BigInt;
}
if (type == typeof(DateTime))
{
return SqlDbType.DateTime;
}
return SqlDbType.VarChar;
}

View File

@@ -100,5 +100,18 @@ namespace OpenSim.Data.MSSQL
return true;
}
public bool VerifyAgent(UUID agentId, UUID secureSessionID)
{
PresenceData[] ret = Get("SecureSessionID",
secureSessionID.ToString());
if (ret.Length == 0)
return false;
if(ret[0].UserID != agentId.ToString())
return false;
return true;
}
}
}

View File

@@ -37,6 +37,7 @@ using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using RegionFlags = OpenSim.Framework.RegionFlags;
namespace OpenSim.Data.MSSQL
{
@@ -314,6 +315,11 @@ namespace OpenSim.Data.MSSQL
return Get((int)RegionFlags.DefaultRegion, scopeID);
}
public List<RegionData> GetDefaultHypergridRegions(UUID scopeID)
{
return Get((int)RegionFlags.DefaultHGRegion, scopeID);
}
public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y)
{
List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID);

View File

@@ -49,6 +49,7 @@ namespace OpenSim.Data.MSSQL
// private static FileSystemDataStore Instance = new FileSystemDataStore();
private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static string LogHeader = "[REGION DB MSSQL]";
/// <summary>
/// The database manager
@@ -351,7 +352,8 @@ IF EXISTS (SELECT UUID FROM prims WHERE UUID = @UUID)
ScriptAccessPin = @ScriptAccessPin, AllowedDrop = @AllowedDrop, DieAtEdge = @DieAtEdge, SalePrice = @SalePrice,
SaleType = @SaleType, ColorR = @ColorR, ColorG = @ColorG, ColorB = @ColorB, ColorA = @ColorA, ParticleSystem = @ParticleSystem,
ClickAction = @ClickAction, Material = @Material, CollisionSound = @CollisionSound, CollisionSoundVolume = @CollisionSoundVolume, PassTouches = @PassTouches,
LinkNumber = @LinkNumber, MediaURL = @MediaURL
LinkNumber = @LinkNumber, MediaURL = @MediaURL, AttachedPosX = @AttachedPosX, AttachedPosY = @AttachedPosY, AttachedPosZ = @AttachedPosZ, DynAttrs = @DynAttrs,
PhysicsShapeType = @PhysicsShapeType, Density = @Density, GravityModifier = @GravityModifier, Friction = @Friction, Restitution = @Restitution
WHERE UUID = @UUID
END
ELSE
@@ -366,7 +368,8 @@ ELSE
PayPrice, PayButton1, PayButton2, PayButton3, PayButton4, LoopedSound, LoopedSoundGain, TextureAnimation, OmegaX,
OmegaY, OmegaZ, CameraEyeOffsetX, CameraEyeOffsetY, CameraEyeOffsetZ, CameraAtOffsetX, CameraAtOffsetY, CameraAtOffsetZ,
ForceMouselook, ScriptAccessPin, AllowedDrop, DieAtEdge, SalePrice, SaleType, ColorR, ColorG, ColorB, ColorA,
ParticleSystem, ClickAction, Material, CollisionSound, CollisionSoundVolume, PassTouches, LinkNumber, MediaURL
ParticleSystem, ClickAction, Material, CollisionSound, CollisionSoundVolume, PassTouches, LinkNumber, MediaURL, AttachedPosX, AttachedPosY, AttachedPosZ, DynAttrs,
PhysicsShapeType, Density, GravityModifier, Friction, Restitution
) VALUES (
@UUID, @CreationDate, @Name, @Text, @Description, @SitName, @TouchName, @ObjectFlags, @OwnerMask, @NextOwnerMask, @GroupMask,
@EveryoneMask, @BaseMask, @PositionX, @PositionY, @PositionZ, @GroupPositionX, @GroupPositionY, @GroupPositionZ, @VelocityX,
@@ -376,7 +379,8 @@ ELSE
@PayPrice, @PayButton1, @PayButton2, @PayButton3, @PayButton4, @LoopedSound, @LoopedSoundGain, @TextureAnimation, @OmegaX,
@OmegaY, @OmegaZ, @CameraEyeOffsetX, @CameraEyeOffsetY, @CameraEyeOffsetZ, @CameraAtOffsetX, @CameraAtOffsetY, @CameraAtOffsetZ,
@ForceMouselook, @ScriptAccessPin, @AllowedDrop, @DieAtEdge, @SalePrice, @SaleType, @ColorR, @ColorG, @ColorB, @ColorA,
@ParticleSystem, @ClickAction, @Material, @CollisionSound, @CollisionSoundVolume, @PassTouches, @LinkNumber, @MediaURL
@ParticleSystem, @ClickAction, @Material, @CollisionSound, @CollisionSoundVolume, @PassTouches, @LinkNumber, @MediaURL, @AttachedPosX, @AttachedPosY, @AttachedPosZ, @DynAttrs,
@PhysicsShapeType, @Density, @GravityModifier, @Friction, @Restitution
)
END";
@@ -527,43 +531,53 @@ ELSE
/// <returns></returns>
public double[,] LoadTerrain(UUID regionID)
{
double[,] terrain = new double[(int)Constants.RegionSize, (int)Constants.RegionSize];
terrain.Initialize();
double[,] ret = null;
TerrainData terrData = LoadTerrain(regionID, (int)Constants.RegionSize, (int)Constants.RegionSize, (int)Constants.RegionHeight);
if (terrData != null)
ret = terrData.GetDoubles();
return ret;
}
// Returns 'null' if region not found
public TerrainData LoadTerrain(UUID regionID, int pSizeX, int pSizeY, int pSizeZ)
{
TerrainData terrData = null;
string sql = "select top 1 RegionUUID, Revision, Heightfield from terrain where RegionUUID = @RegionUUID order by Revision desc";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
// MySqlParameter param = new MySqlParameter();
cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionID));
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
int rev;
if (reader.Read())
// MySqlParameter param = new MySqlParameter();
cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionID));
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
MemoryStream str = new MemoryStream((byte[])reader["Heightfield"]);
BinaryReader br = new BinaryReader(str);
for (int x = 0; x < (int)Constants.RegionSize; x++)
int rev;
if (reader.Read())
{
for (int y = 0; y < (int)Constants.RegionSize; y++)
{
terrain[x, y] = br.ReadDouble();
}
rev = (int)reader["Revision"];
byte[] blob = (byte[])reader["Heightfield"];
terrData = TerrainData.CreateFromDatabaseBlobFactory(pSizeX, pSizeY, pSizeZ, rev, blob);
}
rev = (int)reader["Revision"];
else
{
_Log.Info("[REGION DB]: No terrain found for region");
return null;
}
_Log.Info("[REGION DB]: Loaded terrain revision r" + rev);
}
else
{
_Log.Info("[REGION DB]: No terrain found for region");
return null;
}
_Log.Info("[REGION DB]: Loaded terrain revision r" + rev);
}
}
return terrain;
return terrData;
}
// Legacy entry point for when terrain was always a 256x256 hieghtmap
public void StoreTerrain(double[,] ter, UUID regionID)
{
StoreTerrain(new HeightmapTerrainData(ter), regionID);
}
/// <summary>
@@ -571,10 +585,8 @@ ELSE
/// </summary>
/// <param name="terrain">terrain map data.</param>
/// <param name="regionID">regionID.</param>
public void StoreTerrain(double[,] terrain, UUID regionID)
public void StoreTerrain(TerrainData terrData, UUID regionID)
{
int revision = Util.UnixTimeSinceEpoch();
//Delete old terrain map
string sql = "delete from terrain where RegionUUID=@RegionUUID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
@@ -587,17 +599,23 @@ ELSE
sql = "insert into terrain(RegionUUID, Revision, Heightfield) values(@RegionUUID, @Revision, @Heightfield)";
int terrainDBRevision;
Array terrainDBblob;
terrData.GetDatabaseBlob(out terrainDBRevision, out terrainDBblob);
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionID));
cmd.Parameters.Add(_Database.CreateParameter("@Revision", revision));
cmd.Parameters.Add(_Database.CreateParameter("@Heightfield", serializeTerrain(terrain)));
conn.Open();
cmd.ExecuteNonQuery();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionID));
cmd.Parameters.Add(_Database.CreateParameter("@Revision", terrainDBRevision));
cmd.Parameters.Add(_Database.CreateParameter("@Heightfield", terrainDBblob));
conn.Open();
cmd.ExecuteNonQuery();
}
}
_Log.Info("[REGION DB]: Stored terrain revision r " + revision);
_Log.InfoFormat("{0} Stored terrain revision r={1}", LogHeader, terrainDBRevision);
}
/// <summary>
@@ -675,7 +693,7 @@ VALUES
cmd.ExecuteNonQuery();
}
sql = "INSERT INTO [landaccesslist] ([LandUUID],[AccessUUID],[Flags]) VALUES (@LandUUID,@AccessUUID,@Flags)";
sql = "INSERT INTO [landaccesslist] ([LandUUID],[AccessUUID],[Flags],[Expires]) VALUES (@LandUUID,@AccessUUID,@Flags,@Expires)";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
@@ -1181,6 +1199,72 @@ VALUES
// }
#endregion
}
#region Environment Settings
public string LoadRegionEnvironmentSettings(UUID regionUUID)
{
string sql = "select * from [regionenvironment] where region_id = @region_id";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID));
conn.Open();
using (SqlDataReader result = cmd.ExecuteReader())
{
if (!result.Read())
{
return String.Empty;
}
else
{
return Convert.ToString(result["llsd_settings"]);
}
}
}
}
public void StoreRegionEnvironmentSettings(UUID regionUUID, string settings)
{
{
string sql = "DELETE FROM [regionenvironment] WHERE region_id = @region_id";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID));
conn.Open();
cmd.ExecuteNonQuery();
}
sql = "INSERT INTO [regionenvironment] (region_id, llsd_settings) VALUES (@region_id, @llsd_settings)";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID));
cmd.Parameters.Add(_Database.CreateParameter("@llsd_settings", settings));
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
public void RemoveRegionEnvironmentSettings(UUID regionUUID)
{
string sql = "delete from [regionenvironment] where region_id = @region_id";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID));
conn.Open();
cmd.ExecuteNonQuery();
}
}
#endregion
/// <summary>
/// Loads the settings of a region.
/// </summary>
@@ -1215,6 +1299,8 @@ VALUES
//Store new values
StoreNewRegionSettings(regionSettings);
LoadSpawnPoints(regionSettings);
return regionSettings;
}
@@ -1252,7 +1338,7 @@ VALUES
,[elevation_1_ne] = @elevation_1_ne ,[elevation_2_ne] = @elevation_2_ne ,[elevation_1_se] = @elevation_1_se ,[elevation_2_se] = @elevation_2_se
,[elevation_1_sw] = @elevation_1_sw ,[elevation_2_sw] = @elevation_2_sw ,[water_height] = @water_height ,[terrain_raise_limit] = @terrain_raise_limit
,[terrain_lower_limit] = @terrain_lower_limit ,[use_estate_sun] = @use_estate_sun ,[fixed_sun] = @fixed_sun ,[sun_position] = @sun_position
,[covenant] = @covenant ,[covenant_datetime] = @covenant_datetime, [sunvectorx] = @sunvectorx, [sunvectory] = @sunvectory, [sunvectorz] = @sunvectorz, [Sandbox] = @Sandbox, [loaded_creation_datetime] = @loaded_creation_datetime, [loaded_creation_id] = @loaded_creation_id
,[covenant] = @covenant ,[covenant_datetime] = @covenant_datetime, [sunvectorx] = @sunvectorx, [sunvectory] = @sunvectory, [sunvectorz] = @sunvectorz, [Sandbox] = @Sandbox, [loaded_creation_datetime] = @loaded_creation_datetime, [loaded_creation_id] = @loaded_creation_id, [map_tile_id] = @TerrainImageID, [telehubobject] = @telehubobject, [parcel_tile_id] = @ParcelImageID
WHERE [regionUUID] = @regionUUID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
@@ -1263,6 +1349,7 @@ VALUES
cmd.ExecuteNonQuery();
}
}
SaveSpawnPoints(regionSettings);
}
public void Shutdown()
@@ -1272,30 +1359,6 @@ VALUES
#region Private Methods
/// <summary>
/// Serializes the terrain data for storage in DB.
/// </summary>
/// <param name="val">terrain data</param>
/// <returns></returns>
private static Array serializeTerrain(double[,] val)
{
MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) * sizeof(double));
BinaryWriter bw = new BinaryWriter(str);
// TODO: COMPATIBILITY - Add byte-order conversions
for (int x = 0; x < (int)Constants.RegionSize; x++)
for (int y = 0; y < (int)Constants.RegionSize; y++)
{
double height = val[x, y];
if (height == 0.0)
height = double.Epsilon;
bw.Write(height);
}
return str.ToArray();
}
/// <summary>
/// Stores new regionsettings.
/// </summary>
@@ -1367,7 +1430,7 @@ VALUES
newSettings.TerrainRaiseLimit = Convert.ToDouble(row["terrain_raise_limit"]);
newSettings.TerrainLowerLimit = Convert.ToDouble(row["terrain_lower_limit"]);
newSettings.UseEstateSun = Convert.ToBoolean(row["use_estate_sun"]);
newSettings.Sandbox = Convert.ToBoolean(row["sandbox"]);
newSettings.Sandbox = Convert.ToBoolean(row["Sandbox"]);
newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]);
newSettings.SunPosition = Convert.ToDouble(row["sun_position"]);
newSettings.SunVector = new Vector3(
@@ -1383,6 +1446,11 @@ VALUES
newSettings.LoadedCreationID = "";
else
newSettings.LoadedCreationID = (String)row["loaded_creation_id"];
newSettings.TerrainImageID = new UUID((string)row["map_tile_ID"]);
newSettings.ParcelImageID = new UUID((Guid)row["parcel_tile_ID"]);
newSettings.TelehubObject = new UUID((Guid)row["TelehubObject"]);
return newSettings;
}
@@ -1454,6 +1522,13 @@ VALUES
}
newData.ParcelAccessList = new List<LandAccessEntry>();
newData.MediaDescription = (string)row["MediaDescription"];
newData.MediaType = (string)row["MediaType"];
newData.MediaWidth = Convert.ToInt32((((string)row["MediaSize"]).Split(','))[0]);
newData.MediaHeight = Convert.ToInt32((((string)row["MediaSize"]).Split(','))[1]);
newData.MediaLoop = Convert.ToBoolean(row["MediaLoop"]);
newData.ObscureMusic = Convert.ToBoolean(row["ObscureMusic"]);
newData.ObscureMedia = Convert.ToBoolean(row["ObscureMedia"]);
return newData;
}
@@ -1468,7 +1543,7 @@ VALUES
LandAccessEntry entry = new LandAccessEntry();
entry.AgentID = new UUID((Guid)row["AccessUUID"]);
entry.Flags = (AccessList)Convert.ToInt32(row["Flags"]);
entry.Expires = 0;
entry.Expires = Convert.ToInt32(row["Expires"]);
return entry;
}
@@ -1497,7 +1572,8 @@ VALUES
prim.TouchName = (string)primRow["TouchName"];
// permissions
prim.Flags = (PrimFlags)Convert.ToUInt32(primRow["ObjectFlags"]);
prim.CreatorID = new UUID((Guid)primRow["CreatorID"]);
//prim.CreatorID = new UUID((Guid)primRow["CreatorID"]);
prim.CreatorIdentification = (string)primRow["CreatorID"];
prim.OwnerID = new UUID((Guid)primRow["OwnerID"]);
prim.GroupID = new UUID((Guid)primRow["GroupID"]);
prim.LastOwnerID = new UUID((Guid)primRow["LastOwnerID"]);
@@ -1609,6 +1685,23 @@ VALUES
if (!(primRow["MediaURL"] is System.DBNull))
prim.MediaUrl = (string)primRow["MediaURL"];
if (!(primRow["AttachedPosX"] is System.DBNull))
prim.AttachedPos = new Vector3(
Convert.ToSingle(primRow["AttachedPosX"]),
Convert.ToSingle(primRow["AttachedPosY"]),
Convert.ToSingle(primRow["AttachedPosZ"]));
if (!(primRow["DynAttrs"] is System.DBNull))
prim.DynAttrs = DAMap.FromXml((string)primRow["DynAttrs"]);
else
prim.DynAttrs = new DAMap();
prim.PhysicsShapeType = Convert.ToByte(primRow["PhysicsShapeType"]);
prim.Density = Convert.ToSingle(primRow["Density"]);
prim.GravityModifier = Convert.ToSingle(primRow["GravityModifier"]);
prim.Friction = Convert.ToSingle(primRow["Friction"]);
prim.Restitution = Convert.ToSingle(primRow["Restitution"]);
return prim;
}
@@ -1667,7 +1760,6 @@ VALUES
baseShape.Media = PrimitiveBaseShape.MediaList.FromXml((string)shapeRow["Media"]);
}
return baseShape;
}
@@ -1691,7 +1783,8 @@ VALUES
taskItem.Name = (string)inventoryRow["name"];
taskItem.Description = (string)inventoryRow["description"];
taskItem.CreationDate = Convert.ToUInt32(inventoryRow["creationDate"]);
taskItem.CreatorID = new UUID((Guid)inventoryRow["creatorID"]);
//taskItem.CreatorID = new UUID((Guid)inventoryRow["creatorID"]);
taskItem.CreatorIdentification = (string)inventoryRow["creatorID"];
taskItem.OwnerID = new UUID((Guid)inventoryRow["ownerID"]);
taskItem.LastOwnerID = new UUID((Guid)inventoryRow["lastOwnerID"]);
taskItem.GroupID = new UUID((Guid)inventoryRow["groupID"]);
@@ -1782,7 +1875,7 @@ VALUES
parameters.Add(_Database.CreateParameter("terrain_raise_limit", settings.TerrainRaiseLimit));
parameters.Add(_Database.CreateParameter("terrain_lower_limit", settings.TerrainLowerLimit));
parameters.Add(_Database.CreateParameter("use_estate_sun", settings.UseEstateSun));
parameters.Add(_Database.CreateParameter("sandbox", settings.Sandbox));
parameters.Add(_Database.CreateParameter("Sandbox", settings.Sandbox));
parameters.Add(_Database.CreateParameter("fixed_sun", settings.FixedSun));
parameters.Add(_Database.CreateParameter("sun_position", settings.SunPosition));
parameters.Add(_Database.CreateParameter("sunvectorx", settings.SunVector.X));
@@ -1792,6 +1885,9 @@ VALUES
parameters.Add(_Database.CreateParameter("covenant_datetime", settings.CovenantChangedDateTime));
parameters.Add(_Database.CreateParameter("Loaded_Creation_DateTime", settings.LoadedCreationDateTime));
parameters.Add(_Database.CreateParameter("Loaded_Creation_ID", settings.LoadedCreationID));
parameters.Add(_Database.CreateParameter("TerrainImageID", settings.TerrainImageID));
parameters.Add(_Database.CreateParameter("ParcelImageID", settings.ParcelImageID));
parameters.Add(_Database.CreateParameter("TelehubObject", settings.TelehubObject));
return parameters.ToArray();
}
@@ -1859,6 +1955,7 @@ VALUES
parameters.Add(_Database.CreateParameter("LandUUID", parcelID));
parameters.Add(_Database.CreateParameter("AccessUUID", parcelAccessEntry.AgentID));
parameters.Add(_Database.CreateParameter("Flags", parcelAccessEntry.Flags));
parameters.Add(_Database.CreateParameter("Expires", parcelAccessEntry.Expires));
return parameters.ToArray();
}
@@ -1999,6 +2096,20 @@ VALUES
parameters.Add(_Database.CreateParameter("PassTouches", 0));
parameters.Add(_Database.CreateParameter("LinkNumber", prim.LinkNum));
parameters.Add(_Database.CreateParameter("MediaURL", prim.MediaUrl));
parameters.Add(_Database.CreateParameter("AttachedPosX", prim.AttachedPos.X));
parameters.Add(_Database.CreateParameter("AttachedPosY", prim.AttachedPos.Y));
parameters.Add(_Database.CreateParameter("AttachedPosZ", prim.AttachedPos.Z));
if (prim.DynAttrs.CountNamespaces > 0)
parameters.Add(_Database.CreateParameter("DynAttrs", prim.DynAttrs.ToXml()));
else
parameters.Add(_Database.CreateParameter("DynAttrs", null));
parameters.Add(_Database.CreateParameter("PhysicsShapeType", prim.PhysicsShapeType));
parameters.Add(_Database.CreateParameter("Density", (double)prim.Density));
parameters.Add(_Database.CreateParameter("GravityModifier", (double)prim.GravityModifier));
parameters.Add(_Database.CreateParameter("Friction", (double)prim.Friction));
parameters.Add(_Database.CreateParameter("Restitution", (double)prim.Restitution));
return parameters.ToArray();
}
@@ -2056,12 +2167,76 @@ VALUES
parameters.Add(_Database.CreateParameter("Media", s.Media.ToXml()));
}
return parameters.ToArray();
}
#endregion
#endregion
private void LoadSpawnPoints(RegionSettings rs)
{
rs.ClearSpawnPoints();
string sql = "SELECT Yaw, Pitch, Distance FROM spawn_points WHERE RegionUUID = @RegionUUID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", rs.RegionUUID.ToString()));
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
SpawnPoint sp = new SpawnPoint();
sp.Yaw = (float)reader["Yaw"];
sp.Pitch = (float)reader["Pitch"];
sp.Distance = (float)reader["Distance"];
rs.AddSpawnPoint(sp);
}
}
}
}
private void SaveSpawnPoints(RegionSettings rs)
{
string sql = "DELETE FROM spawn_points WHERE RegionUUID = @RegionUUID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", rs.RegionUUID));
conn.Open();
cmd.ExecuteNonQuery();
}
foreach (SpawnPoint p in rs.SpawnPoints())
{
sql = "INSERT INTO spawn_points (RegionUUID, Yaw, Pitch, Distance) VALUES (@RegionUUID, @Yaw, @Pitch, @Distance)";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", rs.RegionUUID));
cmd.Parameters.Add(_Database.CreateParameter("@Yaw", p.Yaw));
cmd.Parameters.Add(_Database.CreateParameter("@Pitch", p.Pitch));
cmd.Parameters.Add(_Database.CreateParameter("@Distance", p.Distance));
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
public void SaveExtra(UUID regionID, string name, string value)
{
}
public void RemoveExtra(UUID regionID, string name)
{
}
public Dictionary<string, string> GetExtra(UUID regionID)
{
return null;
}
}
}

View File

@@ -43,12 +43,12 @@ namespace OpenSim.Data.MSSQL
// private static readonly ILog m_log = LogManager.GetLogger(
// MethodBase.GetCurrentMethod().DeclaringType);
private MSSQLGenericTableHandler<XInventoryFolder> m_Folders;
private MSSQLFolderHandler m_Folders;
private MSSQLItemHandler m_Items;
public MSSQLXInventoryData(string conn, string realm)
{
m_Folders = new MSSQLGenericTableHandler<XInventoryFolder>(
m_Folders = new MSSQLFolderHandler(
conn, "inventoryfolders", "InventoryStore");
m_Items = new MSSQLItemHandler(
conn, "inventoryitems", String.Empty);
@@ -85,6 +85,7 @@ namespace OpenSim.Data.MSSQL
{
return m_Folders.Delete(field, val);
}
public bool DeleteFolders(string[] fields, string[] vals)
{
return m_Folders.Delete(fields, vals);
@@ -94,15 +95,22 @@ namespace OpenSim.Data.MSSQL
{
return m_Items.Delete(field, val);
}
public bool DeleteItems(string[] fields, string[] vals)
{
return m_Items.Delete(fields, vals);
}
public bool MoveItem(string id, string newParent)
{
return m_Items.MoveItem(id, newParent);
}
public bool MoveFolder(string id, string newParent)
{
return m_Folders.MoveFolder(id, newParent);
}
public XInventoryItem[] GetActiveGestures(UUID principalID)
{
return m_Items.GetActiveGestures(principalID);
@@ -114,7 +122,7 @@ namespace OpenSim.Data.MSSQL
}
}
public class MSSQLItemHandler : MSSQLGenericTableHandler<XInventoryItem>
public class MSSQLItemHandler : MSSQLInventoryHandler<XInventoryItem>
{
public MSSQLItemHandler(string c, string t, string m) :
base(c, t, m)
@@ -123,70 +131,163 @@ namespace OpenSim.Data.MSSQL
public bool MoveItem(string id, string newParent)
{
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
XInventoryItem[] retrievedItems = Get(new string[] { "inventoryID" }, new string[] { id });
if (retrievedItems.Length == 0)
return false;
cmd.CommandText = String.Format("update {0} set parentFolderID = @ParentFolderID where inventoryID = @InventoryID", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@ParentFolderID", newParent));
cmd.Parameters.Add(m_database.CreateParameter("@InventoryID", id));
cmd.Connection = conn;
conn.Open();
return cmd.ExecuteNonQuery() == 0 ? false : true;
UUID oldParent = retrievedItems[0].parentFolderID;
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = String.Format("update {0} set parentFolderID = @ParentFolderID where inventoryID = @InventoryID", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@ParentFolderID", newParent));
cmd.Parameters.Add(m_database.CreateParameter("@InventoryID", id));
cmd.Connection = conn;
conn.Open();
if (cmd.ExecuteNonQuery() == 0)
return false;
}
}
IncrementFolderVersion(oldParent);
IncrementFolderVersion(newParent);
return true;
}
public XInventoryItem[] GetActiveGestures(UUID principalID)
{
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = String.Format("select * from inventoryitems where avatarId = @uuid and assetType = @type and flags = 1", m_Realm);
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = String.Format("select * from inventoryitems where avatarId = @uuid and assetType = @type and flags = 1", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@uuid", principalID.ToString()));
cmd.Parameters.Add(m_database.CreateParameter("@type", (int)AssetType.Gesture));
cmd.Connection = conn;
conn.Open();
return DoQuery(cmd);
cmd.Parameters.Add(m_database.CreateParameter("@uuid", principalID.ToString()));
cmd.Parameters.Add(m_database.CreateParameter("@type", (int)AssetType.Gesture));
cmd.Connection = conn;
conn.Open();
return DoQuery(cmd);
}
}
}
public int GetAssetPermissions(UUID principalID, UUID assetID)
{
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = String.Format("select bit_or(inventoryCurrentPermissions) as inventoryCurrentPermissions from inventoryitems where avatarID = @PrincipalID and assetID = @AssetID group by assetID", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@PrincipalID", principalID.ToString()));
cmd.Parameters.Add(m_database.CreateParameter("@AssetID", assetID.ToString()));
cmd.Connection = conn;
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
using (SqlCommand cmd = new SqlCommand())
{
int perms = 0;
if (reader.Read())
cmd.CommandText = String.Format("select bit_or(inventoryCurrentPermissions) as inventoryCurrentPermissions from inventoryitems where avatarID = @PrincipalID and assetID = @AssetID group by assetID", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@PrincipalID", principalID.ToString()));
cmd.Parameters.Add(m_database.CreateParameter("@AssetID", assetID.ToString()));
cmd.Connection = conn;
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
perms = Convert.ToInt32(reader["inventoryCurrentPermissions"]);
int perms = 0;
if (reader.Read())
{
perms = Convert.ToInt32(reader["inventoryCurrentPermissions"]);
}
return perms;
}
return perms;
}
}
}
public override bool Store(XInventoryItem item)
{
if (!base.Store(item))
return false;
string sql = "update inventoryfolders set version=version+1 where folderID = @folderID";
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
conn.Open();
cmd.Parameters.AddWithValue("@folderID", item.parentFolderID.ToString());
IncrementFolderVersion(item.parentFolderID);
return true;
}
}
public class MSSQLFolderHandler : MSSQLInventoryHandler<XInventoryFolder>
{
public MSSQLFolderHandler(string c, string t, string m) :
base(c, t, m)
{
}
public bool MoveFolder(string id, string newParentFolderID)
{
XInventoryFolder[] folders = Get(new string[] { "folderID" }, new string[] { id });
if (folders.Length == 0)
return false;
UUID oldParentFolderUUID = folders[0].parentFolderID;
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = String.Format("update {0} set parentFolderID = @ParentFolderID where folderID = @folderID", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@ParentFolderID", newParentFolderID));
cmd.Parameters.Add(m_database.CreateParameter("@folderID", id));
cmd.Connection = conn;
conn.Open();
if (cmd.ExecuteNonQuery() == 0)
return false;
}
}
IncrementFolderVersion(oldParentFolderUUID);
IncrementFolderVersion(newParentFolderID);
return true;
}
public override bool Store(XInventoryFolder folder)
{
if (!base.Store(folder))
return false;
IncrementFolderVersion(folder.parentFolderID);
return true;
}
}
public class MSSQLInventoryHandler<T> : MSSQLGenericTableHandler<T> where T: class, new()
{
public MSSQLInventoryHandler(string c, string t, string m) : base(c, t, m) {}
protected bool IncrementFolderVersion(UUID folderID)
{
return IncrementFolderVersion(folderID.ToString());
}
protected bool IncrementFolderVersion(string folderID)
{
// m_log.DebugFormat("[MYSQL ITEM HANDLER]: Incrementing version on folder {0}", folderID);
// Util.PrintCallStack();
string sql = "update inventoryfolders set version=version+1 where folderID = @folderID";
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
conn.Open();
cmd.Parameters.AddWithValue("@folderID", folderID);
try
{
cmd.ExecuteNonQuery();
@@ -194,9 +295,11 @@ namespace OpenSim.Data.MSSQL
catch (Exception)
{
return false;
}
}
}
}
return true;
}
}
}
}

View File

@@ -61,5 +61,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly : AssemblyVersion("0.6.5.*")]
[assembly : AssemblyFileVersion("0.6.5.0")]
[assembly : AssemblyVersion("0.8.1.*")]

View File

@@ -331,4 +331,12 @@ ALTER TABLE dbo.estate_map ADD CONSTRAINT
COMMIT
:VERSION 10
BEGIN transaction
ALTER TABLE estate_settings ADD AllowLandmark tinyint NOT NULL default 1;
ALTER TABLE estate_settings ADD AllowParcelChanges tinyint NOT NULL default 1;
ALTER TABLE estate_settings ADD AllowSetHome tinyint NOT NULL default 1;
COMMIT;

Some files were not shown because too many files have changed in this diff Show More