diff options
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs | 52 |
2 files changed, 35 insertions, 21 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 1da9aab..c952ebf 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -356,12 +356,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
356 | PresenceInfo[] presences = PresenceService.GetAgents(new string[] { fid }); | 356 | PresenceInfo[] presences = PresenceService.GetAgents(new string[] { fid }); |
357 | if (presences != null && presences.Length > 0) | 357 | if (presences != null && presences.Length > 0) |
358 | presence = presences[0]; | 358 | presence = presences[0]; |
359 | if (presence != null) | 359 | im.offline = 0; |
360 | im.offline = 0; | ||
361 | 360 | ||
362 | im.fromAgentID = fromAgentID.Guid; | 361 | im.fromAgentID = fromAgentID.Guid; |
363 | im.fromAgentName = firstname + " " + lastname; | 362 | im.fromAgentName = firstname + " " + lastname; |
364 | im.offline = (byte)((presence == null) ? 1 : 0); | ||
365 | im.imSessionID = im.fromAgentID; | 363 | im.imSessionID = im.fromAgentID; |
366 | im.message = FriendshipMessage(fid); | 364 | im.message = FriendshipMessage(fid); |
367 | 365 | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs index 8d055d4..de25048 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs | |||
@@ -201,26 +201,42 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
201 | 201 | ||
202 | private void UndeliveredMessage(GridInstantMessage im) | 202 | private void UndeliveredMessage(GridInstantMessage im) |
203 | { | 203 | { |
204 | if ((im.offline != 0) | 204 | if (im.dialog != (byte)InstantMessageDialog.MessageFromObject && |
205 | && (!im.fromGroup || (im.fromGroup && m_ForwardOfflineGroupMessages))) | 205 | im.dialog != (byte)InstantMessageDialog.MessageFromAgent && |
206 | im.dialog != (byte)InstantMessageDialog.GroupNotice && | ||
207 | im.dialog != (byte)InstantMessageDialog.GroupInvitation && | ||
208 | im.dialog != (byte)InstantMessageDialog.InventoryOffered) | ||
206 | { | 209 | { |
207 | bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>( | 210 | return; |
208 | "POST", m_RestURL+"/SaveMessage/", im); | 211 | } |
209 | 212 | ||
210 | if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) | 213 | if (!m_ForwardOfflineGroupMessages) |
211 | { | 214 | { |
212 | IClientAPI client = FindClient(new UUID(im.fromAgentID)); | 215 | if (im.dialog == (byte)InstantMessageDialog.GroupNotice || |
213 | if (client == null) | 216 | im.dialog != (byte)InstantMessageDialog.GroupInvitation) |
214 | return; | 217 | return; |
215 | 218 | } | |
216 | client.SendInstantMessage(new GridInstantMessage( | 219 | |
217 | null, new UUID(im.toAgentID), | 220 | Scene scene = FindScene(new UUID(im.fromAgentID)); |
218 | "System", new UUID(im.fromAgentID), | 221 | if (scene == null) |
219 | (byte)InstantMessageDialog.MessageFromAgent, | 222 | scene = m_SceneList[0]; |
220 | "User is not logged in. "+ | 223 | |
221 | (success ? "Message saved." : "Message not saved"), | 224 | bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>( |
222 | false, new Vector3())); | 225 | "POST", m_RestURL+"/SaveMessage/", im); |
223 | } | 226 | |
227 | if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) | ||
228 | { | ||
229 | IClientAPI client = FindClient(new UUID(im.fromAgentID)); | ||
230 | if (client == null) | ||
231 | return; | ||
232 | |||
233 | client.SendInstantMessage(new GridInstantMessage( | ||
234 | null, new UUID(im.toAgentID), | ||
235 | "System", new UUID(im.fromAgentID), | ||
236 | (byte)InstantMessageDialog.MessageFromAgent, | ||
237 | "User is not logged in. "+ | ||
238 | (success ? "Message saved." : "Message not saved"), | ||
239 | false, new Vector3())); | ||
224 | } | 240 | } |
225 | } | 241 | } |
226 | } | 242 | } |