mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 12:43:09 +00:00
report too long message error, instead of assert
This commit is contained in:
@@ -562,12 +562,19 @@ _filter_args(struct skynet_context * context, int type, int *session, void ** da
|
|||||||
*data = msg;
|
*data = msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert((*sz & HANDLE_MASK) == *sz);
|
|
||||||
*sz |= type << HANDLE_REMOTE_SHIFT;
|
*sz |= type << HANDLE_REMOTE_SHIFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
skynet_send(struct skynet_context * context, uint32_t source, uint32_t destination , int type, int session, void * data, size_t sz) {
|
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);
|
_filter_args(context, type, &session, (void **)&data, &sz);
|
||||||
|
|
||||||
if (source == 0) {
|
if (source == 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user