Skip to content

Commit 8f99172

Browse files
committed
platform: Fix clash server reload on android
1 parent bc6ae99 commit 8f99172

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

experimental/clashapi/server.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import (
77
"net"
88
"net/http"
99
"os"
10+
"runtime"
1011
"strings"
12+
"syscall"
1113
"time"
1214

1315
"github.com/sagernet/sing-box/adapter"
@@ -143,7 +145,18 @@ func (s *Server) PreStart() error {
143145
func (s *Server) Start() error {
144146
if s.externalController {
145147
s.checkAndDownloadExternalUI()
146-
listener, err := net.Listen("tcp", s.httpServer.Addr)
148+
var (
149+
listener net.Listener
150+
err error
151+
)
152+
for i := 0; i < 3; i++ {
153+
listener, err = net.Listen("tcp", s.httpServer.Addr)
154+
if runtime.GOOS == "android" && errors.Is(err, syscall.EADDRINUSE) {
155+
time.Sleep(100 * time.Millisecond)
156+
continue
157+
}
158+
break
159+
}
147160
if err != nil {
148161
return E.Cause(err, "external controller listen error")
149162
}

0 commit comments

Comments
 (0)