diff --git a/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala b/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala index 2d4efe6464..3c421abc65 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala @@ -392,10 +392,15 @@ private[akka] trait DefaultSystemMessageQueue { self: Mailbox ⇒ @tailrec final def systemDrain(newContents: LatestFirstSystemMessageList): EarliestFirstSystemMessageList = { val currentList = systemQueueGet - if (systemQueuePut(currentList, newContents)) currentList.reverse else systemDrain(newContents) + if (currentList.head == NoMessage) new EarliestFirstSystemMessageList(null) + else if (systemQueuePut(currentList, newContents)) currentList.reverse + else systemDrain(newContents) } - def hasSystemMessages: Boolean = systemQueueGet.nonEmpty + def hasSystemMessages: Boolean = systemQueueGet.head match { + case null | NoMessage ⇒ false + case _ ⇒ true + } }