From e0c567ec551fed74d5287c2155d0ddb01fbbae2c Mon Sep 17 00:00:00 2001 From: Olivier Nicole Date: Mon, 21 Aug 2017 17:34:30 +0200 Subject: [PATCH] Make withServer provide the actual port (#29) * Make withServer provide the actual port Again, useful to make a server listen on any available port by giving it port zero (for testing). * Re-introduce check on server port * Add port field to Server * Style: Remove unneeded newline * Revert changes in tests --- src/Network/GRPC/LowLevel/Server.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Network/GRPC/LowLevel/Server.hs b/src/Network/GRPC/LowLevel/Server.hs index 5d49212..dc16543 100644 --- a/src/Network/GRPC/LowLevel/Server.hs +++ b/src/Network/GRPC/LowLevel/Server.hs @@ -52,6 +52,7 @@ import qualified Network.GRPC.Unsafe.Security as C data Server = Server { serverGRPC :: GRPC , unsafeServer :: C.Server + , listeningPort :: Port , serverCQ :: CompletionQueue -- ^ CQ used for receiving new calls. , serverCallCQ :: CompletionQueue @@ -160,7 +161,7 @@ startServer grpc conf@ServerConfig{..} = let e = serverEndpoint conf server <- C.grpcServerCreate args C.reserved actualPort <- addPort server conf - when (actualPort /= unPort port) $ + when (unPort port > 0 && actualPort /= unPort port) $ error $ "Unable to bind port: " ++ show port cq <- createCompletionQueue grpc grpcDebug $ "startServer: server CQ: " ++ show cq @@ -182,7 +183,8 @@ startServer grpc conf@ServerConfig{..} = forks <- newTVarIO S.empty shutdown <- newTVarIO False ccq <- createCompletionQueue grpc - return $ Server grpc server cq ccq ns ss cs bs conf forks shutdown + return $ Server grpc server (Port actualPort) cq ccq ns ss cs bs conf forks + shutdown