From 9da4569537c0378339dbb3bc82301aca7a7d6d29 Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Fri, 21 Apr 2017 13:59:22 +0300 Subject: [PATCH] odissey: use od_read() to append data --- core/od_be.c | 19 ++++++++++++------- core/od_be.h | 2 +- core/od_io.c | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/core/od_be.c b/core/od_be.c index 251a4277..28e267c2 100644 --- a/core/od_be.c +++ b/core/od_be.c @@ -114,12 +114,12 @@ od_besetup(od_server_t *server) machine_error(server->io)); return -1; } - char type = *server->stream.s; + uint8_t type = *server->stream.s; od_debug(&pooler->od->log, server->io, "S (setup): %c", type); switch (type) { /* ReadyForQuery */ case 'Z': - od_beset_ready(server, stream); + od_beset_ready(server, stream->s, so_stream_used(stream)); return 0; /* Authentication */ case 'R': @@ -345,10 +345,13 @@ ready: return server; } -int od_beset_ready(od_server_t *server, so_stream_t *stream) +int od_beset_ready(od_server_t *server, uint8_t *data, int size) { int status; - so_feread_ready(&status, stream->s, so_stream_used(stream)); + int rc; + rc = so_feread_ready(&status, data, size); + if (rc == -1) + return -1; if (status == 'I') { /* no active transaction */ server->is_transaction = 0; @@ -377,14 +380,16 @@ od_beready_wait(od_server_t *server, char *procedure, int time_ms) procedure, machine_error(server->io)); return -1; } - uint8_t type = *stream->s; + uint8_t type = stream->s[rc]; od_debug(&pooler->od->log, server->io, "S (%s): %c", procedure, type); /* ReadyForQuery */ - if (type == 'Z') + if (type == 'Z') { + od_beset_ready(server, stream->s + rc, + so_stream_used(stream) - rc); break; + } } - od_beset_ready(server, stream); return 0; } diff --git a/core/od_be.h b/core/od_be.h index c9d0e350..9fd8023b 100644 --- a/core/od_be.h +++ b/core/od_be.h @@ -10,7 +10,7 @@ int od_beterminate(od_server_t*); int od_beclose(od_server_t*); int od_berelease(od_server_t*); -int od_beset_ready(od_server_t*, so_stream_t*); +int od_beset_ready(od_server_t*, uint8_t*, int); int od_beconfigure(od_server_t*, so_bestartup_t*); od_server_t* diff --git a/core/od_io.c b/core/od_io.c index 9a0d0eef..87beb8d5 100644 --- a/core/od_io.c +++ b/core/od_io.c @@ -46,7 +46,7 @@ int od_read(machine_io_t io, so_stream_t *stream, int time_ms) so_stream_advance(stream, to_read); request_size += to_read; } - return 0; + return request_start; } int od_write(machine_io_t io, so_stream_t *stream)