1
0
forked from lug/matterbridge

Reuse connection when using same bridge with another gateway. See #87

This commit is contained in:
Wim
2017-04-01 17:24:19 +02:00
parent 1e0490bd36
commit a16ad8bf3b
8 changed files with 121 additions and 86 deletions

View File

@@ -31,6 +31,7 @@ type Bridge struct {
Account string
Protocol string
Channels map[string]config.ChannelInfo
Joined map[string]bool
}
func New(cfg *config.Config, bridge *config.Bridge, c chan config.Message) *Bridge {
@@ -42,6 +43,7 @@ func New(cfg *config.Config, bridge *config.Bridge, c chan config.Message) *Brid
b.Name = name
b.Protocol = protocol
b.Account = bridge.Account
b.Joined = make(map[string]bool)
// override config from environment
config.OverrideCfgFromEnv(cfg, protocol, name)
@@ -81,8 +83,7 @@ func New(cfg *config.Config, bridge *config.Bridge, c chan config.Message) *Brid
}
func (b *Bridge) JoinChannels() error {
exists := make(map[string]bool)
err := b.joinChannels(b.Channels, exists)
err := b.joinChannels(b.Channels, b.Joined)
if err != nil {
return err
}
@@ -94,7 +95,7 @@ func (b *Bridge) joinChannels(channels map[string]config.ChannelInfo, exists map
for ID, channel := range channels {
if !exists[ID] {
mychannel = channel.Name
log.Infof("%s: joining %s %s", b.Account, channel.Name, ID)
log.Infof("%s: joining %s (%s)", b.Account, channel.Name, ID)
if b.Protocol == "irc" && channel.Options.Key != "" {
log.Debugf("using key %s for channel %s", channel.Options.Key, channel.Name)
mychannel = mychannel + " " + channel.Options.Key