From 537f545f20b45dc67a42d6d459ba3338ad4ed4a9 Mon Sep 17 00:00:00 2001 From: Michael Preisach Date: Fri, 30 Jul 2021 13:44:38 +0200 Subject: [PATCH] issuer join process fix --- issuer.c | 25 ++++++++++++++++++++----- server.c | 2 +- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/issuer.c b/issuer.c index 544d2d0..bb4a296 100644 --- a/issuer.c +++ b/issuer.c @@ -52,8 +52,10 @@ int process_issuer(char *buffer) { case JOINPROCEED: bzero(buffer, MAX_BUFSIZE); issuer.state = READY; + ret = 1; break; default: + printf("nothing to confirm\n"); bzero(buffer, MAX_BUFSIZE); strncpy(buffer, "ERR\n", 4); break; @@ -69,7 +71,20 @@ int process_issuer(char *buffer) { printf("ignoring command\n"); break; } - } else if (0 == strncasecmp("RESET", buffer, 4)) { + } else if (0 == strncasecmp("ABORT", buffer, 5)) { + switch (issuer.state) { + case JOINSTART: + case JOINPROCEED: + printf("aborting join\n"); + issuer.state = READY; + break; + default: + printf("nothing to abort\n"); + bzero(buffer, MAX_BUFSIZE); + strncpy(buffer, "ERR\n", 4); + break; + } + } else if (0 == strncasecmp("RESET", buffer, 5)) { switch (issuer.state) { case READY: case JOINSTART: @@ -128,13 +143,11 @@ int process_issuer(char *buffer) { break; } } else if (0 == strncasecmp("EXIT", buffer, 4)) { - printf("exiting...\n"); + printf("closing client session\n"); bzero(buffer, MAX_BUFSIZE); - strncpy(buffer, "OK\n", 3); ret = 1; } else if (0 == strncasecmp("SHUTDOWN", buffer, 8)) { bzero(buffer, MAX_BUFSIZE); - strncpy(buffer, "OK\n", 3); ret = 2; } else { printf("unknown command\n"); @@ -143,7 +156,9 @@ int process_issuer(char *buffer) { ret = 0; } - printf("< ISSUER: %s\n", buffer); + if(0 == ret) { + printf("< ISSUER: %s\n", buffer); + } return ret; } diff --git a/server.c b/server.c index eafd8d8..04dedb8 100644 --- a/server.c +++ b/server.c @@ -64,7 +64,7 @@ int server_start(conn_handler handler, int16_t port) { ret = handler(buffer); } - if (0 <= ret && 0 >= write(clientfd, buffer, strlen(buffer))) { + if (0 == ret && 0 >= write(clientfd, buffer, strlen(buffer))) { printf("server_start: cannot write to socket\n"); ret = 1; }