From e88f8a9948d82b1f47a2b5a0faab9508d4cb487f Mon Sep 17 00:00:00 2001 From: crn4 Date: Thu, 30 Oct 2025 20:23:11 +0100 Subject: [PATCH] added limiter on login --- management/server/grpcserver.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/management/server/grpcserver.go b/management/server/grpcserver.go index 4fbac4902..332ff49fb 100644 --- a/management/server/grpcserver.go +++ b/management/server/grpcserver.go @@ -503,6 +503,12 @@ func (s *GRPCServer) parseRequest(ctx context.Context, req *proto.EncryptedMessa // In case it isn't, the endpoint checks whether setup key is provided within the request and tries to register a peer. // In case of the successful registration login is also successful func (s *GRPCServer) Login(ctx context.Context, req *proto.EncryptedMessage) (*proto.EncryptedMessage, error) { + if s.syncSem.Load() >= s.syncLim { + return nil, status.Errorf(codes.ResourceExhausted, "too many concurrent login requests, please try again later") + } + s.syncSem.Add(1) + defer s.syncSem.Add(-1) + reqStart := time.Now() realIP := getRealIP(ctx) sRealIP := realIP.String()