We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent ade18ff commit a45df26Copy full SHA for a45df26
network-mux/src/Network/Mux/Bearer/Socket.hs
@@ -123,8 +123,14 @@ socketAsBearer sduSize batchSize readBuffer_m sduTimeout tracer sd =
123
if BL.null availableData
124
then do
125
-- Not data in buffer; read more from socket
126
+ when (not waitingOnNxtHeader) $
127
+ -- Don't let the kernel wake us up until there is
128
+ -- at least l bytes of data.
129
+ Socket.setSocketOption sd Socket.RecvLowWater $ fromIntegral l
130
newBuf <- recvFromSocket $ fromIntegral rbSize
131
atomically $ modifyTVar rbVar (`BL.append` newBuf)
132
133
+ Socket.setSocketOption sd Socket.RecvLowWater 1
134
recvAtMost waitingOnNxtHeader l
135
else do
136
traceWith tracer $ Mx.TraceRecvEnd $ fromIntegral $ BL.length availableData
0 commit comments