From d30b8936e365e93e0a9a70fa0175b1d4d03b01f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Fri, 1 Feb 2013 15:30:21 +0800 Subject: [PATCH] bugfix: blockcall dispatching --- skynet-src/skynet_mq.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/skynet-src/skynet_mq.c b/skynet-src/skynet_mq.c index f36b30c1..f1cf8889 100644 --- a/skynet-src/skynet_mq.c +++ b/skynet-src/skynet_mq.c @@ -167,7 +167,9 @@ _pushhead(struct message_queue *q, struct skynet_message *message) { if (q->in_global == MQ_LOCKED) { skynet_globalmq_push(q); q->in_global = MQ_IN_GLOBAL; - } + } else { + assert(q->in_global == MQ_DISPATCHING); + } q->lock_session = 0; } @@ -204,7 +206,7 @@ skynet_mq_lock(struct message_queue *q, int session) { LOCK(q) assert(q->lock_session == 0); assert(q->in_global == MQ_IN_GLOBAL); - q->in_global = MQ_LOCKED; + q->in_global = MQ_DISPATCHING; q->lock_session = session; UNLOCK(q) }