From f06259b0b9fee33f1f89e75aa75042d383e3f70d Mon Sep 17 00:00:00 2001 From: Lai Jiangshan Date: Wed, 14 Sep 2016 10:12:41 +0800 Subject: [PATCH 1/2] direct set the buf->get to zero after consume the handle() had consumed all the read data, and we don't need to move the leftover data. Signed-off-by: Lai Jiangshan --- src/event.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/event.c b/src/event.c index bf31dd2..8e38600 100644 --- a/src/event.c +++ b/src/event.c @@ -197,13 +197,11 @@ int hyper_event_read(struct hyper_event *he, int efd) return 0; } - /* get the whole data */ + /* get and consume the whole data */ if (he->ops->handle(he, len) != 0) return -1; - /* len: length of the already get new data */ - buf->get -= len; - memmove(buf->data, buf->data + len, buf->get); + buf->get = 0; return 0; } From 21cb97d9708e6299d0c76b32ecbf3d8cd3a03782 Mon Sep 17 00:00:00 2001 From: Lai Jiangshan Date: Wed, 14 Sep 2016 10:17:06 +0800 Subject: [PATCH 2/2] always comsume the date after handle() even handle() failed. Signed-off-by: Lai Jiangshan --- src/event.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/event.c b/src/event.c index 8e38600..a12f23b 100644 --- a/src/event.c +++ b/src/event.c @@ -135,6 +135,7 @@ int hyper_event_read(struct hyper_event *he, int efd) int offset = he->ops->len_offset; int end = offset + 4; int size; + int ret; fprintf(stdout, "%s\n", __func__); @@ -198,12 +199,10 @@ int hyper_event_read(struct hyper_event *he, int efd) } /* get and consume the whole data */ - if (he->ops->handle(he, len) != 0) - return -1; - + ret = he->ops->handle(he, len); buf->get = 0; - return 0; + return ret == 0 ? 0 : -1; } int hyper_event_write(struct hyper_event *he, int efd)