Skip to content

Commit 53ce688

Browse files
authored
Hot fix recv zero sized body (#884)
* Fix zero size body parsing
1 parent 025864d commit 53ce688

File tree

2 files changed

+6
-6
lines changed
  • index-server/src/Ergvein/Index/Server/TCPService
  • wallet/src/Ergvein/Wallet/Indexer

2 files changed

+6
-6
lines changed

index-server/src/Ergvein/Index/Server/TCPService/Server.hs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ runConnection (sock, addr) = incGaugeWhile activeConnsGauge $ do
119119
rawSendMsg $ MReject r
120120
threadDelay 100000
121121
closeConnection addr
122-
Right _ -> do
123-
logErrorN $ "<" <> showt addr <> ">: Impossible! Tried to send something that is not MVersionACK or MReject to client at handshake."
122+
Right msg -> do
123+
logErrorN $ "<" <> showt addr <> ">: Impossible! Tried to send something that is not MVersionACK or MReject to client at handshake: " <> showt msg
124124
closeConnection addr
125125
where
126126
rawSendMsg :: Message -> IO ()
@@ -196,7 +196,9 @@ runConnection (sock, addr) = incGaugeWhile activeConnsGauge $ do
196196

197197
request :: MessageHeader -> ExceptT Reject ServerM Message
198198
request MessageHeader {..} = do
199-
messageBytes <- liftIO $ NS.recv sock $ fromIntegral msgSize
199+
messageBytes <- if not $ messageHasPayload msgType
200+
then pure mempty
201+
else liftIO $ NS.recv sock $ fromIntegral msgSize
200202
except $ mapLeft (\_-> Reject msgType MessageParsing "Failed to parse message body") $ eitherResult $ parse (messageParser msgType) messageBytes
201203

202204
response :: Message -> ExceptT Reject ServerM ([Message], Bool)

wallet/src/Ergvein/Wallet/Indexer/Socket.hs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ import qualified Data.ByteString.Lazy as BL
4040
import qualified Data.Map.Strict as M
4141
import qualified Data.Vector.Unboxed as VU
4242

43-
import Debug.Trace
44-
4543
requiredCurrencies :: [CurrencyCode]
4644
requiredCurrencies = if isTestnet
4745
then [TBTC] -- TODO: add ERGO here
@@ -202,7 +200,7 @@ mkVers :: MonadIO m => m Message
202200
mkVers = liftIO $ do
203201
nonce <- randomIO
204202
t <- fmap (fromIntegral . floor) getPOSIXTime
205-
pure $ traceShowId $ MVersion $ Version {
203+
pure $ MVersion $ Version {
206204
versionVersion = protocolVersion
207205
, versionTime = t
208206
, versionNonce = nonce

0 commit comments

Comments
 (0)