From a0ddb377454fd564bc93594f5b87fe89989391bd Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 25 Jun 2012 10:32:21 +0200 Subject: [PATCH] Attempt to deal with race between sending and receving multi-framed messages --- .../src/main/scala/akka/zeromq/ConcurrentSocketActor.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala b/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala index 71b7b185f0..3f9cb48f01 100644 --- a/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala +++ b/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala @@ -206,7 +206,8 @@ private[zeromq] class ConcurrentSocketActor(params: Seq[SocketOption]) extends A } result match { case null ⇒ - if (currentFrames.isEmpty) currentFrames + if (socket.hasReceiveMore) receiveMessage(mode, currentFrames) + else if (currentFrames.isEmpty) currentFrames else throw new IllegalStateException("no more frames available while socket.hasReceivedMore==true") case bytes ⇒ val frames = currentFrames :+ Frame(if (bytes.length == 0) noBytes else bytes)