From 1676713b09055552c5af817201a6890a2ef10975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Sat, 21 Sep 2013 15:19:56 +0800 Subject: [PATCH] skynet message length limit 16M --- service-src/service_gate.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/service-src/service_gate.c b/service-src/service_gate.c index 53a41dbc..78d6c142 100644 --- a/service-src/service_gate.c +++ b/service-src/service_gate.c @@ -189,8 +189,16 @@ dispatch_message(struct gate *g, struct connection *c, int id, void * data, int if (size < 0) { return; } else if (size > 0) { - _forward(g, c, size); - databuffer_reset(&c->buffer); + if (size >= 0x1000000) { + struct skynet_context * ctx = g->ctx; + databuffer_clear(&c->buffer,&g->mp); + skynet_socket_close(ctx, id); + skynet_error(ctx, "Recv socket message > 16M"); + return; + } else { + _forward(g, c, size); + databuffer_reset(&c->buffer); + } } } }