瀏覽代碼

Add some additional checks for a portal creation

Refs #15
Gary Kramlich 3 年之前
父節點
當前提交
91a08dfd15
共有 2 個文件被更改,包括 10 次插入3 次删除
  1. 6 3
      bridge/portal.go
  2. 4 0
      bridge/user.go

+ 6 - 3
bridge/portal.go

@@ -171,14 +171,17 @@ func (p *Portal) MainIntent() *appservice.IntentAPI {
 }
 
 func (p *Portal) createMatrixRoom(user *User, channel *discordgo.Channel) error {
+	p.roomCreateLock.Lock()
+	defer p.roomCreateLock.Unlock()
+	if p.MXID != "" {
+		return nil
+	}
+
 	p.Type = channel.Type
 	if p.Type == discordgo.ChannelTypeDM {
 		p.DMUser = channel.Recipients[0].ID
 	}
 
-	p.roomCreateLock.Lock()
-	defer p.roomCreateLock.Unlock()
-
 	// If we have a matrix id the room should exist so we have nothing to do.
 	if p.MXID != "" {
 		return nil

+ 4 - 0
bridge/user.go

@@ -374,6 +374,10 @@ func (u *User) channelCreateHandler(s *discordgo.Session, c *discordgo.ChannelCr
 	key := database.NewPortalKey(c.ID, u.User.ID)
 	portal := u.bridge.GetPortalByID(key)
 
+	if portal.MXID != "" {
+		return
+	}
+
 	portal.Name = c.Name
 	portal.Topic = c.Topic
 	portal.Type = c.Type