add weight for selector

This commit is contained in:
ginuerzh
2022-09-02 17:23:59 +08:00
parent c643014e12
commit 00f7fa2997
16 changed files with 109 additions and 45 deletions

View File

@ -221,7 +221,7 @@ func (h *dnsHandler) exchange(ctx context.Context, msg []byte, log logger.Logger
return nil, err
}
ex := h.selectExchanger(strings.Trim(mq.Question[0].Name, "."))
ex := h.selectExchanger(ctx, strings.Trim(mq.Question[0].Name, "."))
if ex == nil {
err := fmt.Errorf("exchange not found for %s", mq.Question[0].Name)
log.Error(err)
@ -293,11 +293,11 @@ func (h *dnsHandler) lookupHosts(r *dns.Msg, log logger.Logger) (m *dns.Msg) {
return
}
func (h *dnsHandler) selectExchanger(addr string) exchanger.Exchanger {
func (h *dnsHandler) selectExchanger(ctx context.Context, addr string) exchanger.Exchanger {
if h.group == nil {
return nil
}
node := h.group.FilterAddr(addr).Next()
node := h.group.FilterAddr(addr).Next(ctx)
if node == nil {
return nil
}

View File

@ -77,7 +77,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn, opts ...hand
}).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr())
}()
target := h.group.Next()
target := h.group.Next(ctx)
if target == nil {
err := errors.New("target not available")
log.Error(err)

View File

@ -71,7 +71,7 @@ func (h *forwardHandler) Handle(ctx context.Context, conn net.Conn, opts ...hand
}).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr())
}()
target := h.group.Next()
target := h.group.Next(ctx)
if target == nil {
err := errors.New("target not available")
log.Error(err)

View File

@ -17,7 +17,7 @@ func (h *relayHandler) handleForward(ctx context.Context, conn net.Conn, network
Version: relay.Version1,
Status: relay.StatusOK,
}
target := h.group.Next()
target := h.group.Next(ctx)
if target == nil {
resp.Status = relay.StatusServiceUnavailable
resp.WriteTo(conn)

View File

@ -105,7 +105,7 @@ func (h *tapHandler) Handle(ctx context.Context, conn net.Conn, opts ...handler.
var raddr net.Addr
var err error
target := h.group.Next()
target := h.group.Next(ctx)
if target != nil {
raddr, err = net.ResolveUDPAddr(network, target.Addr)
if err != nil {

View File

@ -87,7 +87,7 @@ func (h *tunHandler) Handle(ctx context.Context, conn net.Conn, opts ...handler.
var raddr net.Addr
var err error
target := h.group.Next()
target := h.group.Next(ctx)
if target != nil {
raddr, err = net.ResolveUDPAddr(network, target.Addr)
if err != nil {