From d64b1174af4bb0dacef315e139e3ca030e32f900 Mon Sep 17 00:00:00 2001 From: Kawin Viriyaprasopsook Date: Tue, 23 Jul 2024 08:20:59 +0700 Subject: [PATCH] =?UTF-8?q?=E2=8F=AA=20keep=20compatible=20with=20go=201.2?= =?UTF-8?q?0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/upstreams.go | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/upstreams.go b/src/upstreams.go index 8241f04..3ab2eab 100644 --- a/src/upstreams.go +++ b/src/upstreams.go @@ -1,10 +1,9 @@ package main import ( - "cmp" "encoding/json" "net/http" - "slices" + "sort" "strings" "imuslab.com/zoraxy/mod/dynamicproxy/loadbalance" @@ -34,22 +33,19 @@ func ReverseProxyUpstreamList(w http.ResponseWriter, r *http.Request) { activeUpstreams := targetEndpoint.ActiveOrigins inactiveUpstreams := targetEndpoint.InactiveOrigins - slices.SortStableFunc(activeUpstreams, func(i, j *loadbalance.Upstream) int { - if i.Weight != j.Weight { - // sort by weight DESC - return cmp.Compare(j.Weight, i.Weight) + // Sort the upstreams slice by weight, then by origin domain alphabetically + sort.Slice(activeUpstreams, func(i, j int) bool { + if activeUpstreams[i].Weight != activeUpstreams[j].Weight { + return activeUpstreams[i].Weight > activeUpstreams[j].Weight } - // sort by origin ASC - return cmp.Compare(i.OriginIpOrDomain, j.OriginIpOrDomain) + return activeUpstreams[i].OriginIpOrDomain < activeUpstreams[j].OriginIpOrDomain }) - slices.SortStableFunc(inactiveUpstreams, func(i, j *loadbalance.Upstream) int { - if i.Weight != j.Weight { - // sort by weight DESC - return cmp.Compare(j.Weight, i.Weight) + sort.Slice(inactiveUpstreams, func(i, j int) bool { + if inactiveUpstreams[i].Weight != inactiveUpstreams[j].Weight { + return inactiveUpstreams[i].Weight > inactiveUpstreams[j].Weight } - // sort by origin ASC - return cmp.Compare(i.OriginIpOrDomain, j.OriginIpOrDomain) + return inactiveUpstreams[i].OriginIpOrDomain < inactiveUpstreams[j].OriginIpOrDomain }) type UpstreamCombinedList struct {