From 1640796edc44dd3efdf4d52dc117c30ec34a6847 Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Wed, 16 Nov 2016 15:03:37 +0300 Subject: [PATCH] odissey: read BackendKeyData during be init --- core/od_be.c | 13 +++++++++++-- core/od_server.h | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/od_be.c b/core/od_be.c index 415b8fb1..5e11041c 100644 --- a/core/od_be.c +++ b/core/od_be.c @@ -57,6 +57,7 @@ int od_beclose(odserver_t *server) server->is_transaction = 0; server->is_ready = 0; server->idle_time = 0; + so_key_init(&server->key); od_serverfree(server); return 0; } @@ -83,6 +84,7 @@ static int od_beauth(odserver_t *server) { odpooler_t *pooler = server->pooler; + sostream_t *stream = &server->stream; while (1) { int rc; rc = od_read(server->io, &server->stream); @@ -99,6 +101,13 @@ od_beauth(odserver_t *server) break; /* BackendKeyData */ case 'K': + rc = so_feread_key(&server->key, + stream->s, so_stream_used(stream)); + if (rc == -1) { + od_error(&pooler->od->log, + "failed to parse BackendKeyData message"); + return -1; + } break; /* ParameterStatus */ case 'S': @@ -110,7 +119,7 @@ od_beauth(odserver_t *server) case 'E': return -1; default: - printf("unknown packet: %c\n",type); + od_debug(&pooler->od->log, "unknown packet: %c", type); return -1; } } @@ -193,7 +202,7 @@ int od_beset_not_ready(odserver_t *server) int od_beset_ready(odserver_t *server, sostream_t *stream) { int status; - so_feread_ready(stream->s, so_stream_used(stream), &status); + so_feread_ready(&status, stream->s, so_stream_used(stream)); if (status == 'I') { /* no active transaction */ server->is_transaction = 0; diff --git a/core/od_server.h b/core/od_server.h index d5c4aa37..ee336ee8 100644 --- a/core/od_server.h +++ b/core/od_server.h @@ -25,6 +25,7 @@ struct odserver_t { int is_ready; int is_transaction; int idle_time; + sokey_t key; void *route; void *pooler; odlist_t link; @@ -40,6 +41,7 @@ od_serverinit(odserver_t *s) s->idle_time = 0; s->is_ready = 0; s->is_transaction = 0; + so_key_init(&s->key); so_stream_init(&s->stream); od_listinit(&s->link); }