aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/Avatar
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Avatar')
-rw-r--r--OpenSim/Region/Environment/Modules/Avatar/Chat/IRCBridgeModule.cs39
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 }