Wait until the welcome message before connection is ok (irc). Fixes #62

This commit is contained in:
Wim 2016-10-29 18:59:12 +02:00
parent 4a336a6bba
commit 5249568b8e
1 changed files with 19 additions and 9 deletions

View File

@ -2,6 +2,7 @@ package birc
import (
"crypto/tls"
"fmt"
"github.com/42wim/matterbridge/bridge/config"
log "github.com/Sirupsen/logrus"
ircm "github.com/sorcix/irc"
@ -14,13 +15,14 @@ import (
)
type Birc struct {
i *irc.Connection
Nick string
names map[string][]string
Config *config.Protocol
origin string
protocol string
Remote chan config.Message
i *irc.Connection
Nick string
names map[string][]string
Config *config.Protocol
origin string
protocol string
Remote chan config.Message
connected chan struct{}
}
var flog *log.Entry
@ -38,6 +40,7 @@ func New(config config.Protocol, origin string, c chan config.Message) *Birc {
b.names = make(map[string][]string)
b.origin = origin
b.protocol = protocol
b.connected = make(chan struct{})
return b
}
@ -70,9 +73,14 @@ func (b *Birc) Connect() error {
if err != nil {
return err
}
flog.Info("Connection succeeded")
i.Debug = false
b.i = i
select {
case <-b.connected:
flog.Info("Connection succeeded")
case <-time.After(time.Second * 30):
return fmt.Errorf("connection timed out")
}
i.Debug = false
return nil
}
@ -143,6 +151,8 @@ func (b *Birc) handleNewConnection(event *irc.Event) {
flog.Debugf("PING/PONG")
})
i.AddCallback("*", b.handleOther)
// we are now fully connected
b.connected <- struct{}{}
}
func (b *Birc) handleNotice(event *irc.Event) {