report too long message error, instead of assert

This commit is contained in:
Cloud Wu
2014-06-24 19:22:18 +08:00
parent 813e6c764d
commit db952dc658

View File

@@ -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) {