|
|
@@ -205,7 +205,7 @@ func (h *Hub) ChannelToFunc(fn func(string) bool) {
|
|
|
// 从 channel 获取连接
|
|
|
func (h *Hub) ChannelToLine(channel string) (line *Line) {
|
|
|
h.lines.Range(func(id int, l *Line) bool {
|
|
|
- if l.channel == channel {
|
|
|
+ if l.IsChannelEqual(channel) {
|
|
|
line = l
|
|
|
return false
|
|
|
}
|
|
|
@@ -451,7 +451,6 @@ func (h *Hub) GetWithStruct(gd *GetData, backFunc GetBackFunc) (count int) {
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
- // return
|
|
|
}
|
|
|
|
|
|
// 请求频道并获取数据,采用回调的方式返回结果
|
|
|
@@ -602,7 +601,7 @@ func (h *Hub) BindForServer(info *HostInfo) (err error) {
|
|
|
// 将连接加入现有连接中
|
|
|
done := false
|
|
|
h.lines.Range(func(id int, line *Line) bool {
|
|
|
- if line.state == Disconnected && line.host == nil && line.ChannelEqualWithoutPrefix(channel) {
|
|
|
+ if line.state == Disconnected && line.host == nil && line.IsChannelEqual(channel) {
|
|
|
line.Start(conn, nil)
|
|
|
done = true
|
|
|
return false
|
|
|
@@ -698,8 +697,14 @@ func (h *Hub) ConnectToServer(channel string, force bool, host *HostInfo) (err e
|
|
|
done = true
|
|
|
return errors.New("timeout")
|
|
|
}
|
|
|
+
|
|
|
+ // 如果 host 是代理,将代理信息添加到channel中
|
|
|
+ localChannel := h.channel
|
|
|
+ if host.Proxy {
|
|
|
+ localChannel = localChannel + "?proxy=" + host.Host
|
|
|
+ }
|
|
|
// 发送验证信息
|
|
|
- if err := conn.WriteAuthInfo(h.channel, h.authFunc(runProto, host.Version, channel, nil)); err != nil {
|
|
|
+ if err := conn.WriteAuthInfo(localChannel, h.authFunc(runProto, host.Version, channel, nil)); err != nil {
|
|
|
log.Println("[WriteAuthInfo ERROR]", err)
|
|
|
conn.Close()
|
|
|
host.Errors++
|