From cfbd68b85a6ab462b1d7fa55ea4122229b7c58af Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Fri, 18 Apr 2014 14:24:40 +0800 Subject: [PATCH] check callback return value for reserve the message --- skynet-src/skynet_server.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/skynet-src/skynet_server.c b/skynet-src/skynet_server.c index 54650c84..1b9fa159 100644 --- a/skynet-src/skynet_server.c +++ b/skynet-src/skynet_server.c @@ -194,8 +194,9 @@ _dispatch_message(struct skynet_context *ctx, struct skynet_message *msg) { CHECKCALLING_BEGIN(ctx) int type = msg->sz >> HANDLE_REMOTE_SHIFT; size_t sz = msg->sz & HANDLE_MASK; - ctx->cb(ctx, ctx->cb_ud, type, msg->session, msg->source, msg->data, sz); - free(msg->data); + if (!ctx->cb(ctx, ctx->cb_ud, type, msg->session, msg->source, msg->data, sz)) { + free(msg->data); + } CHECKCALLING_END(ctx) }