Backoff for 60 seconds when reconnecting too fast

This commit is contained in:
Wim 2017-09-25 21:12:23 +02:00
parent 7aabe12acf
commit a61e2db7cb
1 changed files with 6 additions and 0 deletions

View File

@ -227,12 +227,17 @@ func (irc *Connection) isQuitting() bool {
// 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()
connTime := time.Now()
for !irc.isQuitting() { for !irc.isQuitting() {
err := <-errChan err := <-errChan
close(irc.end) close(irc.end)
irc.Wait() irc.Wait()
for !irc.isQuitting() { for !irc.isQuitting() {
irc.Log.Printf("Error, disconnected: %s\n", err) irc.Log.Printf("Error, disconnected: %s\n", err)
if time.Now().Sub(connTime) < time.Second*5 {
irc.Log.Println("Rreconnecting too fast, sleeping 60 seconds")
time.Sleep(60 * time.Second)
}
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(60 * time.Second) time.Sleep(60 * time.Second)
@ -241,6 +246,7 @@ func (irc *Connection) Loop() {
break break
} }
} }
connTime = time.Now()
} }
} }