diff options
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Avatar/Chat')
-rw-r--r-- | OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs index 85262f5..befa89f 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs | |||
@@ -151,6 +151,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
151 | public void Close() | 151 | public void Close() |
152 | { | 152 | { |
153 | m_irc.Close(); | 153 | m_irc.Close(); |
154 | m_log.Info("[IRC] closed connection to IRC server"); | ||
154 | } | 155 | } |
155 | 156 | ||
156 | public string Name | 157 | public string Name |
@@ -324,9 +325,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
324 | // if IRC is enabled then just keep trying using a monitor thread | 325 | // if IRC is enabled then just keep trying using a monitor thread |
325 | public void IRCConnectRun() | 326 | public void IRCConnectRun() |
326 | { | 327 | { |
327 | while (true) | 328 | while (m_irc.Enabled) |
328 | { | 329 | { |
329 | if ((m_irc.Enabled) && (!m_irc.Connected)) | 330 | if (!m_irc.Connected) |
330 | { | 331 | { |
331 | m_irc.Connect(m_scenes); | 332 | m_irc.Connect(m_scenes); |
332 | } | 333 | } |
@@ -538,7 +539,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
538 | m_log.Info("[IRC]: ExtractMsg: " + input); | 539 | m_log.Info("[IRC]: ExtractMsg: " + input); |
539 | Dictionary<string, string> result = null; | 540 | Dictionary<string, string> result = null; |
540 | //string regex = @":(?<nick>\w*)!~(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)"; | 541 | //string regex = @":(?<nick>\w*)!~(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)"; |
541 | string regex = @":(?<nick>\w*)!(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)"; | 542 | string regex = @":(?<nick>[\w-]*)!(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)"; |
542 | Regex RE = new Regex(regex, RegexOptions.Multiline); | 543 | Regex RE = new Regex(regex, RegexOptions.Multiline); |
543 | MatchCollection matches = RE.Matches(input); | 544 | MatchCollection matches = RE.Matches(input); |
544 | 545 | ||
@@ -566,7 +567,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
566 | { | 567 | { |
567 | // IRC keep alive thread | 568 | // IRC keep alive thread |
568 | // send PING ever 15 seconds | 569 | // send PING ever 15 seconds |
569 | while (true) | 570 | while (m_enabled) |
570 | { | 571 | { |
571 | try | 572 | try |
572 | { | 573 | { |
@@ -579,8 +580,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
579 | } | 580 | } |
580 | catch (IOException) | 581 | catch (IOException) |
581 | { | 582 | { |
582 | m_log.Error("[IRC]: Disconnected from IRC server.(PingRun)"); | 583 | if (m_enabled) |
583 | Reconnect(); | 584 | { |
585 | m_log.Error("[IRC]: Disconnected from IRC server.(PingRun)"); | ||
586 | Reconnect(); | ||
587 | } | ||
584 | } | 588 | } |
585 | catch (Exception ex) | 589 | catch (Exception ex) |
586 | { | 590 | { |
@@ -593,7 +597,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
593 | { | 597 | { |
594 | string inputLine; | 598 | string inputLine; |
595 | LLVector3 pos = new LLVector3(128, 128, 20); | 599 | LLVector3 pos = new LLVector3(128, 128, 20); |
596 | while (true) | 600 | while (m_enabled) |
597 | { | 601 | { |
598 | try | 602 | try |
599 | { | 603 | { |
@@ -637,8 +641,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
637 | } | 641 | } |
638 | catch (IOException) | 642 | catch (IOException) |
639 | { | 643 | { |
640 | m_log.Error("[IRC]: ListenerRun IOException. Disconnected from IRC server ??? (ListenerRun)"); | 644 | if (m_enabled) |
641 | Reconnect(); | 645 | { |
646 | m_log.Error("[IRC]: ListenerRun IOException. Disconnected from IRC server ??? (ListenerRun)"); | ||
647 | Reconnect(); | ||
648 | } | ||
642 | } | 649 | } |
643 | catch (Exception ex) | 650 | catch (Exception ex) |
644 | { | 651 | { |
@@ -838,13 +845,19 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat | |||
838 | 845 | ||
839 | public void Close() | 846 | public void Close() |
840 | { | 847 | { |
841 | m_connected = false; | 848 | m_writer.WriteLine(String.Format("QUIT :{0} to {1} wormhole to {2} closing", |
842 | m_writer.WriteLine(String.Format("QUIT :{0} to {1} wormhole with {2} closing", m_nick, m_channel, m_server)); | 849 | m_nick, m_channel, m_server)); |
843 | m_writer.Flush(); | 850 | m_writer.Flush(); |
844 | listener.Abort(); | 851 | |
845 | pingSender.Abort(); | 852 | m_connected = false; |
853 | m_enabled = false; | ||
854 | |||
855 | // listener.Abort(); | ||
856 | // pingSender.Abort(); | ||
857 | |||
846 | m_writer.Close(); | 858 | m_writer.Close(); |
847 | m_reader.Close(); | 859 | m_reader.Close(); |
860 | |||
848 | m_tcp.Close(); | 861 | m_tcp.Close(); |
849 | } | 862 | } |
850 | } | 863 | } |