diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml
index 312bdca384e538030d18a3f70e3d9645920031ec..dd57ab60828bc0bf6902ae6ef571992feb4f957d 100644
--- a/src/ruby/.rubocop.yml
+++ b/src/ruby/.rubocop.yml
@@ -9,3 +9,9 @@ AllCops:
     - 'bin/math_services.rb'
     - 'pb/grpc/health/v1alpha/*'
     - 'pb/test/**/*'
+
+Metrics/CyclomaticComplexity:
+  Max: 8
+
+Metrics/PerceivedComplexity:
+  Max: 8
diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb
index 3740ac52da25e83b53ba261e3bcb9c3237a7330e..228c500672b859499596e8e769e0f40929ba71df 100644
--- a/src/ruby/lib/grpc/generic/rpc_server.rb
+++ b/src/ruby/lib/grpc/generic/rpc_server.rb
@@ -416,6 +416,8 @@ module GRPC
       until stopped?
         begin
           an_rpc = @server.request_call(@cq, loop_tag, INFINITE_FUTURE)
+          break if (!an_rpc.nil?) && an_rpc.call.nil?
+
           c = new_active_server_call(an_rpc)
           unless c.nil?
             mth = an_rpc.method.to_sym