diff options
author | Diva Canto | 2014-02-21 10:05:06 -0800 |
---|---|---|
committer | Diva Canto | 2014-02-21 10:05:06 -0800 |
commit | 97c74afca897acf8f000b0560ff041fd51897e5b (patch) | |
tree | 71efc4ababc6f428de291a56e289fa158cbf2272 /OpenSim/Services | |
parent | Added 2 new behavirors to pCampBot. These are part of a systematic study I'm ... (diff) | |
parent | If texture decode fails in Warp3D map maker, log uuid of asset that failed to... (diff) | |
download | opensim-SC_OLD-97c74afca897acf8f000b0560ff041fd51897e5b.zip opensim-SC_OLD-97c74afca897acf8f000b0560ff041fd51897e5b.tar.gz opensim-SC_OLD-97c74afca897acf8f000b0560ff041fd51897e5b.tar.bz2 opensim-SC_OLD-97c74afca897acf8f000b0560ff041fd51897e5b.tar.xz |
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to '')
5 files changed, 159 insertions, 313 deletions
diff --git a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs index 20397a1..f869060 100644 --- a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs +++ b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs | |||
@@ -78,7 +78,8 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
78 | m_log.DebugFormat("[USER AGENT CONNECTOR]: Malformed Uri {0}: {1}", m_ServerURL, e.Message); | 78 | m_log.DebugFormat("[USER AGENT CONNECTOR]: Malformed Uri {0}: {1}", m_ServerURL, e.Message); |
79 | } | 79 | } |
80 | } | 80 | } |
81 | m_log.DebugFormat("[USER AGENT CONNECTOR]: new connector to {0} ({1})", url, m_ServerURL); | 81 | |
82 | //m_log.DebugFormat("[USER AGENT CONNECTOR]: new connector to {0} ({1})", url, m_ServerURL); | ||
82 | } | 83 | } |
83 | 84 | ||
84 | public UserAgentServiceConnector(IConfigSource config) | 85 | public UserAgentServiceConnector(IConfigSource config) |
@@ -190,108 +191,99 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
190 | // no-op | 191 | // no-op |
191 | } | 192 | } |
192 | 193 | ||
193 | public GridRegion GetHomeRegion(UUID userID, out Vector3 position, out Vector3 lookAt) | 194 | private Hashtable CallServer(string methodName, Hashtable hash) |
194 | { | 195 | { |
195 | position = Vector3.UnitY; lookAt = Vector3.UnitY; | ||
196 | |||
197 | Hashtable hash = new Hashtable(); | ||
198 | hash["userID"] = userID.ToString(); | ||
199 | |||
200 | IList paramList = new ArrayList(); | 196 | IList paramList = new ArrayList(); |
201 | paramList.Add(hash); | 197 | paramList.Add(hash); |
202 | 198 | ||
203 | XmlRpcRequest request = new XmlRpcRequest("get_home_region", paramList); | 199 | XmlRpcRequest request = new XmlRpcRequest(methodName, paramList); |
200 | |||
201 | // Send and get reply | ||
204 | XmlRpcResponse response = null; | 202 | XmlRpcResponse response = null; |
205 | try | 203 | try |
206 | { | 204 | { |
207 | response = request.Send(m_ServerURL, 10000); | 205 | response = request.Send(m_ServerURL, 10000); |
208 | } | 206 | } |
209 | catch (Exception) | 207 | catch (Exception e) |
210 | { | 208 | { |
211 | return null; | 209 | m_log.DebugFormat("[USER AGENT CONNECTOR]: {0} call to {1} failed: {2}", methodName, m_ServerURL, e.Message); |
210 | throw; | ||
212 | } | 211 | } |
213 | 212 | ||
214 | if (response.IsFault) | 213 | if (response.IsFault) |
215 | { | 214 | { |
216 | return null; | 215 | throw new Exception(string.Format("[USER AGENT CONNECTOR]: {0} call to {1} returned an error: {2}", methodName, m_ServerURL, response.FaultString)); |
217 | } | 216 | } |
218 | 217 | ||
219 | hash = (Hashtable)response.Value; | 218 | hash = (Hashtable)response.Value; |
220 | //foreach (Object o in hash) | 219 | |
221 | // m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value); | 220 | if (hash == null) |
222 | try | ||
223 | { | 221 | { |
224 | bool success = false; | 222 | throw new Exception(string.Format("[USER AGENT CONNECTOR]: {0} call to {1} returned null", methodName, m_ServerURL)); |
225 | Boolean.TryParse((string)hash["result"], out success); | 223 | } |
226 | if (success) | ||
227 | { | ||
228 | GridRegion region = new GridRegion(); | ||
229 | 224 | ||
230 | UUID.TryParse((string)hash["uuid"], out region.RegionID); | 225 | return hash; |
231 | //m_log.Debug(">> HERE, uuid: " + region.RegionID); | 226 | } |
232 | int n = 0; | ||
233 | if (hash["x"] != null) | ||
234 | { | ||
235 | Int32.TryParse((string)hash["x"], out n); | ||
236 | region.RegionLocX = n; | ||
237 | //m_log.Debug(">> HERE, x: " + region.RegionLocX); | ||
238 | } | ||
239 | if (hash["y"] != null) | ||
240 | { | ||
241 | Int32.TryParse((string)hash["y"], out n); | ||
242 | region.RegionLocY = n; | ||
243 | //m_log.Debug(">> HERE, y: " + region.RegionLocY); | ||
244 | } | ||
245 | if (hash["size_x"] != null) | ||
246 | { | ||
247 | Int32.TryParse((string)hash["size_x"], out n); | ||
248 | region.RegionSizeX = n; | ||
249 | //m_log.Debug(">> HERE, x: " + region.RegionLocX); | ||
250 | } | ||
251 | if (hash["size_y"] != null) | ||
252 | { | ||
253 | Int32.TryParse((string)hash["size_y"], out n); | ||
254 | region.RegionSizeY = n; | ||
255 | //m_log.Debug(">> HERE, y: " + region.RegionLocY); | ||
256 | } | ||
257 | if (hash["region_name"] != null) | ||
258 | { | ||
259 | region.RegionName = (string)hash["region_name"]; | ||
260 | //m_log.Debug(">> HERE, name: " + region.RegionName); | ||
261 | } | ||
262 | if (hash["hostname"] != null) | ||
263 | region.ExternalHostName = (string)hash["hostname"]; | ||
264 | if (hash["http_port"] != null) | ||
265 | { | ||
266 | uint p = 0; | ||
267 | UInt32.TryParse((string)hash["http_port"], out p); | ||
268 | region.HttpPort = p; | ||
269 | } | ||
270 | if (hash.ContainsKey("server_uri") && hash["server_uri"] != null) | ||
271 | region.ServerURI = (string)hash["server_uri"]; | ||
272 | 227 | ||
273 | if (hash["internal_port"] != null) | 228 | public GridRegion GetHomeRegion(UUID userID, out Vector3 position, out Vector3 lookAt) |
274 | { | 229 | { |
275 | int p = 0; | 230 | position = Vector3.UnitY; lookAt = Vector3.UnitY; |
276 | Int32.TryParse((string)hash["internal_port"], out p); | ||
277 | region.InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), p); | ||
278 | } | ||
279 | if (hash["position"] != null) | ||
280 | Vector3.TryParse((string)hash["position"], out position); | ||
281 | if (hash["lookAt"] != null) | ||
282 | Vector3.TryParse((string)hash["lookAt"], out lookAt); | ||
283 | 231 | ||
284 | // Successful return | 232 | Hashtable hash = new Hashtable(); |
285 | return region; | 233 | hash["userID"] = userID.ToString(); |
286 | } | 234 | |
235 | hash = CallServer("get_home_region", hash); | ||
287 | 236 | ||
237 | bool success; | ||
238 | if (!Boolean.TryParse((string)hash["result"], out success) || !success) | ||
239 | return null; | ||
240 | |||
241 | GridRegion region = new GridRegion(); | ||
242 | |||
243 | UUID.TryParse((string)hash["uuid"], out region.RegionID); | ||
244 | //m_log.Debug(">> HERE, uuid: " + region.RegionID); | ||
245 | int n = 0; | ||
246 | if (hash["x"] != null) | ||
247 | { | ||
248 | Int32.TryParse((string)hash["x"], out n); | ||
249 | region.RegionLocX = n; | ||
250 | //m_log.Debug(">> HERE, x: " + region.RegionLocX); | ||
288 | } | 251 | } |
289 | catch (Exception) | 252 | if (hash["y"] != null) |
290 | { | 253 | { |
291 | return null; | 254 | Int32.TryParse((string)hash["y"], out n); |
255 | region.RegionLocY = n; | ||
256 | //m_log.Debug(">> HERE, y: " + region.RegionLocY); | ||
292 | } | 257 | } |
258 | if (hash["region_name"] != null) | ||
259 | { | ||
260 | region.RegionName = (string)hash["region_name"]; | ||
261 | //m_log.Debug(">> HERE, name: " + region.RegionName); | ||
262 | } | ||
263 | if (hash["hostname"] != null) | ||
264 | region.ExternalHostName = (string)hash["hostname"]; | ||
265 | if (hash["http_port"] != null) | ||
266 | { | ||
267 | uint p = 0; | ||
268 | UInt32.TryParse((string)hash["http_port"], out p); | ||
269 | region.HttpPort = p; | ||
270 | } | ||
271 | if (hash.ContainsKey("server_uri") && hash["server_uri"] != null) | ||
272 | region.ServerURI = (string)hash["server_uri"]; | ||
273 | |||
274 | if (hash["internal_port"] != null) | ||
275 | { | ||
276 | int p = 0; | ||
277 | Int32.TryParse((string)hash["internal_port"], out p); | ||
278 | region.InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), p); | ||
279 | } | ||
280 | if (hash["position"] != null) | ||
281 | Vector3.TryParse((string)hash["position"], out position); | ||
282 | if (hash["lookAt"] != null) | ||
283 | Vector3.TryParse((string)hash["lookAt"], out lookAt); | ||
293 | 284 | ||
294 | return null; | 285 | // Successful return |
286 | return region; | ||
295 | } | 287 | } |
296 | 288 | ||
297 | public bool IsAgentComingHome(UUID sessionID, string thisGridExternalName) | 289 | public bool IsAgentComingHome(UUID sessionID, string thisGridExternalName) |
@@ -500,50 +492,16 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
500 | Hashtable hash = new Hashtable(); | 492 | Hashtable hash = new Hashtable(); |
501 | hash["userID"] = userID.ToString(); | 493 | hash["userID"] = userID.ToString(); |
502 | 494 | ||
503 | IList paramList = new ArrayList(); | 495 | hash = CallServer("get_user_info", hash); |
504 | paramList.Add(hash); | ||
505 | |||
506 | XmlRpcRequest request = new XmlRpcRequest("get_user_info", paramList); | ||
507 | 496 | ||
508 | Dictionary<string, object> info = new Dictionary<string, object>(); | 497 | Dictionary<string, object> info = new Dictionary<string, object>(); |
509 | XmlRpcResponse response = null; | ||
510 | try | ||
511 | { | ||
512 | response = request.Send(m_ServerURL, 10000); | ||
513 | } | ||
514 | catch | ||
515 | { | ||
516 | m_log.DebugFormat("[USER AGENT CONNECTOR]: Unable to contact remote server {0} for GetUserInfo", m_ServerURL); | ||
517 | return info; | ||
518 | } | ||
519 | 498 | ||
520 | if (response.IsFault) | 499 | foreach (object key in hash.Keys) |
521 | { | 500 | { |
522 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: remote call to {0} for GetServerURLs returned an error: {1}", m_ServerURL, response.FaultString); | 501 | if (hash[key] != null) |
523 | return info; | ||
524 | } | ||
525 | |||
526 | hash = (Hashtable)response.Value; | ||
527 | try | ||
528 | { | ||
529 | if (hash == null) | ||
530 | { | 502 | { |
531 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: GetUserInfo Got null response from {0}! THIS IS BAAAAD", m_ServerURL); | 503 | info.Add(key.ToString(), hash[key]); |
532 | return info; | ||
533 | } | 504 | } |
534 | |||
535 | // Here is the actual response | ||
536 | foreach (object key in hash.Keys) | ||
537 | { | ||
538 | if (hash[key] != null) | ||
539 | { | ||
540 | info.Add(key.ToString(), hash[key]); | ||
541 | } | ||
542 | } | ||
543 | } | ||
544 | catch | ||
545 | { | ||
546 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: Got exception on GetOnlineFriends response."); | ||
547 | } | 505 | } |
548 | 506 | ||
549 | return info; | 507 | return info; |
@@ -554,60 +512,16 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
554 | Hashtable hash = new Hashtable(); | 512 | Hashtable hash = new Hashtable(); |
555 | hash["userID"] = userID.ToString(); | 513 | hash["userID"] = userID.ToString(); |
556 | 514 | ||
557 | IList paramList = new ArrayList(); | 515 | hash = CallServer("get_server_urls", hash); |
558 | paramList.Add(hash); | 516 | |
559 | 517 | Dictionary<string, object> serverURLs = new Dictionary<string, object>(); | |
560 | XmlRpcRequest request = new XmlRpcRequest("get_server_urls", paramList); | 518 | foreach (object key in hash.Keys) |
561 | // string reason = string.Empty; | ||
562 | |||
563 | // Send and get reply | ||
564 | Dictionary<string, object> serverURLs = new Dictionary<string,object>(); | ||
565 | XmlRpcResponse response = null; | ||
566 | try | ||
567 | { | 519 | { |
568 | response = request.Send(m_ServerURL, 10000); | 520 | if (key is string && ((string)key).StartsWith("SRV_") && hash[key] != null) |
569 | } | ||
570 | catch | ||
571 | { | ||
572 | m_log.DebugFormat("[USER AGENT CONNECTOR]: Unable to contact remote server {0} for GetServerURLs for user {1}", m_ServerURL, userID); | ||
573 | // reason = "Exception: " + e.Message; | ||
574 | return serverURLs; | ||
575 | } | ||
576 | |||
577 | if (response.IsFault) | ||
578 | { | ||
579 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: remote call to {0} for GetServerURLs returned an error: {1}", m_ServerURL, response.FaultString); | ||
580 | // reason = "XMLRPC Fault"; | ||
581 | return serverURLs; | ||
582 | } | ||
583 | |||
584 | hash = (Hashtable)response.Value; | ||
585 | //foreach (Object o in hash) | ||
586 | // m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value); | ||
587 | try | ||
588 | { | ||
589 | if (hash == null) | ||
590 | { | ||
591 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: GetServerURLs Got null response from {0}! THIS IS BAAAAD", m_ServerURL); | ||
592 | // reason = "Internal error 1"; | ||
593 | return serverURLs; | ||
594 | } | ||
595 | |||
596 | // Here is the actual response | ||
597 | foreach (object key in hash.Keys) | ||
598 | { | 521 | { |
599 | if (key is string && ((string)key).StartsWith("SRV_") && hash[key] != null) | 522 | string serverType = key.ToString().Substring(4); // remove "SRV_" |
600 | { | 523 | serverURLs.Add(serverType, hash[key].ToString()); |
601 | string serverType = key.ToString().Substring(4); // remove "SRV_" | ||
602 | serverURLs.Add(serverType, hash[key].ToString()); | ||
603 | } | ||
604 | } | 524 | } |
605 | |||
606 | } | ||
607 | catch | ||
608 | { | ||
609 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: Got exception on GetOnlineFriends response."); | ||
610 | // reason = "Exception: " + e.Message; | ||
611 | } | 525 | } |
612 | 526 | ||
613 | return serverURLs; | 527 | return serverURLs; |
@@ -618,55 +532,13 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
618 | Hashtable hash = new Hashtable(); | 532 | Hashtable hash = new Hashtable(); |
619 | hash["userID"] = userID.ToString(); | 533 | hash["userID"] = userID.ToString(); |
620 | 534 | ||
621 | IList paramList = new ArrayList(); | 535 | hash = CallServer("locate_user", hash); |
622 | paramList.Add(hash); | ||
623 | |||
624 | XmlRpcRequest request = new XmlRpcRequest("locate_user", paramList); | ||
625 | // string reason = string.Empty; | ||
626 | 536 | ||
627 | // Send and get reply | ||
628 | string url = string.Empty; | 537 | string url = string.Empty; |
629 | XmlRpcResponse response = null; | ||
630 | try | ||
631 | { | ||
632 | response = request.Send(m_ServerURL, 10000); | ||
633 | } | ||
634 | catch | ||
635 | { | ||
636 | m_log.DebugFormat("[USER AGENT CONNECTOR]: Unable to contact remote server {0} for LocateUser", m_ServerURL); | ||
637 | // reason = "Exception: " + e.Message; | ||
638 | return url; | ||
639 | } | ||
640 | 538 | ||
641 | if (response.IsFault) | 539 | // Here's the actual response |
642 | { | 540 | if (hash.ContainsKey("URL")) |
643 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: remote call to {0} for LocateUser returned an error: {1}", m_ServerURL, response.FaultString); | 541 | url = hash["URL"].ToString(); |
644 | // reason = "XMLRPC Fault"; | ||
645 | return url; | ||
646 | } | ||
647 | |||
648 | hash = (Hashtable)response.Value; | ||
649 | //foreach (Object o in hash) | ||
650 | // m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value); | ||
651 | try | ||
652 | { | ||
653 | if (hash == null) | ||
654 | { | ||
655 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: LocateUser Got null response from {0}! THIS IS BAAAAD", m_ServerURL); | ||
656 | // reason = "Internal error 1"; | ||
657 | return url; | ||
658 | } | ||
659 | |||
660 | // Here's the actual response | ||
661 | if (hash.ContainsKey("URL")) | ||
662 | url = hash["URL"].ToString(); | ||
663 | |||
664 | } | ||
665 | catch | ||
666 | { | ||
667 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: Got exception on LocateUser response."); | ||
668 | // reason = "Exception: " + e.Message; | ||
669 | } | ||
670 | 542 | ||
671 | return url; | 543 | return url; |
672 | } | 544 | } |
@@ -677,55 +549,13 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
677 | hash["userID"] = userID.ToString(); | 549 | hash["userID"] = userID.ToString(); |
678 | hash["targetUserID"] = targetUserID.ToString(); | 550 | hash["targetUserID"] = targetUserID.ToString(); |
679 | 551 | ||
680 | IList paramList = new ArrayList(); | 552 | hash = CallServer("get_uui", hash); |
681 | paramList.Add(hash); | ||
682 | |||
683 | XmlRpcRequest request = new XmlRpcRequest("get_uui", paramList); | ||
684 | // string reason = string.Empty; | ||
685 | 553 | ||
686 | // Send and get reply | ||
687 | string uui = string.Empty; | 554 | string uui = string.Empty; |
688 | XmlRpcResponse response = null; | ||
689 | try | ||
690 | { | ||
691 | response = request.Send(m_ServerURL, 10000); | ||
692 | } | ||
693 | catch | ||
694 | { | ||
695 | m_log.DebugFormat("[USER AGENT CONNECTOR]: Unable to contact remote server {0} for GetUUI", m_ServerURL); | ||
696 | // reason = "Exception: " + e.Message; | ||
697 | return uui; | ||
698 | } | ||
699 | 555 | ||
700 | if (response.IsFault) | 556 | // Here's the actual response |
701 | { | 557 | if (hash.ContainsKey("UUI")) |
702 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: remote call to {0} for GetUUI returned an error: {1}", m_ServerURL, response.FaultString); | 558 | uui = hash["UUI"].ToString(); |
703 | // reason = "XMLRPC Fault"; | ||
704 | return uui; | ||
705 | } | ||
706 | |||
707 | hash = (Hashtable)response.Value; | ||
708 | //foreach (Object o in hash) | ||
709 | // m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value); | ||
710 | try | ||
711 | { | ||
712 | if (hash == null) | ||
713 | { | ||
714 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: GetUUI Got null response from {0}! THIS IS BAAAAD", m_ServerURL); | ||
715 | // reason = "Internal error 1"; | ||
716 | return uui; | ||
717 | } | ||
718 | |||
719 | // Here's the actual response | ||
720 | if (hash.ContainsKey("UUI")) | ||
721 | uui = hash["UUI"].ToString(); | ||
722 | |||
723 | } | ||
724 | catch | ||
725 | { | ||
726 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: Got exception on GetUUI response."); | ||
727 | // reason = "Exception: " + e.Message; | ||
728 | } | ||
729 | 559 | ||
730 | return uui; | 560 | return uui; |
731 | } | 561 | } |
@@ -736,54 +566,17 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
736 | hash["first"] = first; | 566 | hash["first"] = first; |
737 | hash["last"] = last; | 567 | hash["last"] = last; |
738 | 568 | ||
739 | IList paramList = new ArrayList(); | 569 | hash = CallServer("get_uuid", hash); |
740 | paramList.Add(hash); | ||
741 | |||
742 | XmlRpcRequest request = new XmlRpcRequest("get_uuid", paramList); | ||
743 | // string reason = string.Empty; | ||
744 | 570 | ||
745 | // Send and get reply | 571 | if (!hash.ContainsKey("UUID")) |
746 | UUID uuid = UUID.Zero; | ||
747 | XmlRpcResponse response = null; | ||
748 | try | ||
749 | { | 572 | { |
750 | response = request.Send(m_ServerURL, 10000); | 573 | throw new Exception(string.Format("[USER AGENT CONNECTOR]: get_uuid call to {0} didn't return a UUID", m_ServerURL)); |
751 | } | ||
752 | catch | ||
753 | { | ||
754 | m_log.DebugFormat("[USER AGENT CONNECTOR]: Unable to contact remote server {0} for GetUUID", m_ServerURL); | ||
755 | // reason = "Exception: " + e.Message; | ||
756 | return uuid; | ||
757 | } | 574 | } |
758 | 575 | ||
759 | if (response.IsFault) | 576 | UUID uuid; |
760 | { | 577 | if (!UUID.TryParse(hash["UUID"].ToString(), out uuid)) |
761 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: remote call to {0} for GetUUID returned an error: {1}", m_ServerURL, response.FaultString); | ||
762 | // reason = "XMLRPC Fault"; | ||
763 | return uuid; | ||
764 | } | ||
765 | |||
766 | hash = (Hashtable)response.Value; | ||
767 | //foreach (Object o in hash) | ||
768 | // m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value); | ||
769 | try | ||
770 | { | ||
771 | if (hash == null) | ||
772 | { | ||
773 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: GetUUDI Got null response from {0}! THIS IS BAAAAD", m_ServerURL); | ||
774 | // reason = "Internal error 1"; | ||
775 | return uuid; | ||
776 | } | ||
777 | |||
778 | // Here's the actual response | ||
779 | if (hash.ContainsKey("UUID")) | ||
780 | UUID.TryParse(hash["UUID"].ToString(), out uuid); | ||
781 | |||
782 | } | ||
783 | catch | ||
784 | { | 578 | { |
785 | m_log.ErrorFormat("[USER AGENT CONNECTOR]: Got exception on UUID response."); | 579 | throw new Exception(string.Format("[USER AGENT CONNECTOR]: get_uuid call to {0} returned an invalid UUID: {1}", m_ServerURL, hash["UUID"].ToString())); |
786 | // reason = "Exception: " + e.Message; | ||
787 | } | 580 | } |
788 | 581 | ||
789 | return uuid; | 582 | return uuid; |
diff --git a/OpenSim/Services/HypergridService/HGInstantMessageService.cs b/OpenSim/Services/HypergridService/HGInstantMessageService.cs index e8d7cca..9b7b278 100644 --- a/OpenSim/Services/HypergridService/HGInstantMessageService.cs +++ b/OpenSim/Services/HypergridService/HGInstantMessageService.cs | |||
@@ -215,7 +215,15 @@ namespace OpenSim.Services.HypergridService | |||
215 | { | 215 | { |
216 | // Let's check with the UAS if the user is elsewhere | 216 | // Let's check with the UAS if the user is elsewhere |
217 | m_log.DebugFormat("[HG IM SERVICE]: User is not present. Checking location with User Agent service"); | 217 | m_log.DebugFormat("[HG IM SERVICE]: User is not present. Checking location with User Agent service"); |
218 | url = m_UserAgentService.LocateUser(toAgentID); | 218 | try |
219 | { | ||
220 | url = m_UserAgentService.LocateUser(toAgentID); | ||
221 | } | ||
222 | catch (Exception e) | ||
223 | { | ||
224 | m_log.Warn("[HG IM SERVICE]: LocateUser call failed ", e); | ||
225 | url = string.Empty; | ||
226 | } | ||
219 | } | 227 | } |
220 | 228 | ||
221 | // check if we've tried this before.. | 229 | // check if we've tried this before.. |
diff --git a/OpenSim/Services/Interfaces/IHypergridServices.cs b/OpenSim/Services/Interfaces/IHypergridServices.cs index 05e175a..bece4c7 100644 --- a/OpenSim/Services/Interfaces/IHypergridServices.cs +++ b/OpenSim/Services/Interfaces/IHypergridServices.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -47,15 +47,47 @@ namespace OpenSim.Services.Interfaces | |||
47 | { | 47 | { |
48 | bool LoginAgentToGrid(AgentCircuitData agent, GridRegion gatekeeper, GridRegion finalDestination, bool fromLogin, out string reason); | 48 | bool LoginAgentToGrid(AgentCircuitData agent, GridRegion gatekeeper, GridRegion finalDestination, bool fromLogin, out string reason); |
49 | void LogoutAgent(UUID userID, UUID sessionID); | 49 | void LogoutAgent(UUID userID, UUID sessionID); |
50 | |||
51 | /// <summary> | ||
52 | /// Returns the home region of a remote user. | ||
53 | /// </summary> | ||
54 | /// <returns>On success: the user's home region. If the user doesn't exist: null.</returns> | ||
55 | /// <remarks>Throws an exception if an error occurs (e.g., can't contact the server).</remarks> | ||
50 | GridRegion GetHomeRegion(UUID userID, out Vector3 position, out Vector3 lookAt); | 56 | GridRegion GetHomeRegion(UUID userID, out Vector3 position, out Vector3 lookAt); |
57 | |||
58 | /// <summary> | ||
59 | /// Returns the Server URLs of a remote user. | ||
60 | /// </summary> | ||
61 | /// <returns>On success: the user's Server URLs. If the user doesn't exist: an empty dictionary.</returns> | ||
62 | /// <remarks>Throws an exception if an error occurs (e.g., can't contact the server).</remarks> | ||
51 | Dictionary<string, object> GetServerURLs(UUID userID); | 63 | Dictionary<string, object> GetServerURLs(UUID userID); |
52 | Dictionary<string,object> GetUserInfo(UUID userID); | ||
53 | 64 | ||
65 | /// <summary> | ||
66 | /// Returns the UserInfo of a remote user. | ||
67 | /// </summary> | ||
68 | /// <returns>On success: the user's UserInfo. If the user doesn't exist: an empty dictionary.</returns> | ||
69 | /// <remarks>Throws an exception if an error occurs (e.g., can't contact the server).</remarks> | ||
70 | Dictionary<string, object> GetUserInfo(UUID userID); | ||
71 | |||
72 | /// <summary> | ||
73 | /// Returns the current location of a remote user. | ||
74 | /// </summary> | ||
75 | /// <returns>On success: the user's Server URLs. If the user doesn't exist: "".</returns> | ||
76 | /// <remarks>Throws an exception if an error occurs (e.g., can't contact the server).</remarks> | ||
54 | string LocateUser(UUID userID); | 77 | string LocateUser(UUID userID); |
55 | // Tries to get the universal user identifier for the targetUserId | 78 | |
56 | // on behalf of the userID | 79 | /// <summary> |
80 | /// Returns the Universal User Identifier for 'targetUserID' on behalf of 'userID'. | ||
81 | /// </summary> | ||
82 | /// <returns>On success: the user's UUI. If the user doesn't exist: "".</returns> | ||
83 | /// <remarks>Throws an exception if an error occurs (e.g., can't contact the server).</remarks> | ||
57 | string GetUUI(UUID userID, UUID targetUserID); | 84 | string GetUUI(UUID userID, UUID targetUserID); |
58 | 85 | ||
86 | /// <summary> | ||
87 | /// Returns the remote user that has the given name. | ||
88 | /// </summary> | ||
89 | /// <returns>On success: the user's UUID. If the user doesn't exist: UUID.Zero.</returns> | ||
90 | /// <remarks>Throws an exception if an error occurs (e.g., can't contact the server).</remarks> | ||
59 | UUID GetUUID(String first, String last); | 91 | UUID GetUUID(String first, String last); |
60 | 92 | ||
61 | // Returns the local friends online | 93 | // Returns the local friends online |
diff --git a/OpenSim/Services/Interfaces/IInventoryService.cs b/OpenSim/Services/Interfaces/IInventoryService.cs index a8bfe47..36634a3 100644 --- a/OpenSim/Services/Interfaces/IInventoryService.cs +++ b/OpenSim/Services/Interfaces/IInventoryService.cs | |||
@@ -91,7 +91,7 @@ namespace OpenSim.Services.Interfaces | |||
91 | /// </summary> | 91 | /// </summary> |
92 | /// <param name="userId"></param> | 92 | /// <param name="userId"></param> |
93 | /// <param name="folderID"></param> | 93 | /// <param name="folderID"></param> |
94 | /// <returns></returns> | 94 | /// <returns>Inventory content. null if the request failed.</returns> |
95 | InventoryCollection GetFolderContent(UUID userID, UUID folderID); | 95 | InventoryCollection GetFolderContent(UUID userID, UUID folderID); |
96 | 96 | ||
97 | /// <summary> | 97 | /// <summary> |
diff --git a/OpenSim/Services/UserAccountService/GridUserService.cs b/OpenSim/Services/UserAccountService/GridUserService.cs index bfc27b5..5aa2078 100644 --- a/OpenSim/Services/UserAccountService/GridUserService.cs +++ b/OpenSim/Services/UserAccountService/GridUserService.cs | |||
@@ -120,11 +120,13 @@ namespace OpenSim.Services.UserAccountService | |||
120 | MainConsole.Instance.OutputFormat("Users online: {0}", onlineRecentlyCount); | 120 | MainConsole.Instance.OutputFormat("Users online: {0}", onlineRecentlyCount); |
121 | } | 121 | } |
122 | 122 | ||
123 | public virtual GridUserInfo GetGridUserInfo(string userID) | 123 | private GridUserData GetGridUserData(string userID) |
124 | { | 124 | { |
125 | GridUserData d = null; | 125 | GridUserData d = null; |
126 | if (userID.Length > 36) // it's a UUI | 126 | if (userID.Length > 36) // it's a UUI |
127 | { | ||
127 | d = m_Database.Get(userID); | 128 | d = m_Database.Get(userID); |
129 | } | ||
128 | else // it's a UUID | 130 | else // it's a UUID |
129 | { | 131 | { |
130 | GridUserData[] ds = m_Database.GetAll(userID); | 132 | GridUserData[] ds = m_Database.GetAll(userID); |
@@ -140,6 +142,13 @@ namespace OpenSim.Services.UserAccountService | |||
140 | } | 142 | } |
141 | } | 143 | } |
142 | 144 | ||
145 | return d; | ||
146 | } | ||
147 | |||
148 | public virtual GridUserInfo GetGridUserInfo(string userID) | ||
149 | { | ||
150 | GridUserData d = GetGridUserData(userID); | ||
151 | |||
143 | if (d == null) | 152 | if (d == null) |
144 | return null; | 153 | return null; |
145 | 154 | ||
@@ -173,7 +182,8 @@ namespace OpenSim.Services.UserAccountService | |||
173 | public GridUserInfo LoggedIn(string userID) | 182 | public GridUserInfo LoggedIn(string userID) |
174 | { | 183 | { |
175 | m_log.DebugFormat("[GRID USER SERVICE]: User {0} is online", userID); | 184 | m_log.DebugFormat("[GRID USER SERVICE]: User {0} is online", userID); |
176 | GridUserData d = m_Database.Get(userID); | 185 | |
186 | GridUserData d = GetGridUserData(userID); | ||
177 | 187 | ||
178 | if (d == null) | 188 | if (d == null) |
179 | { | 189 | { |
@@ -192,7 +202,8 @@ namespace OpenSim.Services.UserAccountService | |||
192 | public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt) | 202 | public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt) |
193 | { | 203 | { |
194 | m_log.DebugFormat("[GRID USER SERVICE]: User {0} is offline", userID); | 204 | m_log.DebugFormat("[GRID USER SERVICE]: User {0} is offline", userID); |
195 | GridUserData d = m_Database.Get(userID); | 205 | |
206 | GridUserData d = GetGridUserData(userID); | ||
196 | 207 | ||
197 | if (d == null) | 208 | if (d == null) |
198 | { | 209 | { |
@@ -211,7 +222,8 @@ namespace OpenSim.Services.UserAccountService | |||
211 | 222 | ||
212 | public bool SetHome(string userID, UUID homeID, Vector3 homePosition, Vector3 homeLookAt) | 223 | public bool SetHome(string userID, UUID homeID, Vector3 homePosition, Vector3 homeLookAt) |
213 | { | 224 | { |
214 | GridUserData d = m_Database.Get(userID); | 225 | GridUserData d = GetGridUserData(userID); |
226 | |||
215 | if (d == null) | 227 | if (d == null) |
216 | { | 228 | { |
217 | d = new GridUserData(); | 229 | d = new GridUserData(); |
@@ -229,7 +241,8 @@ namespace OpenSim.Services.UserAccountService | |||
229 | { | 241 | { |
230 | // m_log.DebugFormat("[GRID USER SERVICE]: SetLastPosition for {0}", userID); | 242 | // m_log.DebugFormat("[GRID USER SERVICE]: SetLastPosition for {0}", userID); |
231 | 243 | ||
232 | GridUserData d = m_Database.Get(userID); | 244 | GridUserData d = GetGridUserData(userID); |
245 | |||
233 | if (d == null) | 246 | if (d == null) |
234 | { | 247 | { |
235 | d = new GridUserData(); | 248 | d = new GridUserData(); |
@@ -243,4 +256,4 @@ namespace OpenSim.Services.UserAccountService | |||
243 | return m_Database.Store(d); | 256 | return m_Database.Store(d); |
244 | } | 257 | } |
245 | } | 258 | } |
246 | } | 259 | } \ No newline at end of file |