diff options
author | Melanie | 2013-10-04 20:03:12 +0100 |
---|---|---|
committer | Melanie | 2013-10-04 20:03:12 +0100 |
commit | 75c68fa29e3a2fed81c883e7925bf161e968639f (patch) | |
tree | 13ba69e6818f634018a5954d38750cf48128b7f8 /OpenSim/Region/ClientStack/Linden | |
parent | Merge branch 'avination-current' into careminster (diff) | |
parent | minor: Disable logging left active on regression test TestSameSimulatorIsolat... (diff) | |
download | opensim-SC-75c68fa29e3a2fed81c883e7925bf161e968639f.zip opensim-SC-75c68fa29e3a2fed81c883e7925bf161e968639f.tar.gz opensim-SC-75c68fa29e3a2fed81c883e7925bf161e968639f.tar.bz2 opensim-SC-75c68fa29e3a2fed81c883e7925bf161e968639f.tar.xz |
Merge branch 'master' into careminster
Conflicts:
OpenSim/Data/MySQL/MySQLSimulationData.cs
OpenSim/Data/MySQL/Resources/RegionStore.migrations
OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
OpenSim/Region/CoreModules/World/LightShare/LightShareModule.cs
OpenSim/Region/Framework/Scenes/Scene.cs
OpenSim/Region/Framework/Scenes/ScenePresence.cs
OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCapabilityTests.cs
OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden')
8 files changed, 139 insertions, 50 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs index b3b0b8a..9e24bce 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs | |||
@@ -96,7 +96,7 @@ namespace OpenSim.Region.ClientStack.Linden.Tests | |||
96 | UUID spId = TestHelpers.ParseTail(0x1); | 96 | UUID spId = TestHelpers.ParseTail(0x1); |
97 | 97 | ||
98 | SceneHelpers.AddScenePresence(m_scene, spId); | 98 | SceneHelpers.AddScenePresence(m_scene, spId); |
99 | m_scene.IncomingCloseAgent(spId, false); | 99 | m_scene.CloseAgent(spId, false); |
100 | 100 | ||
101 | // TODO: Add more assertions for the other aspects of event queues | 101 | // TODO: Add more assertions for the other aspects of event queues |
102 | Assert.That(MainServer.Instance.GetPollServiceHandlerKeys().Count, Is.EqualTo(0)); | 102 | Assert.That(MainServer.Instance.GetPollServiceHandlerKeys().Count, Is.EqualTo(0)); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs index 92805e2..94f8bc1 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs | |||
@@ -155,6 +155,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
155 | Quaternion rotation = Quaternion.Identity; | 155 | Quaternion rotation = Quaternion.Identity; |
156 | Vector3 scale = Vector3.Zero; | 156 | Vector3 scale = Vector3.Zero; |
157 | int state = 0; | 157 | int state = 0; |
158 | int lastattach = 0; | ||
158 | 159 | ||
159 | if (r.Type != OSDType.Map) // not a proper req | 160 | if (r.Type != OSDType.Map) // not a proper req |
160 | return responsedata; | 161 | return responsedata; |
@@ -224,6 +225,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
224 | 225 | ||
225 | ray_target_id = ObjMap["RayTargetId"].AsUUID(); | 226 | ray_target_id = ObjMap["RayTargetId"].AsUUID(); |
226 | state = ObjMap["State"].AsInteger(); | 227 | state = ObjMap["State"].AsInteger(); |
228 | lastattach = ObjMap["LastAttachPoint"].AsInteger(); | ||
227 | try | 229 | try |
228 | { | 230 | { |
229 | ray_end = ((OSDArray)ObjMap["RayEnd"]).AsVector3(); | 231 | ray_end = ((OSDArray)ObjMap["RayEnd"]).AsVector3(); |
@@ -290,6 +292,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
290 | 292 | ||
291 | //session_id = rm["session_id"].AsUUID(); | 293 | //session_id = rm["session_id"].AsUUID(); |
292 | state = rm["state"].AsInteger(); | 294 | state = rm["state"].AsInteger(); |
295 | lastattach = rm["last_attach_point"].AsInteger(); | ||
293 | try | 296 | try |
294 | { | 297 | { |
295 | ray_end = ((OSDArray)rm["ray_end"]).AsVector3(); | 298 | ray_end = ((OSDArray)rm["ray_end"]).AsVector3(); |
@@ -331,6 +334,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
331 | pbs.ProfileEnd = (ushort)profile_end; | 334 | pbs.ProfileEnd = (ushort)profile_end; |
332 | pbs.Scale = scale; | 335 | pbs.Scale = scale; |
333 | pbs.State = (byte)state; | 336 | pbs.State = (byte)state; |
337 | pbs.LastAttachPoint = (byte)lastattach; | ||
334 | 338 | ||
335 | SceneObjectGroup obj = null; ; | 339 | SceneObjectGroup obj = null; ; |
336 | 340 | ||
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs index 55a503e..769fe28 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs | |||
@@ -277,6 +277,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
277 | pbs.ProfileEnd = (ushort) obj.ProfileEnd; | 277 | pbs.ProfileEnd = (ushort) obj.ProfileEnd; |
278 | pbs.Scale = obj.Scale; | 278 | pbs.Scale = obj.Scale; |
279 | pbs.State = (byte) 0; | 279 | pbs.State = (byte) 0; |
280 | pbs.LastAttachPoint = (byte) 0; | ||
280 | SceneObjectPart prim = new SceneObjectPart(); | 281 | SceneObjectPart prim = new SceneObjectPart(); |
281 | prim.UUID = UUID.Random(); | 282 | prim.UUID = UUID.Random(); |
282 | prim.CreatorID = AgentId; | 283 | prim.CreatorID = AgentId; |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs index f816ad3..6fc35cd 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs | |||
@@ -116,7 +116,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
116 | m_scene.EventManager.OnRegisterCaps -= RegisterCaps; | 116 | m_scene.EventManager.OnRegisterCaps -= RegisterCaps; |
117 | 117 | ||
118 | foreach (Thread t in m_workerThreads) | 118 | foreach (Thread t in m_workerThreads) |
119 | Watchdog.AbortThread(t.ManagedThreadId); | 119 | Watchdog.AbortThread(t.ManagedThreadId); |
120 | 120 | ||
121 | m_scene = null; | 121 | m_scene = null; |
122 | } | 122 | } |
@@ -298,36 +298,49 @@ namespace OpenSim.Region.ClientStack.Linden | |||
298 | requestinfo.request["body"].ToString(), String.Empty, String.Empty, null, null); | 298 | requestinfo.request["body"].ToString(), String.Empty, String.Empty, null, null); |
299 | 299 | ||
300 | lock (responses) | 300 | lock (responses) |
301 | responses[requestID] = response; | 301 | responses[requestID] = response; |
302 | } | 302 | } |
303 | } | 303 | } |
304 | 304 | ||
305 | private void RegisterCaps(UUID agentID, Caps caps) | 305 | private void RegisterCaps(UUID agentID, Caps caps) |
306 | { | 306 | { |
307 | if (m_fetchInventoryDescendents2Url == "") | 307 | RegisterFetchDescendentsCap(agentID, caps, "FetchInventoryDescendents2", m_fetchInventoryDescendents2Url); |
308 | } | ||
309 | |||
310 | private void RegisterFetchDescendentsCap(UUID agentID, Caps caps, string capName, string url) | ||
311 | { | ||
312 | string capUrl; | ||
313 | |||
314 | // disable the cap clause | ||
315 | if (url == "") | ||
316 | { | ||
308 | return; | 317 | return; |
318 | } | ||
319 | // handled by the simulator | ||
320 | else if (url == "localhost") | ||
321 | { | ||
322 | capUrl = "/CAPS/" + UUID.Random() + "/"; | ||
309 | 323 | ||
310 | // Register this as a poll service | 324 | // Register this as a poll service |
311 | PollServiceInventoryEventArgs args | 325 | PollServiceInventoryEventArgs args = new PollServiceInventoryEventArgs(m_scene, capUrl, agentID); |
312 | = new PollServiceInventoryEventArgs(m_scene, "/CAPS/" + UUID.Random() + "/", agentID); | 326 | args.Type = PollServiceEventArgs.EventType.Inventory; |
313 | args.Type = PollServiceEventArgs.EventType.Inventory; | ||
314 | 327 | ||
315 | caps.RegisterPollHandler("FetchInventoryDescendents2", args); | 328 | caps.RegisterPollHandler(capName, args); |
329 | } | ||
330 | // external handler | ||
331 | else | ||
332 | { | ||
333 | capUrl = url; | ||
334 | IExternalCapsModule handler = m_scene.RequestModuleInterface<IExternalCapsModule>(); | ||
335 | if (handler != null) | ||
336 | handler.RegisterExternalUserCapsHandler(agentID,caps,capName,capUrl); | ||
337 | else | ||
338 | caps.RegisterHandler(capName, capUrl); | ||
339 | } | ||
316 | 340 | ||
317 | // MainServer.Instance.AddPollServiceHTTPHandler(capUrl, args); | 341 | // m_log.DebugFormat( |
318 | // | 342 | // "[FETCH INVENTORY DESCENDENTS2 MODULE]: Registered capability {0} at {1} in region {2} for {3}", |
319 | // string hostName = m_scene.RegionInfo.ExternalHostName; | 343 | // capName, capUrl, m_scene.RegionInfo.RegionName, agentID); |
320 | // uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port; | ||
321 | // string protocol = "http"; | ||
322 | // | ||
323 | // if (MainServer.Instance.UseSSL) | ||
324 | // { | ||
325 | // hostName = MainServer.Instance.SSLCommonName; | ||
326 | // port = MainServer.Instance.SSLPort; | ||
327 | // protocol = "https"; | ||
328 | // } | ||
329 | // | ||
330 | // caps.RegisterHandler("FetchInventoryDescendents2", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, capUrl)); | ||
331 | } | 344 | } |
332 | 345 | ||
333 | // private void DeregisterCaps(UUID agentID, Caps caps) | 346 | // private void DeregisterCaps(UUID agentID, Caps caps) |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 36edd0b..51cc2bf 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -783,7 +783,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
783 | 783 | ||
784 | public virtual void Start() | 784 | public virtual void Start() |
785 | { | 785 | { |
786 | m_scene.AddNewClient(this, PresenceType.User); | 786 | m_scene.AddNewAgent(this, PresenceType.User); |
787 | 787 | ||
788 | RefreshGroupMembership(); | 788 | RefreshGroupMembership(); |
789 | } | 789 | } |
@@ -12548,6 +12548,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12548 | 12548 | ||
12549 | shape.PCode = addPacket.ObjectData.PCode; | 12549 | shape.PCode = addPacket.ObjectData.PCode; |
12550 | shape.State = addPacket.ObjectData.State; | 12550 | shape.State = addPacket.ObjectData.State; |
12551 | shape.LastAttachPoint = addPacket.ObjectData.State; | ||
12551 | shape.PathBegin = addPacket.ObjectData.PathBegin; | 12552 | shape.PathBegin = addPacket.ObjectData.PathBegin; |
12552 | shape.PathEnd = addPacket.ObjectData.PathEnd; | 12553 | shape.PathEnd = addPacket.ObjectData.PathEnd; |
12553 | shape.PathScaleX = addPacket.ObjectData.PathScaleX; | 12554 | shape.PathScaleX = addPacket.ObjectData.PathScaleX; |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index ad3f715..01981dd 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | |||
@@ -1764,32 +1764,76 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1764 | endPoint = (IPEndPoint)array[0]; | 1764 | endPoint = (IPEndPoint)array[0]; |
1765 | CompleteAgentMovementPacket packet = (CompleteAgentMovementPacket)array[1]; | 1765 | CompleteAgentMovementPacket packet = (CompleteAgentMovementPacket)array[1]; |
1766 | 1766 | ||
1767 | m_log.DebugFormat( | ||
1768 | "[LLUDPSERVER]: Handling CompleteAgentMovement request from {0} in {1}", endPoint, m_scene.Name); | ||
1769 | |||
1767 | // Determine which agent this packet came from | 1770 | // Determine which agent this packet came from |
1768 | int count = 20; | 1771 | // We need to wait here because in when using the OpenSimulator V2 teleport protocol to travel to a destination |
1769 | bool ready = false; | 1772 | // simulator with no existing child presence, the viewer (at least LL 3.3.4) will send UseCircuitCode |
1770 | while (!ready && count-- > 0) | 1773 | // and then CompleteAgentMovement immediately without waiting for an ack. As we are now handling these |
1774 | // packets asynchronously, we need to account for this thread proceeding more quickly than the | ||
1775 | // UseCircuitCode thread. | ||
1776 | int count = 40; | ||
1777 | while (count-- > 0) | ||
1771 | { | 1778 | { |
1772 | if (m_scene.TryGetClient(endPoint, out client) && client.IsActive && client.SceneAgent != null) | 1779 | if (m_scene.TryGetClient(endPoint, out client)) |
1773 | { | 1780 | { |
1774 | LLClientView llClientView = (LLClientView)client; | 1781 | if (!client.IsActive) |
1775 | LLUDPClient udpClient = llClientView.UDPClient; | 1782 | { |
1776 | if (udpClient != null && udpClient.IsConnected) | 1783 | // This check exists to catch a condition where the client has been closed by another thread |
1777 | ready = true; | 1784 | // but has not yet been removed from the client manager (and possibly a new connection has |
1785 | // not yet been established). | ||
1786 | m_log.DebugFormat( | ||
1787 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client is not active yet. Waiting.", | ||
1788 | endPoint, client.Name, m_scene.Name); | ||
1789 | } | ||
1790 | else if (client.SceneAgent == null) | ||
1791 | { | ||
1792 | // This check exists to catch a condition where the new client has been added to the client | ||
1793 | // manager but the SceneAgent has not yet been set in Scene.AddNewAgent(). If we are too | ||
1794 | // eager, then the new ScenePresence may not have registered a listener for this messsage | ||
1795 | // before we try to process it. | ||
1796 | // XXX: A better long term fix may be to add the SceneAgent before the client is added to | ||
1797 | // the client manager | ||
1798 | m_log.DebugFormat( | ||
1799 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client SceneAgent not set yet. Waiting.", | ||
1800 | endPoint, client.Name, m_scene.Name); | ||
1801 | } | ||
1778 | else | 1802 | else |
1779 | { | 1803 | { |
1780 | m_log.Debug("[LLUDPSERVER]: Received a CompleteMovementIntoRegion in " + m_scene.RegionInfo.RegionName + " (not ready yet)"); | 1804 | break; |
1781 | Thread.Sleep(200); | ||
1782 | } | 1805 | } |
1783 | } | 1806 | } |
1784 | else | 1807 | else |
1785 | { | 1808 | { |
1786 | m_log.Debug("[LLUDPSERVER]: Received a CompleteMovementIntoRegion in " + m_scene.RegionInfo.RegionName + " (not ready yet)"); | 1809 | m_log.DebugFormat( |
1787 | Thread.Sleep(200); | 1810 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} in {1} but no client exists yet. Waiting.", |
1811 | endPoint, m_scene.Name); | ||
1788 | } | 1812 | } |
1813 | |||
1814 | Thread.Sleep(200); | ||
1789 | } | 1815 | } |
1790 | 1816 | ||
1791 | if (client == null) | 1817 | if (client == null) |
1818 | { | ||
1819 | m_log.DebugFormat( | ||
1820 | "[LLUDPSERVER]: No client found for CompleteAgentMovement from {0} in {1} after wait. Dropping.", | ||
1821 | endPoint, m_scene.Name); | ||
1822 | |||
1823 | return; | ||
1824 | } | ||
1825 | else if (!client.IsActive || client.SceneAgent == null) | ||
1826 | { | ||
1827 | // This check exists to catch a condition where the client has been closed by another thread | ||
1828 | // but has not yet been removed from the client manager. | ||
1829 | // The packet could be simply ignored but it is useful to know if this condition occurred for other debugging | ||
1830 | // purposes. | ||
1831 | m_log.DebugFormat( | ||
1832 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client is not active after wait. Dropping.", | ||
1833 | endPoint, client.Name, m_scene.Name); | ||
1834 | |||
1792 | return; | 1835 | return; |
1836 | } | ||
1793 | 1837 | ||
1794 | IncomingPacket incomingPacket1; | 1838 | IncomingPacket incomingPacket1; |
1795 | 1839 | ||
@@ -1810,7 +1854,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1810 | catch (Exception e) | 1854 | catch (Exception e) |
1811 | { | 1855 | { |
1812 | m_log.ErrorFormat( | 1856 | m_log.ErrorFormat( |
1813 | "[LLUDPSERVER]: CompleteMovementIntoRegion handling from endpoint {0}, client {1} {2} failed. Exception {3}{4}", | 1857 | "[LLUDPSERVER]: CompleteAgentMovement handling from endpoint {0}, client {1} {2} failed. Exception {3}{4}", |
1814 | endPoint != null ? endPoint.ToString() : "n/a", | 1858 | endPoint != null ? endPoint.ToString() : "n/a", |
1815 | client != null ? client.Name : "unknown", | 1859 | client != null ? client.Name : "unknown", |
1816 | client != null ? client.AgentId.ToString() : "unknown", | 1860 | client != null ? client.AgentId.ToString() : "unknown", |
@@ -1921,7 +1965,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1921 | client.Kick("Simulator logged you out due to connection timeout."); | 1965 | client.Kick("Simulator logged you out due to connection timeout."); |
1922 | } | 1966 | } |
1923 | 1967 | ||
1924 | m_scene.IncomingCloseAgent(client.AgentId, true); | 1968 | m_scene.CloseAgent(client.AgentId, true); |
1925 | } | 1969 | } |
1926 | 1970 | ||
1927 | private void IncomingPacketHandler() | 1971 | private void IncomingPacketHandler() |
@@ -2264,7 +2308,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2264 | if (!client.IsLoggingOut) | 2308 | if (!client.IsLoggingOut) |
2265 | { | 2309 | { |
2266 | client.IsLoggingOut = true; | 2310 | client.IsLoggingOut = true; |
2267 | m_scene.IncomingCloseAgent(client.AgentId, false); | 2311 | m_scene.CloseAgent(client.AgentId, false); |
2268 | } | 2312 | } |
2269 | } | 2313 | } |
2270 | } | 2314 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs index 48c5b37..881e768 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs | |||
@@ -291,7 +291,16 @@ namespace OpenMetaverse | |||
291 | m_log.Warn("[UDPBASE]: Salvaged the UDP listener on port " + m_udpPort); | 291 | m_log.Warn("[UDPBASE]: Salvaged the UDP listener on port " + m_udpPort); |
292 | } | 292 | } |
293 | } | 293 | } |
294 | catch (ObjectDisposedException) { } | 294 | catch (ObjectDisposedException e) |
295 | { | ||
296 | m_log.Error( | ||
297 | string.Format("[UDPBASE]: Error processing UDP begin receive {0}. Exception ", UdpReceives), e); | ||
298 | } | ||
299 | catch (Exception e) | ||
300 | { | ||
301 | m_log.Error( | ||
302 | string.Format("[UDPBASE]: Error processing UDP begin receive {0}. Exception ", UdpReceives), e); | ||
303 | } | ||
295 | } | 304 | } |
296 | } | 305 | } |
297 | 306 | ||
@@ -308,12 +317,12 @@ namespace OpenMetaverse | |||
308 | if (m_asyncPacketHandling) | 317 | if (m_asyncPacketHandling) |
309 | AsyncBeginReceive(); | 318 | AsyncBeginReceive(); |
310 | 319 | ||
311 | // get the buffer that was created in AsyncBeginReceive | ||
312 | // this is the received data | ||
313 | UDPPacketBuffer buffer = (UDPPacketBuffer)iar.AsyncState; | ||
314 | |||
315 | try | 320 | try |
316 | { | 321 | { |
322 | // get the buffer that was created in AsyncBeginReceive | ||
323 | // this is the received data | ||
324 | UDPPacketBuffer buffer = (UDPPacketBuffer)iar.AsyncState; | ||
325 | |||
317 | int startTick = Util.EnvironmentTickCount(); | 326 | int startTick = Util.EnvironmentTickCount(); |
318 | 327 | ||
319 | // get the length of data actually read from the socket, store it with the | 328 | // get the length of data actually read from the socket, store it with the |
@@ -341,8 +350,24 @@ namespace OpenMetaverse | |||
341 | m_currentReceiveTimeSamples++; | 350 | m_currentReceiveTimeSamples++; |
342 | } | 351 | } |
343 | } | 352 | } |
344 | catch (SocketException) { } | 353 | catch (SocketException se) |
345 | catch (ObjectDisposedException) { } | 354 | { |
355 | m_log.Error( | ||
356 | string.Format( | ||
357 | "[UDPBASE]: Error processing UDP end receive {0}, socket error code {1}. Exception ", | ||
358 | UdpReceives, se.ErrorCode), | ||
359 | se); | ||
360 | } | ||
361 | catch (ObjectDisposedException e) | ||
362 | { | ||
363 | m_log.Error( | ||
364 | string.Format("[UDPBASE]: Error processing UDP end receive {0}. Exception ", UdpReceives), e); | ||
365 | } | ||
366 | catch (Exception e) | ||
367 | { | ||
368 | m_log.Error( | ||
369 | string.Format("[UDPBASE]: Error processing UDP end receive {0}. Exception ", UdpReceives), e); | ||
370 | } | ||
346 | finally | 371 | finally |
347 | { | 372 | { |
348 | // if (UsePools) | 373 | // if (UsePools) |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs index 119a677..e2178e5 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs | |||
@@ -52,17 +52,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
52 | public override void Update(int frames) {} | 52 | public override void Update(int frames) {} |
53 | public override void LoadWorldMap() {} | 53 | public override void LoadWorldMap() {} |
54 | 54 | ||
55 | public override ISceneAgent AddNewClient(IClientAPI client, PresenceType type) | 55 | public override ISceneAgent AddNewAgent(IClientAPI client, PresenceType type) |
56 | { | 56 | { |
57 | client.OnObjectName += RecordObjectNameCall; | 57 | client.OnObjectName += RecordObjectNameCall; |
58 | 58 | ||
59 | // FIXME | 59 | // FIXME |
60 | return null; | 60 | return null; |
61 | } | 61 | } |
62 | 62 | ||
63 | public override void RemoveClient(UUID agentID, bool someReason) {} | 63 | public override bool CloseAgent(UUID agentID, bool force) { return true; } |
64 | // public override void CloseAllAgents(uint circuitcode) {} | 64 | |
65 | public override bool CheckClient(UUID clientId, IPEndPoint endPoint) { return true; } | 65 | public override bool CheckClient(UUID clientId, IPEndPoint endPoint) { return true; } |
66 | |||
66 | public override void OtherRegionUp(GridRegion otherRegion) { } | 67 | public override void OtherRegionUp(GridRegion otherRegion) { } |
67 | 68 | ||
68 | public override bool TryGetScenePresence(UUID uuid, out ScenePresence sp) { sp = null; return false; } | 69 | public override bool TryGetScenePresence(UUID uuid, out ScenePresence sp) { sp = null; return false; } |