From 75e7554603906813b1914022f5cdf1e07e444927 Mon Sep 17 00:00:00 2001 From: Alejandro Serrano Date: Fri, 30 Apr 2021 16:41:42 +0200 Subject: [PATCH] Do not create a loop in bidi gRPC (#306) Co-authored-by: Flavio Corpa --- grpc/server/src/Mu/GRpc/Server.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/grpc/server/src/Mu/GRpc/Server.hs b/grpc/server/src/Mu/GRpc/Server.hs index 8041461..6d45b26 100644 --- a/grpc/server/src/Mu/GRpc/Server.hs +++ b/grpc/server/src/Mu/GRpc/Server.hs @@ -465,15 +465,15 @@ instance (GRpcInputWrapper p vref v, GRpcOutputWrapper p rref r, MonadIO m) cstreamFinalizer _ = liftIO $ atomically (closeTMChan chan) >> wait promise readNext _ - = do nextOutput <- liftIO $ atomically $ tryTakeTMVar var + = do nextOutput <- liftIO $ atomically $ takeTMVar var case nextOutput of - Just (Just o) -> + Just o -> pure $ Just ((), buildGRpcOWTy (Proxy @p) (Proxy @rref) o) - Just Nothing -> do + Nothing -> do liftIO $ cancel promise pure Nothing - Nothing -> -- no new elements to output - readNext () + -- Nothing -> -- no new elements to output + -- readNext () pure ((), IncomingStream cstreamHandler cstreamFinalizer, (), OutgoingStream readNext) -----