Commit Graph

1103 Commits

Author SHA1 Message Date
Arthur Valadares
4f6efa0249 * C# compiler is not smart enough to understand ClientLoop is under very heavy usage and inline DebugPacket, so DebugPacket is run as a method, causing Packet
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.
2009-06-29 19:24:30 +00:00
Arthur Valadares
6da88dceb0 * Changing List to Dictionary in PacketQueue.Dequeue for great justice (and performance) 2009-06-29 16:55:00 +00:00
Jeff Ames
715f2f2798 Update svn properties, add copyright header, formatting cleanup. 2009-06-29 15:40:00 +00:00
Dr Scofield
c1976d1200 moving the m_PendingAcksMap.Remove() out of the foreach and clearing
it instead after the foreach as we are going through the whole
m_PendingAcks list anyhow
2009-06-25 11:30:31 +00:00
Dr Scofield
aba4b0bd20 have to clear m_PendingAcks not m_PendingAcksMap 2009-06-25 11:30:16 +00:00
Dr Scofield
e2db6c07ba hmph: missing '{'/'}', thx to nebadon for reporting it and rob smart
for spotting it!
2009-06-25 10:26:10 +00:00
Dr Scofield
74f7b586d3 fixing windows specific compile error. 2009-06-25 08:28:59 +00:00
Dr Scofield
17d37aa60d cosmetic change 2009-06-25 08:01:02 +00:00
Dr Scofield
1b06da0c54 streamlining m_NeedAck logic 2009-06-25 08:00:43 +00:00
Dr Scofield
9f83f124c7 streamling m_PendingAcks logic to get rid of gratuitous List<...>
instantiations and object copies.
2009-06-25 08:00:18 +00:00
Dr Scofield
b84834c45b commenting out expensive bits (who in the world even uses SetClientInfo()?) 2009-06-25 07:59:58 +00:00
Dr Scofield
e8e0ce5fc6 changing DropSend()'s foreach loop so that it does not copy the
LLQueItem m_NeedAck queue each time.
2009-06-25 07:59:47 +00:00
Dr Scofield
fa060a7282 commenting out rather expensive bits of GetClientInfo() --- the only
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).
2009-06-25 07:59:38 +00:00
Dr Scofield
77122d7861 more efficient way of checking for already seen packets:
- 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
2009-06-25 07:59:25 +00:00
Dr Scofield
a1ba9dee8d adding logging statement for receive buffer size 2009-06-25 07:50:19 +00:00
Dr Scofield
8f5efc4994 - adds the possibility of setting the socket receive buffer size
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.
2009-06-25 07:50:02 +00:00
Dr Scofield
afd5f76648 From: Alan Webb <alan_webb@us.ibm.com>
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.
2009-06-25 07:42:06 +00:00
Melanie Thielker
41b8e2de9e Also fix group role membership packet sizes to stay safely below MTU 2009-06-23 22:11:34 +00:00
Melanie Thielker
8cf16f6ea4 Can I be this dumb? 2009-06-23 21:17:20 +00:00
Melanie Thielker
2a766b9082 Fix an error in group membership sending when the memebr count exceeds 60
Also reduce limit to 40 to allow for last logon dates and titles
2009-06-23 20:27:35 +00:00
Melanie Thielker
a2635e43da Allow the member list of groups with more than 70 members to be viewed
without crashing
2009-06-23 14:37:51 +00:00
Melanie Thielker
56d0966a32 Commenting out the jhurliman fix, since our libOMV doesnt' have those fields
yet.
2009-06-23 08:56:45 +00:00
Melanie Thielker
2d7dd5f63e Correct an uninitialized field in a packet. Thanks, jhurliman.
Fixes Mantis #3831
2009-06-23 08:51:35 +00:00
Melanie Thielker
bc1dce071a Correct the behaviro of group deeding and llGetOwner() within deeded objects 2009-06-21 19:49:11 +00:00
Sean Dague
1adeb8ad77 From: Chris Yeoh <yeohc@au1.ibm.com>
This patch ensures that the touch positions are set during touch_end
events (currently only working for touch_start and touch events).
2009-06-19 12:21:20 +00:00
Dahlia Trimble
00d042f3d1 Thanks Michelle Argus for Mantis #0003742: Terrain editor - Flatten tool lowers Land 2009-06-18 23:02:12 +00:00
Melanie Thielker
8aaeec598e Fix an uninitialized data block. Thanks, jhurliman 2009-06-17 23:46:13 +00:00
Jeff Ames
a23d64dec1 Formatting cleanup. 2009-06-10 04:28:56 +00:00
Jeff Ames
840de6c036 Minor: Change OpenSim to OpenSimulator in older copyright headers and LICENSE.txt. 2009-06-01 06:37:14 +00:00
diva
275e53b126 This may bring the missing texture back. 2009-05-28 15:05:00 +00:00
Jeff Ames
e0bc5c5db2 Add copyright headers, formatting cleanup. 2009-05-20 01:32:06 +00:00
Dr Scofield
14f0d5e77f trying to fix exception with in LLPacketQueue probably caused by
missing locks where the queue was modified.
2009-05-19 18:46:20 +00:00
Dr Scofield
a885556063 From: Chris Yeoh <yeohc@au1.ibm.com>
We've encountered problems with textures never fully downloading and
objects not moving or being deleted (from the client's point of view)
even when the bandwidth settings on the client have been set very
low. This can happen over reasonably lossy links (eg you're on the
other side of the world from the server) as the server retries 3 times
and then gives up.

Whilst its possible to set ReliableIsImportant, this forces the server
to keep retrying no matter what which potentially could lead to
problems. This patch allows for the setting of MaxReliableResends
explicitly (is set to 3 normally) in OpenSim.ini so if you know you
will have clients connecting with poor connections you can set it a
bit higher (10-15 works quite well even for very poor connections).
2009-05-18 16:10:48 +00:00
diva
0379dbe2fd Removing a superfluous message, just to make bamboo run again. 2009-05-17 02:15:08 +00:00
Homer Horwitz
99cf8e3f5a Send the owner name, not the client name on SendDialog.
This modifies IClientAPI.SendDialog slightly.
Fixes Mantis #3661.
2009-05-16 16:01:25 +00:00
diva
5e4fc6e91e Heart surgery on asset service code bits. Affects OpenSim.ini configuration -- please see the example. Affects region servers only.
This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing.
Known problems: 
* HG asset transfers are borked for now
* missing texture is missing
* 3 unit tests commented out for now
2009-05-15 05:00:25 +00:00
Melanie Thielker
fca73f3ae4 Add more group notify glue 2009-05-12 15:52:28 +00:00
Melanie Thielker
1b7d0a6c93 Paving the way for syncing group permissions across a grid 2009-05-12 14:59:11 +00:00
Adam Frisby
6dcafec22d * Implements IP and DNS based ban facilities to OpenSim.
* User interface is ... primitive at best right now.
* Loads bans from bans.txt and region ban DB on startup, bans.txt is in the format of one per line. The following explains how they are read;

DNS bans are in the form "somewhere.com" will block ANY matching domain (including "betasomewhere.com", "beta.somewhere.com", "somewhere.com.beta") - make sure to be reasonably specific in DNS bans.

IP address bans match on first characters, so, "127.0.0.1" will ban only that address, "127.0.1" will ban "127.0.10.0" but "127.0.1." will ban only the "127.0.1.*" network
2009-05-11 19:23:51 +00:00
Adam Frisby
53a350573e * Further testing against core packet issue. 2009-05-10 20:31:45 +00:00
Adam Frisby
da948a992a * Attempting to diagnose a core packet issue on Windows/.NET. Adding additional locks to see if it fixes the problem. 2009-05-10 20:25:05 +00:00
Melanie Thielker
e4236a4233 Fox a boo-boo in ExtraParams - a packet with no data blocks could crash
the session. Also allow multiple data blocks.
2009-05-09 12:04:40 +00:00
Sean Dague
ce0a84cbc0 instrument most of the tests with a new InMethod function that may help us figure
out where that pesky deadlock is during test runs.
2009-05-07 19:07:08 +00:00
Melanie Thielker
aa4e42069b Change avatar updates to be processed the same way object updates are, e.g.
packet length check. More changes to come
2009-05-07 12:06:07 +00:00
Jeff Ames
8ea12ad6c0 Add copyright header. Formatting cleanup. Ignore some generated files. 2009-05-05 09:59:15 +00:00
Melanie Thielker
acfb5051cd Intermediate commit. WILL NOT COMPILE! 2009-05-04 20:15:39 +00:00
Justin Clarke Casey
257fc5515a * minor: remove some mono compiler warnings, minor cleanup 2009-05-04 15:38:36 +00:00
Melanie Thielker
36dd346a91 Add a method to flush the prim update buffers once a frame, since the timer
appear to be too slow to be useful, or fail too fire. I may remove the timers
as a consequence if this.
2009-05-04 14:25:19 +00:00
Melanie Thielker
b44a56e0b4 Add a parameter that limits the max size of the outbound packet. Defaulted
at 1400 since the headers get added to that (32 bytes plus UDP headers)
2009-05-04 02:24:30 +00:00
Melanie Thielker
e8b532b26a Make a race condition in packet resending smaller 2009-05-03 09:43:52 +00:00