diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs index b5d9fda..27ab32f 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs | |||
@@ -38,7 +38,7 @@ using OpenSim.Region.Framework.Scenes; | |||
38 | namespace OpenSim.Region.OptionalModules.Avatar.Chat | 38 | namespace OpenSim.Region.OptionalModules.Avatar.Chat |
39 | { | 39 | { |
40 | 40 | ||
41 | // An instance of this class exists for each unique combination of | 41 | // An instance of this class exists for each unique combination of |
42 | // IRC chat interface characteristics, as determined by the supplied | 42 | // IRC chat interface characteristics, as determined by the supplied |
43 | // configuration file. | 43 | // configuration file. |
44 | 44 | ||
@@ -48,7 +48,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
48 | private static readonly ILog m_log = | 48 | private static readonly ILog m_log = |
49 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 49 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
50 | 50 | ||
51 | private static Regex arg = new Regex(@"\[[^\[\]]*\]"); | 51 | private static Regex arg = new Regex(@"(?<!\\)\[[^\[\]]*(?<!\\)\]"); |
52 | private static int _idk_ = 0; | 52 | private static int _idk_ = 0; |
53 | private static int DEBUG_CHANNEL = 2147483647; | 53 | private static int DEBUG_CHANNEL = 2147483647; |
54 | 54 | ||
@@ -266,11 +266,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
266 | ChannelState cs = p_cs; | 266 | ChannelState cs = p_cs; |
267 | 267 | ||
268 | // Check to see if we have an existing server/channel setup that can be used | 268 | // Check to see if we have an existing server/channel setup that can be used |
269 | // In the absence of variable substitution this will always resolve to the | 269 | // In the absence of variable substitution this will always resolve to the |
270 | // same ChannelState instance, and the table will only contains a single | 270 | // same ChannelState instance, and the table will only contains a single |
271 | // entry, so the performance considerations for the existing behavior are | 271 | // entry, so the performance considerations for the existing behavior are |
272 | // zero. Only the IRC connector is shared, the ChannelState still contains | 272 | // zero. Only the IRC connector is shared, the ChannelState still contains |
273 | // values that, while independent of the IRC connetion, do still distinguish | 273 | // values that, while independent of the IRC connetion, do still distinguish |
274 | // this region's behavior. | 274 | // this region's behavior. |
275 | 275 | ||
276 | lock (IRCBridgeModule.m_channels) | 276 | lock (IRCBridgeModule.m_channels) |
@@ -335,7 +335,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
335 | 335 | ||
336 | } | 336 | } |
337 | 337 | ||
338 | // These routines allow differentiating changes to | 338 | // These routines allow differentiating changes to |
339 | // the underlying channel state. If necessary, a | 339 | // the underlying channel state. If necessary, a |
340 | // new channel state will be created. | 340 | // new channel state will be created. |
341 | 341 | ||
@@ -426,7 +426,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
426 | } | 426 | } |
427 | 427 | ||
428 | // This level of obsessive matching allows us to produce | 428 | // This level of obsessive matching allows us to produce |
429 | // a minimal overhead int he case of a server which does | 429 | // a minimal overhead int he case of a server which does |
430 | // need to differentiate IRC at a region level. | 430 | // need to differentiate IRC at a region level. |
431 | 431 | ||
432 | private bool IsAPerfectMatchFor(ChannelState cs) | 432 | private bool IsAPerfectMatchFor(ChannelState cs) |
@@ -447,8 +447,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
447 | ); | 447 | ); |
448 | } | 448 | } |
449 | 449 | ||
450 | // This function implements the variable substitution mechanism | 450 | // This function implements the variable substitution mechanism |
451 | // for the configuration values. Each string read from the | 451 | // for the configuration values. Each string read from the |
452 | // configuration file is scanned for '[...]' enclosures. Each | 452 | // configuration file is scanned for '[...]' enclosures. Each |
453 | // one that is found is replaced by either a runtime variable | 453 | // one that is found is replaced by either a runtime variable |
454 | // (%xxx) or an existing configuration key. When no further | 454 | // (%xxx) or an existing configuration key. When no further |
@@ -499,6 +499,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
499 | // m_log.DebugFormat("[IRC-Channel] Parse[2]: {0}", result); | 499 | // m_log.DebugFormat("[IRC-Channel] Parse[2]: {0}", result); |
500 | } | 500 | } |
501 | 501 | ||
502 | // Now we unescape the literal brackets | ||
503 | result = result.Replace(@"\[","[").Replace(@"\]","]"); | ||
504 | |||
502 | // m_log.DebugFormat("[IRC-Channel] Parse[3]: {0}", result); | 505 | // m_log.DebugFormat("[IRC-Channel] Parse[3]: {0}", result); |
503 | return result; | 506 | return result; |
504 | 507 | ||
@@ -582,7 +585,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
582 | 585 | ||
583 | } | 586 | } |
584 | 587 | ||
585 | // This function is lifted from the IRCConnector because it | 588 | // This function is lifted from the IRCConnector because it |
586 | // contains information that is not differentiating from an | 589 | // contains information that is not differentiating from an |
587 | // IRC point-of-view. | 590 | // IRC point-of-view. |
588 | 591 | ||
@@ -595,7 +598,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
595 | { | 598 | { |
596 | 599 | ||
597 | // Scan through the set of unique channel configuration for those | 600 | // Scan through the set of unique channel configuration for those |
598 | // that belong to this connector. And then forward the message to | 601 | // that belong to this connector. And then forward the message to |
599 | // all regions known to those channels. | 602 | // all regions known to those channels. |
600 | // Note that this code is responsible for completing some of the | 603 | // Note that this code is responsible for completing some of the |
601 | // settings for the inbound OSChatMessage | 604 | // settings for the inbound OSChatMessage |