* Code Cleanliness Fixes in LLClientView
* Using field instead of local variable for handlerUpdatePrimGroupRotation (if you notice any new oddities with prim group rotation after this patch, please mantis)
* This is done by sending a 'major interface version' number on sim registration. Developers must increment this every time they make a change that would make the previous
OpenSim revision failure incompatible with the new one (non-fatal incompatibilities are fine).
* This number resides in OpenSim.Framework.Servers.VersionInfo.MajorInterfaceVersion
* This allows the grid service to stop older, incompatible regions from connecting
* Implements the SendInitiateDownload method in IClientAPI
* Uses the ITerrainModule Interface to write a terrain file to disk then uses a FileStream to read the binary file from the disk and put it in a byte array. and save to the xFer list.
* It then tells the client to download the file and the client initiates an Xfer request.
* Items will now be locally cached for only 24 hours from last access. (Rather than until restart)
* Caveat: Implementing the new caching mechanism means statistics gathering on AssetCache is no longer functional. (Justin - you might want to take a look and see if you can somehow get that back and running if you still need it)
* This patch is highly experimental and may cause clients to not be able to connect, if this is the case, it will be rolled back in approximately 5 minutes.
* Introducing IClientCore - this will be the key replacement for IClientAPI in the long run, it has a very minimal set of methods designed to allow you to access specialist API's.
* See https://lists.berlios.de/pipermail/opensim-dev/2008-September/003049.html for the early discussion on this.
This patch introduces a couple of read-only properties,
so that I can grab the asset server plugin from a region
module. This is needed to set up an http service for
accessing standalone assets remotely.
on-/offline updates, calling cards for friends.
This adds methods in the DB layer and changes the MessagingServer, so a full
update (incl. UGAIM) is necessary to get it working. Older regions shouldn't
break, nor should older UGAIM break newer regions, but friends/presence will
only work with all concerned parts (UGAIM, source region and destination
region) at this revision (or later).
I added the DB code for MSSQL, too, but couldn't test that.
BEWARE: May contain bugs.
* This is to make things less confusing to users (and maybe a little easier to do future version filtering for grid connections)
* If there's disagreement about this, then please say so (preferably in the opensim-dev mailing list)
* Whilst this does automatically get the client to rebake, on crossing a region border the 'local' assets are left behind
* There may be a cunning solution (such as squirting the assets on region crossing, or having them fetched from the original region) but
instead I'm going to opt for the easy solution of keeping them in the asset database, for now
* And hopefully rebaking all the time should no longer be necessary now
* It turns out that when the client baked the texture, the uploaded asset had the Temporary flag to true (Temporary is actually deprecated).
* It also had the StoreLocal flag set to true, which signifies that the asset should be stored locally. If it disappears we should reply to the asset request with
ImageNotInDatabasePacket
* However, last time this was enabled some clients started crashing. This may well no longer be the case and needs to be tested, but in the mean time we will store
the asset instead.
* This needs to be resolved in a better way, possibly by starting to send the ImageNotInDatabase packet again instead
* This moves authentication from the client thread (where failure was difficult to detect) to the particular thread handling that packet
* I've kept the authentication outside of the crucial clientCircuits lock (though any delay here is probably swamped by the other delays associated with login)
* Also added more to the unit test to ensure this doesn't regress
KeepAlive for certain XmlRpc handlers.
Making use of new AddXmlRpcHandler method in RemoteAdminPlugin to
avoid clients waiting indefinitely for response.
taking note of BaseHttpServer parameter in CommunicationsManager
constructor (was passed it but then just ignored so far).
* Unix epoch starts at midnight, not at 8:00am
* All date/time handling should be done in UTC in the server, not in
the local timezone.
* Refactor out repeated computation of a constant value
- Added setting of CreationTime to some places where inventoryitems
are created
This fixes Mantis#2390.
Add rezzing time to objects. Add Object return and traffic fields to land
database. Add plumbing for auto return. Implement auto return.
Contains a migration. May contain nuts.
* This allows multiple user profile providers to be specified in OpenSim.ini separated by commas
* If multiple providers are specified then a request for a user profile will query each in turn until the profile is either found or all have been queried
* Unfortunately I don't believe this order can currently be specified, which if true is something that will need to be fixed.
* Thanks to smeans for the original patch.
- Added two missing caps (UpdateScriptAgent, UpdateScriptTask)
- Added one missing EventQueue event (ScriptRunningReply)
- Changed DNE and XEngine to use this new event
As we only use the mono engine anyway, the "Mono" checkbox is set by
default but doesn't have any function.
* I believe this is reasonable since code outside the Linden client stack shouldn't be aware of the packet format being used
* I would love to have made the method protected, but the LoadBalancerPlugin is still calling it and resolving that would require more work
* Region registration is enabled by default in the configuration unless the user chooses otherwise
* On the console
* show status - shows grid status
* enable-reg - enables region registration to the grid
* disable-reg - disables region registration
* Enabling or disabling region registration will not affect any other grid functions or regions already on the grid
* Experimenting with the PacketPool mechanism.
* It's still disabled in the code, however there's now a flag to enable it.
* Converted to use Generic Collections vs Hashtables, also now uses a list of 'OK to pool' packets, starting with the high volume PacketAck packet.
fields is GONE (HttpServer does not support that), you can read the
"normal" HTTP headers available via properties, and you can add
headers. also, it is now possible to set a timeout for KeepAlive (for
those clients that pay attention to it).
this also fixes the broken REST inventory/assets/appearance services,
they should be working again.
testcase for OSHttpResponse will follow.
* I believe this was the cause of the remaining packet_out_of_order messages in the Linden client logs
* There were race conditions where multiple clientstacks would overwrite each other's sequence numbers
Implementation of llModifyLand() and There is a bug on
permission-check of land-terraforming: x an y-coordinates
are interchanged on function-call ExternalChecksCanTerraformLand.
Correct: x is west, and y is north. 2) Missing check of
"Other allow to terraform-flag" (Parcel.ParcelFlags.AllowTerraform)
- Added lookup in the data-layer
- MySQL works
- SQLite doesn't have a grid-db, so it won't work there
- I added MSSQL-code to the best of my knowledge; but I don't know MSSQL :-)
- Added the plumbing up to OGS1GridServices. This speaks with the grid-server
via XMLRPC.
- Modified MapSearchModule to use the new data. It's backward compatible; if
used with an old grid-server, it just returns one found region instead of a
list.
- Refactored a bit.
Note: This updates data, grid-server and region code. No new files.
old way: each region module interested in chat from client had to
- subscribe to scene.EventManager.OnNewClient
- then in its OnNewClient delegate it would subscribe to
client.OnChatFromViewer to capture chat messages coming
new way: ChatModule is the only region module that uses the "old
way" approach but is now forwarding all client chat via
scene.EventManager.OnChatFromClient
- each region module interested in chat from client now only
subscribes to scene.EventManager.OnChatFromClient
this not only simplifies code, but also allows us to substitute
ChatModule with derived classes (ConciergeModule is going to be one
example).
Also, this changeset changes ChatFromViewer to ChatFromClient as it
doesn't necessarily have to be a viewer that is a chat source.
i've taken great care to only comment out those OnNewClient delegates
that were only used for getting at the client chat --- hope it's not
breaking anything.
* Switched it on by default
* Updated OpenSim.ini.example to reflect this
* Caught a UDP Server issue that occurs when the network pipe is saturated
* Still experimental :D
required to log in. set_login_params accepts avatar_uuid and password of a
user with god level 200 or more, and allows setting either or both the
login_motd or login_level
* This is a HUGE update.. and should be considered fraut with peril.
* SSL Mode isn't available *yet* but I'll work on that next.
* DrScofld is still working on a radical new thread pump scheme for this which will be implemented soon.
* This could break the Build! This could break your Grid!
* This is an initial basic experimental code for inventory import and export from the region server
* Probably not yet ready for general use
* Thanks Kayne!
Estate/ Manager Owner Uses the Region/Estate Menu Region TAB,
and uses "Teleport Home All Users..." (Action Button), the
action will complete but no one will be teleported and all
users still function in the region ok.
* returns FAKEEVENT instead of the connection returning a 502. It doesn't like our 502's for some reason.. so, in leau of this.. send it a fake event.
* Once again, this is still 'really early' code, so please don't blame us if you have no more threads left.
* This won't function yet as far as the client can tell.. because it doesn't respond to the first query with a 200 message.
* We have to figure out how to encode those binary values in the example code in the module...
* Committing this so we have a start point. Will continue to work on this more today.
* It seems kind of silly to be building a 256x256 array just to use two 16 float blocks.. but for now the layerdata routine requires it so we'll go along with that.
* We only fill a 32x16 area of the 256x256 float array with data.
* We use patches 0,0 and 0,1 for the first and second patch to determine the direction and magnitude of the wind.
Scene. Make the script engines check that the engine name in the
//Engine:language comment is a valid engine and treat it as a normal
comment if it's not.
//DotNetEngine: needs to be written as //ScriptEngine.DotNetEngine: now, since
that is it's real internal name. //XEngine: still works
Check the client dialog box (from top menu) WORLD / REGION ESTATE
/ REGION tab. The client dialog box seems to have a hard limit of
about 32 characters per line available for displaying the region
version number. Our regions are sending a string which is greater
than the limit, causing the client to wrap the text and look ugly.
* A little wind wouldn't hurt anyone, right? This is the 'slightly breezy' setting.. hopefully you won't notice 'much' of a difference.
* It turns out the terrain patch routine is similar enough to the wind version that it can be used to hack together a breeze generator with a few mods.
* Not much configuration.. yet. You only get breeze updates in the general vicinity of your camera now to keep bandwidth usage down.. and we're not talking about 'much' movement at the moment.
* initial version... could use improvement I'm sure.
Active gestures are sent as part of the login-response. Added
fetchActiveGestures to SQLite and MySQL; added an empty one for MSSQL and
NHibernate. Using the empty ones won't cause errors, but doesn't provide
persistence either, of course.
* There was a small window where region logins were allowed before modules were loaded - avatars logins that hit this window could have caused bad things to happen.
* A similar change will follow for grid mode sometime soon
* Monitors / for getting the seed cap for rez_avatar/request on application/llsd+xml && application/xml+llsd && !application/xml
* Experimental, this might break LibOMV temporarily.
* the methods were identical except that the Properties one did a check for the user profile beforehand. However, every caller was doing this already anyway.
* There are still a lot of things that are hard coded to use http. They need to be fixed.
* Also includes directions
* A standard junk PEM file to append to app_settings/CA.pem in the client so SSL will work
* This patch aims to introduce look at direction persistence between logins. It won't be active until the second part of the patch is committed in about two weeks time. At
this point, region servers that haven't upgraded past this revision may run into problems
* This checkin upgrades the user database. As always, we recommend you have backups in case something goes wrong.
* Many thanks to tyre for this patch.
patch is attached that replaces the o(n^2) algorithm currently
used to build the inventory cache with an o(n) algorithm using
hash tables. the patch also adds some additional error handling.
Floating text, Rotation, Texture animation, Particle System
This will make "Eye Candy" scripts work without modification in
XEngine. The use of the CHANGED_REGION_RESTART hack is no longer
needed. Implemented in MySQL only, hovertext also in SQLite.
* Now it should properly inform the user and stop a login if a region server could not be contacted in order to expect a user (the last commit didn't actually quite work correctly)
* These are different types then the OMV types because changing them causes just about all grid comms to break. If these were the libOMV types, then libOMV couldn't change them ever again after that.. or we'd have a breakage whenever they changed them.
* This might introduce a map issue. Still checking it out.
* This is a HUGE OMG update and will definitely have unknown side effects.. so this is really only for the strong hearted at this point. Regular people should let the dust settle.
* This has been tested to work with most basic functions. However.. make sure you back up 'everything' before using this. It's that big!
* Essentially we're back at square 1 in the testing phase.. so lets identify things that broke.
* You can replace "grid" as the asset system with "file" to save and load all your assets from a directory on your hard disk. Files are serialised to XML and saved in the format "/<dir>/0x/0x/0x/0000-0000-000000-0000-0000.xml"
* Directory <dir> is sharing the Asset Server URL path, use a normal path here instead (ie C:\xyz or /var/assets/).
* This probably wont work well in grid mode unless every sim has access to the same directory. This is mostly intended for standalone usage where quick and convenient access to assets is required.
no OpenSim.ini file found by GridInfoService. GridInfoService now will
just issue a warning that GridInfo will NOT be available to your users
if no OpenSim.ini file is available. due to the static nature of
UserConfig (configuration options hardcoded) i don't think it's currently
an option to move GridInfo into user_server.xml but if anyone wants to
look into this i'd be delighted...
* When OGP is active, disable SSL certificate chain validation. I'll add more options here to come, as well as a way to test against a group of known certificate subjects.
* There are a lot of changes and this is quite experimental. It's off by default, but you can turn it on by examining the bottom of the opensim.ini.example for the proper OpenSim.ini settings. Remember, you still need an agent domain..
* Furthermore, it isn't quite right when it comes to teleporting to remote regions (place_avatar)
This small patch provides the required changes to populate
the columns agentIP and agentPort in table "agents"
Tested with mysql (but should work for all supported db engines)
also enable LSLconformance on some texture functions as well.
Applied the part of the patch in Shared/.
The part for Common/ needs to be reworked to remove the reference
into Shared/
It is now possible to use module interfaces without referencing Scene.
Place those interfaces in OpenSim/Region/Interfaces. They may not
use any refs from OpenSim.Region.Environment as parameters.
This resolves a circular library ref introduced in r5949
as those all work with MySQL (and are in fact required it seems);
adds examples as well
- adds region_file_template functionality for the create_region XmlRpc
call of RemoteAdminPlugin
- cleans up and fixes typo in UserProfileData
the first part of gesture persistence.
----------------------------------------------------------
Attachments no longer vanish on walking crossing. Teleport is still
problematic, but will now be blocked with message "Inconsistent
attachment state" rather than losing the attachment. Detach to be
able to TP in that case.
Change user server to handle attachment assets record properly. Ensure
that attachments are not re-rezzed on region crossing. Persistence
will NOT WORK with earliser UGAI!!
Change region server to match.
* The primary immediate use is to provide a means of temporarily reducing log output on the console when executing console commands
* Changing the log level on the console is not permanent and does not affect the log information being put into OpenSim.log
* This could have been done by putting in a threshold level on the Console appeneder in OpenSim.exe.config and implementing config watching in the code.
* But I think that it's a little more user friendly to make this doable via the console.
Places touched:
- Added two events for in-packets to LLCLientView: RegionHandleRequest and
ParcelInfoRequest
- Added sending of two out-packets to LLCLientView: RegionIDAndHandleReply and
ParcelInfoReply.
- Scene handles the RegionHandleRequest, LandManagementModule the
ParcelInfoRequest
- Added inter-region request for LandData by RegionHandle and local position.
This was implemented as XML-RPC request. The returned LandData isn't
complete, it only contains the data necessary for answering the
ParcelInfoRequest
- Added new CAPS (0009) for RemoteParcelRequest and some methods for LandData
handling to LandManagementModule
- Added methods for fake parcelID creation and parsing to Util
- Fixed missing implementation of interface methods.
- Added new file:
OpenSim/Framework/Communications/Capabilities/LLSDRemoteParcelResponse.cs
NOTE: This is part of the patch, too.
Due to the many places touched, I would consider this patch as experimental.
the database is now intepreted as follows: low byte = user flags.
Next byte, low nibble: Deternines the text (Resident, Lifetime, etc)
shown. No customn text support yet.
Binary distributions of OpenSim are not able to get the version info because they lack the ../.svn/entries file. This file exists in the ./bin./svn directory, which would be in a binary distribution. The included patch changes the path from ../.svn/entries to .svn/entries, which allows the version information to be show in "help/about"
* This is being done by preventing close from being called twice on child agent closure (nres which would have been thrown are being swallowed).
* However, it should be possible to do much better cleanup on this code in the future
occasionally, but are fixed on restart (issue 1919).
This patch introduces the following changes:
1. when a user teleports out of Region A, remove that user's profile
from the Region A user profile cache
2. when a user crosses between regions out of Region A, remove that
user's profile from the Region A user profile cache
3. the user profile cache's session ID member can now be set (written),
and is updated each time a connection with a new avatar is established (ie: a
new avatar enters the region)
4. when a region server looks up a user profile and a cache miss
occurs, fetch the user profile from the user server first instead of
immediately returning null
Adds the new access semantics and the new flag (allow only age verified)
Plumbs in the abuse email address from sim to viewer. The other way around,
libomv appears to be lacking support for the data field in the packet.
Includes a migration, run prebuild!
* May resolves inventory problems that occur when the user moves between two regions`
* e.g. if the user moves to a second region, adds an inventory item, moves back to the original region then tries to manipulate that item
* Not yet implemented for teleport
- LLSDLoginMethod should error out in similar way to XMLRPC login for already logged in condition
- Have LLSDLoginMethod mirror the sequence of the XMLRPC for easier side by side compare
- Log messages report which process XML or LLSD generated them for easier debugging
NOTE: this code is work-in-progress, it's not live. it's so far
harmless and just wants to play. it should not bite anyone (yeah,
that's what they all say, i know...)
resending, timeouts, packet discarding. Add notification event for
packet discarding. Add priority scheduling for packet queues.
Add outgoing duplicate detection facility. Correct packet sequencing.
Make provisions for automatic server side throttle adjustments (comes
in next installment)
Add a test event handler (which would fire after a minute if a terrain packet hadn't been acked) to scene to handle the OnUnackedTerrain event, which currently just resends the terrain patch.
The idea of this packet tracking is for the region level application to be able to know if the client stack gave up on sending a packet.
* warning was:
OpenSim/Framework/EstateSettings.cs(277): warning CS0472: The result of comparing `libsecondlife.LLUUID' against null is always `false'. This operation is undocumented and it is temporary supported for compatibility reasons only
* coding style: space before flow control statements please! http://blogs.msdn.com/brada/articles/361363.aspx
Makes the estate dialog fully functional. Implements all client facing functionality. Moves estate data from estate_settings.xml, which is used to provide defaults, to the region data store. Creates one estate for each region, and places the region in it. Converts all region bans to estate bans.
HTTP method matching support. adapting OSHttpXmlRpcHandler
accordingly. dropping OSHttpXmlProcessor delegate in favour of good
old XmlRpcMethodHandler delegate (was the same signature).
* Potentially useful for diagnostics without needing to log in a client
* Packet queue statistics commented out for now pending a better way to cope with the information overload
Patch 7 of the region patches. Finish off the region parts of the estate dialog. Full user functionality. Terrain textures, heights, water, avatar counts, prim bonus, debug settings and region toggles can now be set from the dialog on a per-region basis. Estate stuff defaults to sane values where there are no defaults, to estate_settings.xml otherwise. Sun still b0rked :(
Make all of the toggles go live. Utilizes the new database table for almost everything. Remove lots of now unneeded settings from the EstateSettings class
Patch 5 in the region settings series. Adds a migration to ensure corrupted
data is purged and re-read from defaults. Some changes. Still no full
functionality
Changes the permissions module to make scripts permissive only when intended
Adds security checks to asset transfers to prevent hacked clients fron
requesting script sources.
Adds security checks to llClientView to verify all aspects of ownership
and permissions for inventory based script retrieval.
* This will work as long as those servers are actually registering any threads they use (does not include stuff plucked from the thread pool)
* command is now "show threads" rather than threads
The attached patch tries to read the SVN revision from local file
"svn_revision" before checking "../.svn/entries".
This allows simulators not running from the source tree to properly
display the SVN revision, if the installer generates the
"svn_revision" file.
UserManager.UpdateUserProfile(UserProfileData).
Adding UpdateUserProfile(UserProfileData) to IUserService interface.
Adding RemoteAdminPlugin.XmlRpcUpdateUserAccountMethod(...) to provide
a remote update capability.
* Migration should be automatic on sqlite and mysql
* Migration is not automatic on mssql, you will need to drop the invType column manually
* Migration should be fine, but as for any db change, I would recommend making sure you have backups before moving past this revision
And reverted CachedUserInfo back to revision 5262.
I don't think most of the inventory problems that people are reporting are due to these, but its easier to deal with one set of potential problems at a time, and I'm not going to get any time in the week to work on this anyway.
The Login service should now read/create new inventory on the inventory server that is set in a users profile.
Also added "Add-InventoryHost" console command to add a support for a new server to a region.
So it would be good if someone could test this. Set up the grid as normal, but then also run extra inventory server on a different computer (well actually it just has to be on a different network hostname, so one using "http://localhost:8004" and one using "http://127.0.0.1:8005" should work) then you need to manually edit the user profile database to set the new servers url in a user's "userInventoryURI" field.
Then on a region server, use the Add-InventoryHost to add the new server url (always include the full url, including http, but don't add a final /)
Login with that account and see if the inventory works.
Of course these needs to be made more user friendly.
TODO next is to make the login server read/write a users inventory from the correct server (the inventory url set in a userprofile)
On the region side, although not tested with multiple servers it should work if that inventory url was set, and the inventory servers urls have been added to the CommunicationsManager, using CommunicationsManager.AddInventoryService(string hostUrl)
* commented out [Obsolete(....)] attributes where no replacement feature
was available: if we want to attribute code that we think needs to be
reworked, we should define a new attribute and use that instead
(together with a little tool to retrieve all the attributed code then)
* commenting out unused variables
Currently module loading is done ad-hoc. I propose creating a simple
loader class that leverages Mono.Addins (and perhaps the new .NET
addins when they become available in mono). Attached is a basic
patch for review that compiles into HEAD, but doesn't yet replace
any existing ad-hoc loaders.
Fixes:
- Wearable icon and name sreset to default on copy/paste
- Cache is not updated when renaming/moving folders
- Partial refactor to make inventory less dependen on AssetBase having a "Name" field
- Add llGiveInventoryList() function
Add util functions to compress and uncompress strings.
Fixed a couple of modules so they use SceneCommunicationService rather than directly call functions on the CommsManager.
In function "ReadInExtraParamsBytes", parameter "data" is used without a boundary check.
if data.Length==0, an "out of index" exception will be thrown.
* Enables regular jpeg map images to be served directly from the region.
* EX: http://192.168.1.127:9000/index.php?method=regionImagecc4583cd269b41bfa525dd198e19a5c5
* This is actually HTTP server address + port + index.php?method=regionImage<REGIONUUID, no dashes>
* The Webmap image location gets printed on the console when the simulator starts up.
* JPEG data is cached so we only create the webjpeg once.
* This currently has various bugs which are more to do with the way its been hacked together than the feature itself (e.g. on save-oar, ghost prims will appear of the saved
contained items). These will be found and eliminated in subsequent patches.
* Not yet ready for use
* Only generates a new maptile after a refresh interval
* Maptile names have the UnixTimeSinceEpoch that they were generated and the regionUUID they're from, so you can know which ones are no longer necessary.
* Updates RegionInfo, so backup your /bin/Region/*.xml files.
* Implemented a hack so regions beyond the 10,000m range will show the map without having to click on the map before they'll start to show. The hack shows regions around the one you're in, but it won't show the one you're in.. you still need to click on the map to get that (not sure why yet). Additionally, the map still only shows pictures for regions that are hosted on the same instance (no change).
* Please feel free to comment if the periodic logging is causing you problems in some way - I'm loathe to add yet another switch to OpenSim.ini but will if it proves necessary
* This is the GC.GetTotalMemory() method, which I'm guessing does not include memory used by the VM (hence the memory usage reported in top on linux would be much higher)
* Unfortunately, there's some kludges with the Async manager and the llDetected functions that I have yet to decipher... so llDetected functions don't work with collision events at the moment....
having reached the intermediate level of .NET's XmlSudoku, i've
now figured out how to do deserialization using different
XmlSerializers (this stuff begins to grow on me, sigh).
[still not used code, work-in-progress]
* adding convenience property on OSHttpRequest.cs (from awebb)
having spent the last couple of days wrestling with .NET XmlSerializer
and trying to get it to do what is required by XMPP (RFC 3920 & 3921)
this is the preliminary result of that wrestling (you should see the
other guy!): XmppSerializer allows us to serialize Xmpp stanza (and
theoretically deserialize [or reify] them), XmppWriter helps avoiding
various gratuitous crap added in by off-the-shelf XmlSerializer.
this is currently not used anywhere but the plan is to use it for
at least an XMPPBridgeModule.
* You'll need to start-up the MessageingServer and set it up. It sets up like any of the other grid servers.
* All user presence data is kept in memory for speed, while the agent is online. That means if you shutdown the messaging server or the messaging server crashes, it forgets who's online/offline.
* Occasionally the region-cache will get stale if regions move around a lot. if it gets stale, run clear-cache on the messaging server console to clear the region cache.
* User tries to log-in but is already logged in. Userserver will send message to simulator user was in to log the user out there.
* From the UserServer, admin types 'logoff-user firstname lastname message'.
* Some regions may not get the message because they're not updated yet.
* Looks up UUIDNames for script time and colliders in a separate thread.
* Hopefully this'll allow you to look at top scripts on a region that has a lot of scripts without crashing your client thread.
llLoopSound sends out one packet to clients in view, so it doesn't work anymore
when clients enter later on, or the prim is modified in any way.
Solution: Stored sound data on prim, send full update instead.
llStartSound and llLoopSound now accept both LLUUIDs to a sound as well as object
inventory sound names. llStopSound clears prim data and sends full update.
If a request is made for an asset which is not in the cache yet,
but has already been requested by something else, queue up the
callbacks on that requester instead of swamping the asset server
with multiple requests for the same asset.
There's some oddness with the parcel counts, but if you can get past the oddness, you can return objects under an owner that you have permission to return.
Nothing huge, but the new button code for producing
a new script does well, but the script will not allow
for name change once created. It reverts back to new script.
i've added the OSHttpStatusCodes enumeration of HTTP status codes, have adapted
BaseHttpServer to use those.
then RestPlugin now has proper Failure handling returning proper HTTP status
codes. Regions/POSTHandler is work-in-progress.
* If a caller attempts to set PrimitiveBaseShape.ProfileCurve with a HollowShape or ProfileShape component which is not a valid enum, a warning is spat out and a default shape
subtituted
* This does not solve any underlying problem if we're missing some enum values (though it's not obvious what these are), but it should allow save-xml2/load-xml2 to be used
without causing invalid enum value related exceptions. The checks will also guard against badly behaved clients.
* This change alters the order of shape values in the xml, since it appears properties are serialized after fields (at least this is the case in mono). .net native
deserialization can cope with this it appears, though people manipulating xml manually may need to adapt (if there are any).
* This may be a good argument against relying on .net [de]serialization for our xml format.
provide OSHttpRequest and OSHttpResponse to our REST handler.
also, this adds proper RestPlugin.IsGod() checking against the X-OpenSim-Godkey
HTTP request header.
last, i added XML doc comments to RestPlugin.cs
the "if (request.UserAgent != null)" branch in the wrong place: as a result BaseHttpServer would not do
anything if the user agent header field was present....ARGH! BAAAAAAD.
You sure can. This change set restores pants (and the rest of the
default appearance) in grid mode. The
root issue had to do with serializing multi-faced textures to the
grid server. This also restores the lookup path through the avatar
factory module, as that seems the reasonable place to have it live.
Some clean up patches are coming later as well, plus testing on
standalone, but this should be in a good kicking around state for
grid users.
Fixes a bug in BaseRequestHandler.
If the length of the patter is equal to, or greater than, the length of
the actual request path, then an exception is thrown. System using is
added to support use of String.Empty. Exception is used to ensure most
efficient operation on (assumed to be most common) successful case.
This patch adds an additional handler to the existing BaseHttpServer.
It does not affect any of the existing behaviors except insofar as the
new handler may be selected.
It is selected first because its Agent-oriented nature means that it
should not be pre-empted. The new handler type is defined by IHttpAgentHandler
in Framework/Servers and has two interface methods: Match and Handle.
The Match function returns a boolean result based upon examination of
information presented in the User-Agent header.
The Handle function expects to get the request and response instances
associated with the flow. The handler is responsible for ALL activity
associated with the request except in the event of an unhandled exception,
in which case the HandleAgentRequest routine will generate a 500 status
message and close the stream.
There are two immediateley apparent (and VERY easy to implement)
improvements that could be made:
1. The Match call could be allowed to operate over the entire
request context., rather than just agent identity.
2. The Handler could return a boolean indication of whether or not
the request was actually handled, and if not, the remaining handler
mechanism could take a shot at it. This would eliminate issues
arising from pre-empted streams.
enhancing IStreamHandler and IStreamedHandler interfaces so that OSHttp{Request,Response} get passed in,
allowing RestHandlers to set response status code, redirections, etc.
* In theory, this should be a somewhat useless statistic since the user server will already have tried to use the inventory service to retrieve the avatar's skeleton. If this
fails, login is halted completely.
* Nonetheless I'm recording it anyway just to see whether it happens (yes, I'm too lazy to scan the logs...)
the attached patch set adds the (still work-in-progress but already
working) RestPlugin base class and the RestRegionPlugin code. we are using
XML serialization.
currently working:
GET /admin/regions/ -> returns UUID list of known regions
GET /admin/regions/<UUID> -> returns detailed region information
we'll be adding support for POST/DELETE/PUT and also for
/admin/regions/<UUID>/name etc.
* If the status cannot be retrieved, then the region startup will terminate.
* The aim of this is for earlier detection of situations where the region can send messages out but cannot accept incoming requests (often due to firewall issues)
* This is currently an extremely simplistic check which completely trusts whatever http uri is given by the region
* This contact may be problematic, though since the user service needs to be able to contact the region http uri, it doesn't seem unreasonable for the grid to have to be able to do so too at this stage
* This change will require a prebuild
* This is not functional anywhere, but is a incomplete proposed replacement class for IClientAPI. Assistance filling this out would be appreciated. Use IClientAPI.cs as a reference, but make sure not to copy it - instead rewrite and abstract.
This patch just tightens up console handling in BasOpenSimServer
and removes (or redirects) a couple of messages that were being issued
using Console.Writeline.
* Added back a sleep to the kick routine so users get a 'you have been logged off message' when they get kicked from the simulator for various reasons (like 'the simulator is going down')
* Linden client 1.19.1.4 appears to be happy using UDP for this request again, and Linden's own servers (1.21) don't appear to be supplying the CAPS version currently
* This should for now fix the bug where texture selection in the edit window both shows only already open textures, and later stops subsequent inventory requests from working.
The attached patch moves the sun module incrementally nearer where it
needs to be. Default behavior, i.e. no overriding configuration is to
match Second Life's diurnal/nocturnal rhythm.
All designated values are now sent to the client.There remain a couple
of unanswered questions about how this SHOULD be implemented though.
* Moved script errors to the debug channel.
* Typing '/2147483647 OK' results in a debug_channel message.
* Expanded the available parameters that are send-able through IClientAPI
* Fixed a bug with Terragen loader where it would do bad things on a non 256x256 sized terrain. Now loads the array correctly.
* Moved MapImageModule.cs to Modules/World/WorldMap
* Changed Location.RegionHandle to use Helpers.GetUlong instead of doing it ourselves.
* This should, in theory, let us make new servers with different protocols very easily (rather than the challenge we would have faced before).
* BREAKS LoadBalancing module for the moment.
* Commit 1/3 - Please dont attempt to update to this revision until all 3 are in.
* The resolution takes the form of not crashing the session if the folder the user is attempting to add already exists (e.g. there is one already with the same UUID).
* Printing out warnings instead
* Added new generic "Location" class to handle 2D integer locations. Going to use it to replace all RegionHandle and X,Y coordinate references throughout the entire project. You have been warned.
* Detaching from right clicking in world, detaches to your inventory.
* If you go up to a prim and attach it from in world, it appears in your inventory.
* Attachment placement is saved when you detach them.
* Choosing wear remembers your last attachment point from inventory.
* Wrote a method to update an inventory item's asset and sends the updated inventory item to the Client
* Wrote a recursive method to find the folder of a known existing inventory item.
* Removed a block on physics object position on creation. This might crash a region or two, let us know via Mantis if your region crashes because of a physics out of bounds error.
* Drop doesn't work. The menu item doesn't even come up. Don't know why :P.
* Now, if you own an item in a prim, you should be able to successfully drag it back into your inventory
* Temporarily, users which are not owners of the item cannot copy it, even if 'everyone can copy' is set
* This is pending fixes/implementation of upstream permission implementation
* Your friends can see your attachments now. People who appear in the sim after you've attached something can also see your attachments.
* You can position & rotate your attachments now. Positions do *not* save.
* You can detach attachments now the regular way.
* Attachments do not cross into other regions with you..(this isn't too far off)
* Updated ODE to not request terse updates on child prim.
* Now, emptying the trash should remove folders and the items they contain as well as items which were not in a subfolder.
* This will only work once both the region and grid servers have reached this revision.
* You may also need to clear your cache before this will work
* Refactoring to follow.
which will let you specify a connection string. Required
for Nhibernate, optional for sqlite (there is a sane default),
ignored for mysql and mssql until someone implements the
Iniatialise(string) method.
* On standalone, folders (and their items) should now be persistently deleted on trash emptying, as well as immediate child items
* An implementation for grid mode will follow.
Attached is a patch for adding the llGetSunDirection functionality. It was implemented by adding a parameter to estate settings for storing the sun position. The sun position is calculated and stored via the sun module everytime the client's sun position is updated. It was tested with several different srcipts on Linux and Windows
* This replaces the old behaviour of failing straight away, which could cause lost updates if the inventory service was slow in responding
* This is the first baby step to making all inventory requests behave this way, to reduce inventory lossage
the attached patch set is centered around RemoteAdminPlugin and focuses
mainly on making it more robust (i.e. more parameter checking and better
error reporting) but also we've re-implemented the LoadTerrain stuff that
got disabled during the terrain code reworking:
* missing PostInitialize() calls on region modules that were loaded
for regions created via RemoteAdmin's CreateRegion XmlRpc call
* re-implements RemoteAdmin's LoadTerrain XmlRpc call (probably lost
during the TerrainModule rework)
* adds lots more parameter checking and error reporting to RemoteAdmin
* adds a read-only property to RegionApplicationBase so that we can
access the CommsManager
* adds Exceptions to TerrainModule so that we get better error case
feedback (and can report more meaningful errors in turn)
* adds a CheckForTerrainUpdate() call to
TerrainModule.LoadFromFile() to make terrain changes effective
* adds TryGetCurrentScene(LLUUID) to SceneManager so that we can
retrieve Scenes not only by name but also by LLUUID
cheers,
dr scofield
* A much more significant fix is required to clean up the cache when a user moves out of a region, but really better handling of delayed inventory cache updates needs to be
written first, and possibly better affinity to cut down agent inventory requests when the move is between two regions hosted on the same server.
Linked objects won't scale together properly, only the root object scales.
This happens with scaling both up and down or inputting numbers in the edit dialog.
* Implements 'Teleport Home'
* User Server has to be updated for it to save your home in grid mode
* home position accuracy is in int because the grid comms ExpectUser method tries to convert to Uint and crashes if it gets a float. Added a convert to decimal in ExpectUser but to avoid a breaking change with old revisions, kept the save value in int for now. Eventually it needs to be a float, but lets release another incremental version before doing that.
* To make a landmark, you currently have to enable admin options in the advanced menu first. We're working on this.. however use the admin options solution in the mean time.
This patch makes the "Show in Search" checkbox on the viewer work. Additionally, I also discovered that show-in-search objects use the JointWheel flag, so this patch currently uses that flag. LibSL needs to add a flag to enum LLObject.ObjectFlags, "IncludeSearch = 32768" so we aren't using a legacy flag.
Additionally this patch also contains a small fix to BaseHTTPServer that lets the response content-type to be something other than text/html. For some reason this didn't get submitted with the DataSnapshot merge.
* This allows caps requests to be routed to regions where the agent is currently a root agent instead of the region that they logged into as it did previously.
* This fixes a wide variety of bugs related to 'can't do X once i've crossed a border'.
* The first seed cap request fails, the second one works. (this generates an error message on the console)
* Experimental.
ansgar and i have been working on an asterisk voice module that will allow
us to couple opensim with an asterisk VoIP gateway.
the patch below consists of
* AsteriskVoiceModule region module: alternative to the plain-vanilla
VoiceModule, will make XmlRpc calls out to an asterisk-opensim
frontend
* asterisk-opensim.py frontend, living in share/python/asterisk, takes
XmlRpc calls from the AsteriskVoiceModule
* account_update: to update/create a new SIP account (on
ProvisionVoiceAccountRequest)
* region_update: to update/create a new "region" conference call
(on ParcelVoiceInfo)
* a asterisk-opensim test client, living in share/python/asterisk, to
exercise astersik-opensim.py
this still does not give us voice in OpenSim, but it's another step on
this path...
* This is very early support which would only be triggered in a rather unlikely case (if the user server correctly received an inventory skeleton, but later on failed to return the whole inventory in a timely manner. Also, this only applies to the 1.19.1.4 client onwards
* Code cleanup and support for other failure cases (failure of inventory caching on region crossing, failure to actually add a folder/item, etc, should follow.
* Added license info to a few files it was missing from.
* Fleshed out the landbuy interfaces
* If you add '-helperuri http://127.0.0.1:9000/' to your list of parameters you tell the client to use when you start it up you can transfer ownership of parcels now in standalone. Structured gridmode requires a lot more work, see the documentation in the example money module. The example money module is not secure especially in standalone mode.
* A few things for testing.
* This makes a modification to the region registration with the grid server so that the region can send it a chosen password to identify itself. It will not cause any errors, if either one are not updated.
* This will reduce failures where the inventory server is simply slow
* Still need to properly inform the user if the inventory service has failed altogether
* A much larger race condition where the inventory request could be made before the region gets any data at all will also be fixed in the near future.
* This change also fixes a regression from two patches ago where items stopped appearing in standalone inventory
* This is required in order to work towards eliminating some inventory race conditions and to better deal with situations where a grid inventory server is slow or not responding.
* This patch adds support for saving a dynamically generated region to the filesystem (as a region xml file)
* Also adds some error checknig to make sure the dynamically generated region name, id or location are not already taken.
* Thanks Dr Scofield
* Several people have asked for a way to limit uploads, so I've decided to show people how to do this in the BetaGridLikeMoneyModule.
* Configure it in OpenSim.ini using the [Economy] header. See the bottom of the OpenSim.ini.example for more information.
* This also fleshes out the Economy API a bit more.
* Now properly dealing with prims which don't contain items - thanks to thomas for the patch which gave insight into this situation
* Also, an xml exception no longer crahes the client session
* Leaving in debugging lines in case there are further problems
* Not yet tested on Linux, though I'm just about to.
* Now you can drag an object from your inventory and give it to another avatar
* !!! Use at your own risk !!! Many things are unimplemented as of yet, including permissions (the person receiving your item can probably do absolutely everything with it)
* Also, items for the receiving end up in their root folder rather than the objects folder
* You will probably need to clear your client's cache before this will take effect
* The problem was that the underlying libsecondlife.AssetType was returning "primitive" rather than "object". This fix is in lieu of correcting/updating our libsecondlife.dll
* Sets the default estate parentID to 1.. which means that all regions are treated like private estates in the client as opposed to Linden Mainland. (no space server hiccup message). If that message annoys you and you want to get rid of it, set your parentEstateID to 1.
* This patch removes voice code into a region module. This required the implementation of events and other code to allow region modules to register their own caps handlers, and should allow different voice module implementations.
* CAVEAT: This does not provide complete voice support, it merely provides the hooks so that it can be plugged in.
* Introduced uint as field type
* Removed what should be superfluous Guid handling
* Introduced stub MySQLDataReader if we need to fix the Guid handling anyway
* (and Ansgar/Ansi)
* Fleshes out the voice stubs to better interact with the viewer CAPS requests - no actual voice support yet!
* In his own words
"the attached patch enhances the existing voice support by returning a proper voice account user and password and is preparing the config file so that we can specify a SIP server (not yet working). currently the SIP is hardcoded. the next step is to refactor voice support into a region module. working on that. "
* Added the new mapper to the mapper factory
* Made choice of mapper configurable
* This means, in hteory, that we can persist avatar appearance on MSSQL as well
* This update breaks inter-region communications, sorry.
* You will need to run prebuild.
Next, the good;
* This update solves the unexpected binary element when Linux simulators inform windows simulators and vice versa. So Linux Simulators and Windows simulators are 100% compatible again.
* This update introduces an Integer in the prim crossing method to tell the receiving simulator which XML method to use to load the prim that crossed the border. If the receiving prim doesn't support the method, the prim crossing fails and no prims are lost.
That being said, it's best to update all your simulators to this revision at once.
* You may also need to clear your cache before seeing any effect.
* These fixes may or may not affect inventory on the RC client.
* These fixes should make non-root folders work better, stop inventory failure on first login, allow trash to be emptied and make texture picker in object edit view work properly
* Fixes are 1) make initial root folder request wait for async inventory delivery, 2) deliver all folders in the initial login skeleton, not just the root child ones and 3) deal
with situations where we receive child folders from the inventory service before their parent is received.
Most likely doesn't really work in grid mode as the generated textures are marked as temporary and I don't think they are updated to the asset server. We have to either live with these textures being sent to the asset server, and manually clean them out from time to time or wait until there is some asset management system in place.
Also currently the texture is only generated at region startup, it is not updated after terraforming.
* This may resolve some current problems with non root child folders on standalone installations.
* A fix for the same problem in grid mode will come soon.
* This means that caps methods (editing scripts, poss map functions, etc) on non-home regions should now work with servers which are listening for http ports on a non default
(9000) port.
* If you are running a region server, this may only work properly once your grid server upgrades to this revision
* PLEASE NOTE: This shouldn't cause inter-region problems if one end of the connection hasn't upgraded to this revision. However if it does, the instability will persist until
the grid and region (and possibly all the region's neighbours) have upgraded to this revision.
* This revision also adds extra login related messages, both for success and failure conditions
* This may improve region memory usage
* This is a short-term response to a problem whereby some clients keep requesting the same texture even after we've sent it
* This treats the symptom rather than the cause.
* n can be adjusted by changing the constant at the top of UserTextureDownloadService if necessary
* We should not be using ASCII anywhere except for legacy compatibility reasons.
* A large number of UTF8 Encoders are being used in places where we should be using Util.StringToField instead. These have been tagged with // ENCODING FAULT
* This should fix Mantis#799 - Japanese Profile Text does not work.
* Should work in multi-region standalone and grid modes
* This should also solve other non-home region caps issues (map requests, RC client inventory requests, etc)
* We now pass CAPS information on to the destination region on region crossing, and set up a CAPS object when an agent becomes a master
* Current limitation is that this will only work if your http_listener_port is 9000
* This is a very early code cut (lots of bad practice, hard coding and inefficiency). However, I wanted to get this out there for feedback and my own sanity. Next few patches will clean up the mess.
* If a user logs in and they are noted as agentOnline. Set agentOnline = false and send a 'you're already logged in' message to the user asking them to wait 5 minutes. These 5 minutes are not enforced (because there's no foolproof interlock release yet without the grid operator getting a support call for every little sim crash). When the user gets the message, they can log-in immediately after it, but the user can expect weird results if they don't wait 5 minutes and log-in to the region they were in previously.
So this commit doesn't actually fix inventory in that client, it just stops the "loading" message being displayed forever next to a folder, and instead shows empty folders.
Next part will be to fill in the details of the items in the folders.
* Started OpenSim on SQLite to a mass of red 'unable to load prim' messages.
* If you are getting this message, after this update, when you start OpenSimulator, you'll get it one more time and then it'll work again.
Grass type is not persisted. Try to rez some grass several time to have different random grass types around, then immediately move a couple of them. Or restart the sim and logon again. You'll see all grass types reverted to a dull default one :-)
As per the suggestions in Mantis 687 (thanks Sakai) to resolve an exception
* This won't apply to any existing inventory tables you have, but shouldn't
cause any issues with old tables either
* Enabled new TerrainModule. (The king is dead, long live the king!)
* Use the console command: "script terrain save file.r32" / "script terrain load file.r32" to load/save terrain. Now uses the extension to determine file format.
* MANY of the old terrain features do not have a replacement function in the new module yet, this needs to be corrected, but has not been done so far. This being said, the new module is faster and more efficient and should be a good replacement.
converts Parse calls to TryParse
Replaces string.empty and lluuid.zero calls on user load to use real
values from DB (related to user profile save/load work. Finer grained patching)
appropriate names consisten with their use.
All done with all 94 handlers from handler001
through handler094. Hopefully we can move
forward without numbered handlers.
So anyway, it moves the Asset downloading (packet sending) to a module (AssetDownloadModule).
So now at last, AssetCache should be just dealing with fetching assets from the asset server and caching them.
* This might stop some client's constant requests for unfound textures, which is a candidate for the memory leak
* If a texture is not found then the "Image not found" texture will now be displayed clientside
* If it works, this should resolve mantis 676
* Non texture image requests do not receive this packet yet
* This will require a prebuild
* As such, only a request for a non cached asset, the response and failures show up now.
* I know lbsa71 only put these in not long ago, so if they are really still required, I think we should think whether we can move the default log4net level off 'Debug'
* This will show the packets waiting in each queue for each client logged into a region server
* These are displayed using 'show stats' on the region command line
* This is in pursuit of a memory leak.
* This will require a prebuild
* Resolve a bad logic bug in AssetCache.GetAsset()
* This may make some asset related things work better (possibly getting main map images will now be improved).
* This should stop the constant increase in the download requests statistics
* If you see stat numbers for download requests which are far from what you'd expect, please report
* This fixes some of the 'runaway downloads' problem but not all of it
* Also fix up logging messages so texture requests are reported as such rather than as assets
Patch provided by Openlifegrid.com
Adds locks around clientCircuits and clientCircuits_reverse Adds existance check on adding to clientCircuits for clients resending UseCircuit packet.
Adds locks around Clientmanager.m_clients for add/remove/tryGet calls
* This will make it more obvious if one accidentally starts one's region server in standalone rather than grid mode but then tries to login to a grid (as I am wont to do)
* We are now sending back a fault code (-32601) if no xmlrpc method is found rather than an ordinary message
* Converted all instances of "256" spotted to use RegionSize instead. Some approximations used for border crossings (ie 255.9f) are still using that value, but should be updated to use something based on RegionSize.
* Moving Terrain to a RegionModule, implemented ITerrainChannel and TerrainModule - nonfunctional, but will be soon.
* Made regions table name configurable (MSSQL only)
* Added a note in ini.example pointing out that the sql resources have to change if you change table names
* Removed duplicate picker method from GridData interface
[Provided by openlifegrid.com]
* Push asset update (invoked when clothing is altered) down into AgentAssetTransactions from Scene.Inventory.cs to join others
* I've tested that clothing creation and update still works, but please let me know if it suddently breaks for you.
* Add/correct comments
these two patches fixe the terrain load exception that occurs when
restarting OpenSim on PPC32 by making terrain loading endian clean.
it does NOT fix the client crash exception. need to hunt that one down.
'show assets' shows the current state of the asset cache (number of cached assets, requests, et c)
'clear-assets' forcibly re-initializes the asset cache thereby freeing all cached items.
'clear-assets' is not to be used lightly, as it probably introduces mem inconsistencies and doubling up of textures.
* Made Estate tools work for estate managers without needing to request admin status First
* Added code to make the Simulator version to be reported in the About box of the client
* Still not enough to solve the memory leak, though hopefully this is another step on the path
* All these changes are pretty temporary - this will be addressed with a more fundamental refactor in the future
* ParcelProperties are sent only when needed instead of on any movement
* Terse Updates and other temporary data packets are marked unreliable
* After a certain amount of users, the sim actually sends updates on things less
* Experimental
* Tested to 68 avatar with pCampBot (And it's surprising what actually causes the most lag.. the text chat!)
* The immediate upshot is that "show uptime" from the console will now show uptime on all server types (user, asset, grid, etc)
* DEV: This refactoring is far from complete - only just enough to makes the "show uptime" command common accross the servers. More is needed, but in this case it's somewhat like eating cabbage, which I prefer not to do all at once
* This may help with asset server mysql problems, since both the previous osgrid failures occurred when both a read and write were attempted in the same second
To use, see the appearance section in opensim.ini.example, set "persist = true", then add the correct connection string for your database.(see mysql-AvatarAppearance.sql in share folder for a example of the table mysql table structure).
This could possible be used in a very small grid, but would mean each region server would need to connect to the same mysql database.
But the work to move the code to one of the grid servers shouldn't be too much.
The ScriptDialogReply packet handler is a bit of a hack job. It is currently handled similar to ChatFromViewer, which will trigger the listen() event, however this is not exactly how LL's implementation works and will/can be fixed up later.
CONFIG SET section key value value value
CONFIG GET section key
CONFIG SAVE (it saves, but does it save correctly?:)
ScriptEngine will react correctly to any config change made while it is running.
Added option to try alternate UDP ports if the one configured is in use.
UDP packets are now bound to the actual outside IP address and hopefully won't "randomly" select IP on multihomed systems.
* You can type 'stats' at the REGION# prompt to get this information in grid or standalone mode
* Don't take these numbers as gospel yet, since for some reason textures displayed from inventory which require downloading from the server are being recorded as assets
rather than textures
* But I don't have any reason to believe they aren't broadly accurate.
* I've put these in so I can tell whether the high memory usage on regions is down to the asset/texture cache
* This will require a prebuild
* DEV: Only adds needed to be implemented since, as far as I can tell, assets cached are currently never released. For my part, seeing large cache memory numbers will
provoke me to think about doing something about this.
* DEV: Now switched to using a singleton to get the stats reporters rather than threading the object through various layers
* DEV: Will refactor the other server stats reporters to do this in one of the next commits
* The hooks are still plugged in too high at the asset server, but then next layer down is the database and this may be refactored soon.
* This change will requires a prebuild
* I intended to think about refactoring the servers to use this common base class, but temporary laziness won out.
* I'm leaving this here as a reminder/mind poke and for reasons of laziness (again)
* If people object to me leaving this kind of thing lying around, please say
* Typing 'stats' on the command line will given total number of successful logins today and yesterday
* A little bit more to come, probably
* Refactoring will follow next
* If you have Debian running, you should get a platform line that says, 'Found Debian!' when starting up your sim.
* If someone running Debian will confirm this does occur, that would be most helpful.
** If the region fails 3 times, then ChildAgentDataUpdates no longer get sent to that region
* Enabled Child_Get_Tasks in grid mode.
* When Child_Get_Tasks is enabled on neighbor regions, the neighbor region uses the client's draw distance to send out prim. This is a lot less likely to flood the client now since the ChildAgentDataUpdate contains both the throttle settings and the draw distance. This means that with this enabled, you can see prim in other regions in grid mode. Very experimental.
* On restart the latest save will be restored rather than the very first dragged in scripts
* Also add previously missed out database commits to separate prim inventory commit path (sigh)
for now. It doesn't build on new mono at the moment, and
isn't currently used. Please make sure this functions on
mono 1.2.6 prior to adding it back in for the main tree.
* Added a Logout message with a name on the console
* Added a *fixme* message to figure out why the current agent session is null
* After updating you may notice that there's a login <user> and also a logout<user>
Possibly solved startup crash.
Moved MySQL Commit() to inside each functions respective dataset access mutex because if not other threads would be waiting until function released mutex and modify the dataset before the function could commit
* This means that you can take an object from a region and rez it somewhere else, with its inventory intact.
* As for earlier, at this stage only scripts can be placed in inventory
* This isn't an efficient implementation, a better one will probably need to come along soonish
* Apologies, any sqlite databases created between r3069 and this change will now contain unfindable assets.
* But sqlite asset databases used previous to r3069 will now work again.
* This change may have been done on purpose, so it's not impossible it will be re-reverted
* Cleaned up copyright notices in AssemblyInfo.cs's
* Added Copyright headers to a bunch of files missing them
* Replaced several common string instances with a static constant to prevent reallocation of the same strings thousands of times. "" -> String.Empty is the first such candidate.
* Added PrimitiveBaseShapeTableMapper to show how it's done
NOTE: Nothing actually works yet - this code should be considered more of educational value until it's all wired together
* Don't forget, you need -loginuri *and* -loginpage
* Ex: -loginpage http://10.1.1.2:8002/?method=login -loginuri http://10.1.1.2:8002/
* The ?method=login is important, don't forget to add it
* If you customize your http_loginform.html file, be sure to keep the form post address as is.
namespace to mirror what is done with MySQL. This will require a
configuration change for people using SQLite for prims which is given
as an example in OpenSim.ini.example
* Added the web_login_key to the users table
* Added happy configurable http error message pages
* This update is large enough to have 'awe' value.. so backup your users or weep.
* Not tested on MSSQL, even though I added code to update the tables!
* I'm keeping it deactivated until some issues are resolved.
* I'm patching it in deactivated so the patch doesn't get outdated
* I've deactivated it by commenting out the handler for the application/xml+llsd content type.
* While I've tested this as much as possible on my setup and found the deactivated code doesn't cause any problems, consider this update experimental (event though it's deactivated)
* Estate managers get abilities like the region owner for now.
* Estate managers, you'll need to request server admin status to be able to activate the estate tools dialog (haven't figured out why this is the case yet)
* Switching from grid mode to standalone or switching grids will make the stored Estate Manager UUIDs not match up with a valid account so you'll see (waiting) listed there instead of a user until you reset them or go back to the grid you added them from.
* You can put UUIDs in those fields to give other users some ability to help manage a sim you own.
* Also started decoding the EstateOwnerMessage packet convolutions.
* The BlockingQueue exposes Contains so we can make sure we don't add a TextureSender to the queue if there's already one present
* introduced some TryGetValue and various code convention stuff
* You can add and remove a friend in grid mode now within the same simulator. It doesn't save yet.
* I got rid of Mr. OpenSim as a friend.. he bothers me /:b...
* This patch addresses a regression where 5 default textures, including the default "new prim" texture, would not be shown unless in viewer cache.
* Further, it supplies a new plywood texture as the base texture, which is purpose-made from locally photo-sourced material (means i took a picture and made it into a tile), which is closer in appearance and color to the Linden one.
* It changes the default new prim texture UUID to match the UUID generated by the viewer when "default" is clicked, which is a texture UUID hardcoded in some scripts as well, so it would cause compatibility issues if not addressed.
* The patch fixes a number of UUID duplications (same UUID for asset and inventory items) and capitalization issues in the XML files.
* It also includes new versions of 4 other textures, which were no longer loadable in grid mode.
* Charles, this will fix the red issue.
* Same situation, the first run updates the tables (and gives you a ton of red errors), the second run and everything works as expected.
are not displaying (which is why default cubes are coming up as grey plywood unless you happen to have that texture cached). These
were working before so they must have broken in the last month. Might be something to do with the fact that these identify (using file
under linux) as jpeg2000 files, while all the other working textures identify simply as data.
* PrimitiveBaseShape: The textures are now exposed as a 'TextureEntry Textures'; all serialization still using the 'byte[] TextureEntry' for backwards compatibility.
* Scene: Re-added AddTree, since the Tree type isn't gone from libsl, merely relocated.
* SAVE YOUR PRIM DATA, THIS MAKES CHANGES TO YOUR PRIMS TABLE
* The first time you run OpenSim after updating past this revision, you'll see a lot of Errors. Be calm, shutdown the simulator, and start it again and your prims table will be updated.
* MSSQL added the fields to the Initial CreateTable section, however, you'll need to add the fields to your prims table if you want it to persist.
This may not be the best solution in the long run, but should improve things for now.
This may also improve reliability when updating inventory item metadata (e.g. renaming an item) and in retrieving textures
for the main map view.
* This fixes a *bunch* of Mantis bugs related to the following
* -- Neighbouring simulators not appearing after relog
* -- Login to simulator only to be logged off by simulator.
* -- ThreadAbort
* -- Unable to shutdown circuitCode: x
Inventory contents retrieval and persistent region storage standalone now appear to work as well as they did before :)
This patch will not fix grid problems.
May be bugs present due to conversions I didn't spot.
I personally probably don't have any more time for this today. I'm also not entirely convinced this is the right way forward
so this might be a handy pause for thought. I'll also be delighted if I wake up tommorrow and everything is fine again.
Apply method to UUID crud in SqliteInventoryStore as an initial test
This appears now to successfully recover inventory upon login
This will almost certainly only work on standalone
* added Util.Clip(value, min, max)
* modified asset cache's numPackets calculation to use max packet size (600) instead of 1000
* removed a few magic numbers
* Added Incomplete Handling of the EstateCovenantRequest packet
* Added Incomplete Handling of the EstateOwnerMessageRequest.ChangeEstateCovenantid method
* Fixed a race condition with avatar animations
* I've fundamentally changed a few things, so this is experimental
* The routine that I used needs to be tested on Linux. I don't expect it to cause a problem, but hey, it might.
* Child agents are still not logged off properly, so when the first set time out, the second set get logged off also, on the second log in if the second login is initiated before the first one fully times out.
* Now sending South and East cords to the terrain editor..
* No new functionality from a user perspective
* Programming wise, there's enough information to get the select based terrain editor working in an upcoming revision.
* The AssetServerBase is now responsible for dequeueing, the server implementations merely recieves ProcessRequest( AssetRequest req )
* Catchall added around queue processing thread so thread won't abort on exceptions.
* Fixes weirdness when typing and sitting at the same time
* Should fix bug #32 (getting stuck in edit appearance pose)
* Crouchwalk and possibly jump may need more looking into
Refractored the TextureDownloadModule (but currently to make debugging easier, it is running as a non shared module, so this results in a instance of this module being created for each region (and a extra thread per region), this will be changed back soon.
Removed the old texture handling/sending code from AssetCache.
A few other small changes/fixes.
* Added List<RegionInfo> m_neighbours to Scene
* Hooked up the OnRegionUp event to m_neighbours list
* Modified RegionInfo to have a bool commFailTF value so that we can skip neighbors that fail. (when the region comes up, this gets reset to false and the region will try again.
* Added SetChildAgentThrottle(byte[]) to IClientAPI
* Several other insignificant changes related to passing child pertanant agent data from sim to sim.
This corrects an off by one mistake in my previous patch - with this patch
the user root inventory folder should once again be correctly returned
under sqlite.
This was done correctly for mysql and mssql, my only (feeble) defence is
that with sqlite the code was a little different and I was eliminating
clauses rather than slightly modifying them.
* Will be using this glue Tomorrow/today to tell other regions what the agent's draw distance is and what region they're actually in so the region can make decisions on what prim to send, if any.