Merge pull request #69 from peted27/master

fix reconnection logic
This commit is contained in:
Thomas Jager 2015-12-05 11:32:46 +01:00
commit a767654908
2 changed files with 8 additions and 9 deletions

16
irc.go
View File

@ -67,7 +67,7 @@ func (irc *Connection) readLoop() {
if err != nil { if err != nil {
errChan <- err errChan <- err
break return
} }
if irc.Debug { if irc.Debug {
@ -129,8 +129,7 @@ func (irc *Connection) writeLoop() {
select { select {
case <-irc.end: case <-irc.end:
return return
default: case b, ok := <-irc.pwrite:
b, ok := <-irc.pwrite
if !ok || b == "" || irc.socket == nil { if !ok || b == "" || irc.socket == nil {
return return
} }
@ -189,17 +188,15 @@ func (irc *Connection) pingLoop() {
// Main loop to control the connection. // Main loop to control the connection.
func (irc *Connection) Loop() { func (irc *Connection) Loop() {
errChan := irc.ErrorChan() errChan := irc.ErrorChan()
for !irc.stopped { for !irc.quit {
err := <-errChan err := <-errChan
if irc.stopped {
break
}
irc.Log.Printf("Error, disconnected: %s\n", err) irc.Log.Printf("Error, disconnected: %s\n", err)
for !irc.stopped { for !irc.quit {
if err = irc.Reconnect(); err != nil { if err = irc.Reconnect(); err != nil {
irc.Log.Printf("Error while reconnecting: %s\n", err) irc.Log.Printf("Error while reconnecting: %s\n", err)
time.Sleep(1 * time.Second) time.Sleep(60 * time.Second)
} else { } else {
errChan = irc.ErrorChan()
break break
} }
} }
@ -217,6 +214,7 @@ func (irc *Connection) Quit() {
irc.SendRaw(quit) irc.SendRaw(quit)
irc.stopped = true irc.stopped = true
irc.quit = true
} }
// Use the connection to join a given channel. // Use the connection to join a given channel.

View File

@ -42,6 +42,7 @@ type Connection struct {
Log *log.Logger Log *log.Logger
stopped bool stopped bool
quit bool
} }
// A struct to represent an event. // A struct to represent an event.