diff --git a/go.mod b/go.mod index 38f1a7dc2..841af278d 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/mhsanaei/3x-ui/v3 -go 1.26.4 +go 1.26.5 require ( github.com/gin-contrib/gzip v1.2.6 diff --git a/internal/web/service/client_bulk_reset_reenable_test.go b/internal/web/service/client_bulk_reset_reenable_test.go new file mode 100644 index 000000000..7293d386e --- /dev/null +++ b/internal/web/service/client_bulk_reset_reenable_test.go @@ -0,0 +1,29 @@ +package service + +import "testing" + +// TestBulkResetTraffic_ReenablesDisabledClient covers the re-enable branch of +// BulkResetTraffic: a disabled client whose traffic is bulk-reset must come back +// enabled with its counters zeroed, in all three enable locations. This is the +// path whose s.Update failure was previously swallowed silently. +func TestBulkResetTraffic_ReenablesDisabledClient(t *testing.T) { + setupBulkDB(t) + svc := &ClientService{} + inboundSvc := &InboundService{} + + email := "reset-reenable@x" + ib := seedLocalDisabledClient(t, svc, 52010, "", email, 1000, 0, 600, 500) + + affected, err := svc.BulkResetTraffic(inboundSvc, []string{email}) + if err != nil { + t.Fatalf("BulkResetTraffic: %v", err) + } + if affected < 1 { + t.Fatalf("affected = %d, want >= 1", affected) + } + + assertEnableEverywhere(t, svc, inboundSvc, ib.Id, email, true) + if tr := trafficOf(t, email); tr.Up != 0 || tr.Down != 0 { + t.Fatalf("%s: traffic after reset up=%d down=%d, want 0/0", email, tr.Up, tr.Down) + } +} diff --git a/internal/web/service/client_traffic.go b/internal/web/service/client_traffic.go index 94bffead7..539be2b05 100644 --- a/internal/web/service/client_traffic.go +++ b/internal/web/service/client_traffic.go @@ -84,7 +84,9 @@ func (s *ClientService) BulkResetTraffic(inboundSvc *InboundService, emails []st if err == nil && !rec.Enable { updated := rec.ToClient() updated.Enable = true - _, _ = s.Update(inboundSvc, rec.Id, *updated) + if _, uErr := s.Update(inboundSvc, rec.Id, *updated); uErr != nil { + logger.Warning("Failed to auto-enable client during bulk traffic reset:", uErr) + } } }