aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs60
1 files changed, 39 insertions, 21 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs
index d09c669..77bc9d7 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs
@@ -55,18 +55,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
55 55
56 lock (m_SceneList) 56 lock (m_SceneList)
57 { 57 {
58 if (m_SceneList.Count == 0)
59 {
60 IMessageTransferModule trans = scene.RequestModuleInterface<IMessageTransferModule>();
61 if (trans == null)
62 {
63 enabled = false;
64 return;
65 }
66
67 trans.OnUndeliveredMessage += UndeliveredMessage;
68 }
69
70 if (!m_SceneList.Contains(scene)) 58 if (!m_SceneList.Contains(scene))
71 m_SceneList.Add(scene); 59 m_SceneList.Add(scene);
72 60
@@ -76,6 +64,28 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
76 64
77 public void PostInitialise() 65 public void PostInitialise()
78 { 66 {
67 if (m_SceneList.Count == 0)
68 return;
69
70 IMessageTransferModule trans = m_SceneList[0].RequestModuleInterface<IMessageTransferModule>();
71 if (trans == null)
72 {
73 enabled = false;
74
75 lock (m_SceneList)
76 {
77 foreach (Scene s in m_SceneList)
78 s.EventManager.OnNewClient -= OnNewClient;
79
80 m_SceneList.Clear();
81 }
82
83 return;
84 }
85
86 trans.OnUndeliveredMessage += UndeliveredMessage;
87
88 m_log.Debug("[OFFLINE MESSAGING] Offline messages enabled");
79 } 89 }
80 90
81 public string Name 91 public string Name
@@ -115,16 +125,24 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
115 125
116 private void UndeliveredMessage(GridInstantMessage im) 126 private void UndeliveredMessage(GridInstantMessage im)
117 { 127 {
118 IClientAPI client = FindClient(new UUID(im.toAgentID)); 128 if (im.offline != 0)
119 if (client == null) 129 {
120 return; 130 // TODO: Actually save it
131
132 if(im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
133 {
134 IClientAPI client = FindClient(new UUID(im.fromAgentID));
135 if (client == null)
136 return;
121 137
122 client.SendInstantMessage(new UUID(im.toAgentID), 138 client.SendInstantMessage(new UUID(im.fromAgentID),
123 "User is not logged in. "+ 139 "User is not logged in. "+
124 "Message saved.", 140 "Message saved.",
125 new UUID(im.fromAgentID), "System", 141 new UUID(im.toAgentID), "System",
126 (byte)InstantMessageDialog.BusyAutoResponse, 142 (byte)InstantMessageDialog.BusyAutoResponse,
127 (uint)Util.UnixTimeSinceEpoch()); 143 (uint)Util.UnixTimeSinceEpoch());
144 }
145 }
128 } 146 }
129 } 147 }
130} 148}