requests from that same user, even after a relog.
This patch changes the block on further requests to be in line with the
request timeout timer and allows the system to recover.
* Made various changes to BaseHttpServer to accommodate the new interfaces.
* This version has been significantly re-architected and may fail in unusual and insidious ways.
* Please pay attention to any errors you get and post a Mantis if you can reproduce an issue with the HTTPServer. I'm including the pdb and having the http server compiled in debug for a few weeks so that when an error occurs, it'll print the pertenant data.
* Once again, this is the full C# WebServer, not the lite branch that is included in LibOMV (we need SSL!)
This patch fixes a problem in the RestXmlWriter where an exception may be
thrown when ToString() is called. ToString() is closing the last tag prior
to returning the string object, which it shouldn't do. People should be
closing the XML tags and document properly and not rely on the ToString()
side effect to do it for them. This is most noticeable if you hit
the /regions/ and /regioninfo/ REST calls. If you are running r9579 or
later, these calls will result in an error.
* Test for prim obstructions between the avatar and camera. If there are obstructions, inform the client to move the camera closer. This makes it so that walls and objects don't obstruct your view while you're moving around. Try walking inside a hollowed tori. You'll see how much easier it is now because your camera automatically moves closer so you can still see.
* Created a way to know if the user's camera is alt + cammed or just following the avatar.
* Changes IClientAPI interface by adding SendCameraConstraint(Vector4 CameraConstraint)
This involved adding a new OnUpdatePrimSingleRotationPosition event to IClientAPI so that we can get the changed position from the client.
Btw adding new events to IClientAPI is really tedious where you have to copy the change across to at least 5 or 6 other files.
[Note this doesn't fix the bug where any rotation changes to the root prim (but not the whole linkset) cause rotation errors on the child prims.]
* Remove the draconic locking around adding an avatar to the Scene
* Handle an extreme error case when border crossing fails and user uses map to teleport to a different region on the same instance causing control commands to go to a child agent.
* Make the Set Appearance method use the proper 'remove from physics scene' method.
* It *may* help border crossings.
* It *may* help the 'on avatar rez' lag, that people have been seeing the past week.
* It may also cause physics to crash more often on failed teleports (though.. I think I got the cases covered).
This fix re-introduces a small tilt into the capsule to prevent
avatar falling through terrain. Re-introduction of the tilt means
that some direction-dependent behavior when walking over prims, but
I have tried to minimize this.
Additionally this commit allows the capsule to wobble slightly when
being pushed around the terrain. This should make walking over prims
easier, as the capsule can wobble and glide diagonally over the prim's
edge, instead of rigidly being stopped vertically against the prim's
face.
this commit finally adds the VivoxVoiceModule: it supports positional
as well as conference call type voice (currently only per region
server), region and parcel voice, speaker indication (LL client
family), direct avtar-to-avatar voice chat. NOTE: you need to obtain
an customer admin account from Vivox to be able to use this module ---
DON'T ask me about how to about an admin account, i've NO clue, we
just wrote this code.
The vector parameter to llSetPos() specifies an absolute position for
an unlinked prim or the root prim of a linkset; however, when the
function is used by a child prim, the vector specifies a relative
offset from the root prim. The changed introduced in llSetPos() treats
this value as an absolute position in all cases, which has the unintended
effect of mangling the position of child prims.
This add a configuration option to the MRM module called "hidden".
if MRM is marked as enabled, the module will additionally check for
the "Hidden" flag, before registering for client side scriping events.
When MRM is running hidden, it will not respond to client side
scripting events, giving serverside scripting modules, like MRMLoader
and MRMAddin the ability to leverage the MRM engine. This way, even
a possible clientside exploit will not be possible, while still
allowing the MRM engine to run.
The admin_close_region method removes a region from the simulator without deleting it.
The region can then be recreated by calling admin_create_region with the same UUID.
There is also a change to admin_create_region to facilitate this.The reason I want
to have this functionality is to make it possible to detach regions when they are
idle and recreate them on demand through a web interface. It's probably doable
using the existing methods by saving and loading oars, but it also doesn't seem
like that should be necessary.
Set av_capsule_tilted to false in opensim.ini. Default is true, so there is
no change in avatar behavior (and no breaking of existing content which
relies on the tilted capsule).
This commit straightens up the avatar capsule so it behaves consistently
(e.g. same collision behavior against prims regardless of which direction
the avatar is coming from; ability to fit through narrow doorways).
Please note this introduces other side effects which have not been fixed.
In particular:
* The avatar frequently falls through the terrain if it is not flat, though
the avatar behaves pretty well on flat terrain. This requires investigation
of the ode terrain collider.
* The apparent foot position of the avatar with respect to the ground
is changed. This requires investigation of the avatar height/capsule height.
Please consider this as work in progress.
The patch included updates the root and child prims' AttchedAvatar
with the right UUID. It also cleans the AttachedAvatar properties
for the root and child prims on Drop and Detach
balancer plugin work again. Create a new method, GetClientEP, to retrieve
only the EndPoint for script usage. Marked the purpose of the method
in IClientAPI.cs with a warning. Also restored the corresponding SetClientInfo
functionality.
Ooops, sorry there was a bug in the patch and causes an exception
on some system (I think it only happens on windows since it didn't
occur during my testin). I've attached a one liner which fixes the problem.
Minor tweak to a region migration SQL script for the OAR DateTime field - SQL Server syntax slightly different from MySQL (and there is no unsigned in MSSQL, sadly)
to be constantly pushed and popped uselessly, if you are not debugging packets. This showed some really big difference in a mock test, let's see how it behaves here.
Attached is a patch that changes the oar file saving of creation date/time to an integer
instead of a string. I did this after justincc emailed me saying there is a problem
with internationalisation doing it the old way and I said I'd fix it. Its been
tested with MySQL and I've made the changes for MSSQL but that hasn't been well tested.
The new IRCd module causes an error when multiple instances of OpenSim
are run on the same machine; since the port number (6666) is hardcoded,
the second and subsequent instances crash upon startup because the port
is already in use. Attached is a patch which adds a Port specifier to the
[IRCd] section of the config file, which defaults to 6666 if not present.
By extracting this code, it should make it easier to experiment with different ways of managing the update process. [Next step to make this module based, could be to create a SceneViewerFactoryModule]
be created as new style INI files.
This doesn't yet affect create region, but it does affect first starts of
OpenSim.exe
Because master avatars are slated to be replaced by estate owners, this now
allows regions to be created without any master avatar data.
I also fixed the issue where the code also loops through the m_forcesList and copies each force to the ScenePresence's movementVector. Which resulted in only the last force in the list actually be acted on. As each copy overrode the last one. So now it only copies the last force in the list.
After noticing on several occasions that the thread counts
we see when running OpenSIm were bordering on the astronomical
I decided to seriously investigate.
After much poking I discovered that the problem is actually very
simple. The XEngine secition of the example ini says that the
timeout for an iden thread is in seconds, and an example value
of 60 is specified. In fact, this is actually resulting in a 60mS
idle timeout, which is not normally enough for a smart thread
to survive. I have added a multiplier to the XEngine constructor
so that the number now matches the published behavior.
bit of GetClientInfo that is actually used seems to be userEP as part of the
OSSL osGetAgentIP() script function. Now commented are the parts where
we serialize and copy out the *entire* packet queue of the client
(locking the packet handler in the process).
- uses Environment.TickCount for all timestamps (instead of more
costly Util.UnixTimeSinceEpoch()
- takes care of Environment.TickCount overflow (which will happens
after 24.8 days of system uptime)
- avoids instantiating List copies for each check
- gets rid of one lock() invocation
- moves calculation of loop invariant variable out of the loop itself
option for LLUDPServer. On windows .NET the default socket receive
buffer size is 8192 bytes, on recent linux systems it's about
111K. both value can be a bit small for an OpenSim instance serving
many clients. The socket receive buffer size can be configured via
an OpenSim.ini config option
- adds a general catch clause to LLUDPServer.OnReceivedData() to
prevent it submerging when an unexpected Exception occurs.
This change moves texture send processing out of the main
packet processing loop and moves it to a timer based
processing cycle.
Texture packets are sent to the client consistently over
time. The timer is discontinued whenever there are no
textures to transmit.
The behavior of the texture sending mechanism is controlled
by three variables in the LLCLient section of the config
file:
[1] TextureRequestRate (mS) determines how many times per second
texture send processing will occur. The default is 100mS.
[2] TextureSendLimit determines how many different textures
will be considered on each cycle. Textures are selected
by priority. The old mechanism specified a value of 10 for
this parameter and this is the default
[3] TextureDataLimit determines how many packets will be sent for
each of the selected textures. The old mechanism specified a
value of 5, so this is the default.
So the net effect is that TextureSendLimit*TextureDataLimit
packets will be sent every TextureRequestRate mS.
Once we have gotten a reasonable feeling for how these parameters
affect overall processing, it would be nice to autonmically manage
these values using information about the current status of the
region and network.
Note that this also resolves the pathologcal problem that
previously existed which was that a seated avatar generated very
few in-bound packets (theoretically) and would therefore be the
least able to retrieve the images being displayed by a
projector script.
order. Thanks, Grumly57, for pointing it out.
The point of the original change was to let the more specific setting override
the less specific one, actually, I disabled the use of the less specific one.
out which client connection has closed. So, in multi-region sims, things
can get messy fast.
This introduces a second parameters, which is a Scene object ref. Minor
adjustments to custom modules may be required due to this change.
- Set OwnerID = GroupID for deeded objects.
- Close a security loophole that would have allowed a user with deed rights in a group to deed ANY object to that group, even if it's not owned by them and/or not set to that group
- Set LastOwnerID correctly. Handle objects vs. prims correctly.
(a) Implements the ICommandableModule interface to clean up the user interface
(b) Uses a specification for a 'copse' (collected group of trees) which permits via an xml file: Tree type; Tree Line (high and low), Seed point; Radius of Copse; Number of required trees; Initial size of seeded tree; maximum size of seeded tree; growth rate; freeze growth state
(c) Multiple Copse may be defined for a region
(d) Growth on individual copse may be frozen or restarted, or all growth disabled/enabled
(e) Copse definitions are persistant, they are reloaded from the trees present on a region restart
(f) All trees in a copse may be removed and the copse definition deleted in one command