diff --git a/account.go b/account.go index 0d7f94c..7c58611 100644 --- a/account.go +++ b/account.go @@ -34,13 +34,13 @@ func SetAccount(mxid string, name string, protocol string, config map[string]str accounts := registeredAccounts[mxid] if prev_acct, ok := accounts[name]; ok { - prev_acct.Conn.Close() - prev_acct.JoinedRooms = map[RoomID]bool{} - if protocol != prev_acct.Protocol { return fmt.Errorf("Wrong protocol") } if !reflect.DeepEqual(config, prev_acct.Config) { + prev_acct.Conn.Close() + prev_acct.JoinedRooms = map[RoomID]bool{} + prev_acct.Config = config go prev_acct.connect() } diff --git a/connector/irc/irc.go b/connector/irc/irc.go index d69884e..977b71d 100644 --- a/connector/irc/irc.go +++ b/connector/irc/irc.go @@ -251,6 +251,7 @@ func (irc *IRC) Send(event *Event) error { func (irc *IRC) Close() { conn := irc.conn irc.conn = nil + irc.connected = false if conn != nil { conn.Close() } diff --git a/connector/xmpp/xmpp.go b/connector/xmpp/xmpp.go index f1a75b2..4af016c 100644 --- a/connector/xmpp/xmpp.go +++ b/connector/xmpp/xmpp.go @@ -351,4 +351,5 @@ func (xm *XMPP) Close() { } xm.conn = nil xm.connectorLoopNum += 1 + xm.connected = false }