diff options
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Avatar')
-rw-r--r-- | OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs index 339f1f9..cd8c82c 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs | |||
@@ -127,12 +127,25 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage | |||
127 | return; | 127 | return; |
128 | } | 128 | } |
129 | 129 | ||
130 | IScene scene = client == null ? null : client.Scene; | 130 | GridInstantMessage im = new GridInstantMessage(client.Scene, |
131 | GridInstantMessage im = new GridInstantMessage(scene, | ||
132 | fromAgentID, fromAgentName, fromAgentSession, toAgentID, | 131 | fromAgentID, fromAgentName, fromAgentSession, toAgentID, |
133 | dialog, fromGroup, message, imSessionID, | 132 | dialog, fromGroup, message, imSessionID, |
134 | offline != 0 ? true : false, Position, | 133 | offline != 0 ? true : false, Position, |
135 | binaryBucket); | 134 | binaryBucket); |
135 | |||
136 | ProcessInstantMessage(client, im); | ||
137 | } | ||
138 | |||
139 | private void ProcessInstantMessage(IClientAPI client, GridInstantMessage im) | ||
140 | { | ||
141 | byte dialog = im.dialog; | ||
142 | |||
143 | if ( dialog != (byte)InstantMessageDialog.MessageFromAgent | ||
144 | && dialog != (byte)InstantMessageDialog.StartTyping | ||
145 | && dialog != (byte)InstantMessageDialog.StopTyping) | ||
146 | { | ||
147 | return; | ||
148 | } | ||
136 | 149 | ||
137 | if (m_TransferModule != null) | 150 | if (m_TransferModule != null) |
138 | { | 151 | { |
@@ -147,10 +160,10 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage | |||
147 | 160 | ||
148 | if ((client != null) && !success) | 161 | if ((client != null) && !success) |
149 | { | 162 | { |
150 | client.SendInstantMessage(toAgentID, | 163 | client.SendInstantMessage(new UUID(im.toAgentID), |
151 | "Unable to send instant message. "+ | 164 | "Unable to send instant message. "+ |
152 | "User is not logged in.", | 165 | "User is not logged in.", |
153 | fromAgentID, "System", | 166 | new UUID(im.fromAgentID), "System", |
154 | (byte)InstantMessageDialog.BusyAutoResponse, | 167 | (byte)InstantMessageDialog.BusyAutoResponse, |
155 | (uint)Util.UnixTimeSinceEpoch()); | 168 | (uint)Util.UnixTimeSinceEpoch()); |
156 | } | 169 | } |
@@ -170,13 +183,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage | |||
170 | // so we can depend on the above not trying to send | 183 | // so we can depend on the above not trying to send |
171 | // via grid again | 184 | // via grid again |
172 | // | 185 | // |
173 | OnInstantMessage(null, new UUID(msg.fromAgentID), | 186 | ProcessInstantMessage(null, msg); |
174 | new UUID(msg.fromAgentSession), | ||
175 | new UUID(msg.toAgentID), new UUID(msg.imSessionID), | ||
176 | msg.timestamp, msg.fromAgentName, msg.message, | ||
177 | msg.dialog, msg.fromGroup, msg.offline, | ||
178 | msg.ParentEstateID, msg.Position, | ||
179 | new UUID(msg.RegionID), msg.binaryBucket); | ||
180 | } | 187 | } |
181 | } | 188 | } |
182 | } | 189 | } |