mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-10-24 23:05:01 +03:00
d2a0216e01
The panel started answering requests before the share-link generator was registered, so an "all links", client sub-links or Telegram link request that arrived during start-up got "sub link provider not registered". NewServer now takes the provider and installs it before anything listens, and the provider registry is guarded by a lock, since start-up writes it while requests read it.
39 lines
959 B
Go
39 lines
959 B
Go
package web
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestServerStopWhenXrayNotRunningSucceeds(t *testing.T) {
|
|
t.Setenv("XUI_DB_FOLDER", t.TempDir())
|
|
s := NewServer(nil)
|
|
if err := s.Stop(); err != nil {
|
|
t.Fatalf("expected nil error when stopping server with unstarted xray, got: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestServerStopPanelOnlyWithPreclosedListenerSucceeds(t *testing.T) {
|
|
t.Setenv("XUI_DB_FOLDER", t.TempDir())
|
|
s := NewServer(nil)
|
|
ln, err := net.Listen("tcp", "127.0.0.1:0")
|
|
if err != nil {
|
|
t.Fatalf("net.Listen failed: %v", err)
|
|
}
|
|
s.listener = ln
|
|
s.httpServer = &http.Server{}
|
|
go func() { _ = s.httpServer.Serve(ln) }()
|
|
time.Sleep(10 * time.Millisecond)
|
|
|
|
shutdownCtx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
|
defer cancel()
|
|
_ = s.httpServer.Shutdown(shutdownCtx)
|
|
|
|
if err := s.StopPanelOnly(); err != nil {
|
|
t.Fatalf("expected nil error when listener is already closed, got: %v", err)
|
|
}
|
|
}
|