From db952dc658d468b893db577c0d849d80f2fc9cc0 Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Tue, 24 Jun 2014 19:22:18 +0800 Subject: [PATCH] report too long message error, instead of assert --- skynet-src/skynet_server.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/skynet-src/skynet_server.c b/skynet-src/skynet_server.c index b7b809ef..e2baa1ce 100644 --- a/skynet-src/skynet_server.c +++ b/skynet-src/skynet_server.c @@ -562,12 +562,19 @@ _filter_args(struct skynet_context * context, int type, int *session, void ** da *data = msg; } - assert((*sz & HANDLE_MASK) == *sz); *sz |= type << HANDLE_REMOTE_SHIFT; } int skynet_send(struct skynet_context * context, uint32_t source, uint32_t destination , int type, int session, void * data, size_t sz) { + if ((sz & HANDLE_MASK) != sz) { + skynet_error(context, "The message to %x is too large (sz = %lu)", destination, sz); + if (session != 0) { + skynet_send(context, destination, source, PTYPE_ERROR, session, NULL, 0); + } + skynet_free(data); + return -1; + } _filter_args(context, type, &session, (void **)&data, &sz); if (source == 0) {