Ver Fonte

fix bug

Joyit há 2 semanas atrás
pai
commit
a2eeaa6b42
2 ficheiros alterados com 12 adições e 1 exclusões
  1. 1 1
      hub.go
  2. 11 0
      line.go

+ 1 - 1
hub.go

@@ -592,7 +592,7 @@ func (h *Hub) BindForServer(info *HostInfo) (err error) {
 		done := false
 		h.connects.Range(func(key, _ any) bool {
 			line := key.(*Line)
-			if line.state == Disconnected && line.channel == channel && line.host == nil {
+			if line.state == Disconnected && line.host == nil && line.ChannelEqualWithoutPrefix(channel) {
 				line.Start(conn, nil)
 				done = true
 				return false

+ 11 - 0
line.go

@@ -78,6 +78,17 @@ func (c *Line) RemoveChannelName() {
 	}
 }
 
+// 频道是否相等,不包括@前面部分
+func (c *Line) ChannelEqualWithoutPrefix(channel string) bool {
+	if inx := strings.Index(channel, "@"); inx >= 0 {
+		channel = channel[inx+1:]
+	}
+	if inx := strings.Index(c.channel, "@"); inx >= 0 {
+		return channel == c.channel[inx+1:]
+	}
+	return channel == c.channel
+}
+
 // 获取远程的地址
 func (c *Line) RemoteAddr() net.Addr {
 	if c.state == Connected {