"examples/example-libev.c" did not exist on "fb49cd19887e45e1118b9a3b09f582305c842e4b"
Commit b9427f41 authored by Pieter Noordhuis's avatar Pieter Noordhuis
Browse files

Pass pointer to redis_protocol_t when message was read

parent d96c4c9e
...@@ -110,6 +110,9 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons ...@@ -110,6 +110,9 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
int stackidx; int stackidx;
unsigned char state; unsigned char state;
/* Reset destination */
if (dst) *dst = NULL;
/* Reset root protocol object for new messages */ /* Reset root protocol object for new messages */
if (parser->stackidx == -1) { if (parser->stackidx == -1) {
RESET_PROTOCOL_T(&stack[0]); RESET_PROTOCOL_T(&stack[0]);
...@@ -321,10 +324,20 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons ...@@ -321,10 +324,20 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
} }
} }
error: /* Set destination pointer when full message was read */
if (stackidx == -1) {
if (dst) *dst = &stack[0];
}
finalize:
parser->nread = nread; parser->nread = nread;
parser->stackidx = stackidx; parser->stackidx = stackidx;
parser->state = state; parser->state = state;
return pos-buf; return pos-buf;
error:
/* TODO: set some kind of error */
goto finalize;
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment