From 56aab1cbec9519a93dc7e3c35a8b10f6e810e68b Mon Sep 17 00:00:00 2001 From: "flyingscorpio@clevo" Date: Fri, 4 Nov 2022 23:33:06 +0100 Subject: [PATCH] Simplify error sending --- src/server.c | 44 +++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/src/server.c b/src/server.c index 2416870..fdaf73f 100644 --- a/src/server.c +++ b/src/server.c @@ -503,9 +503,7 @@ void *Dispatcher(void *arg) { char *token; char *endptr = NULL; char *rest = message; - char *error_message; char eot = EOT; - size_t size_for_malloc; int n = 0, k = 0, sender_id, receiver_id; /* Message should be: " []" */ @@ -528,9 +526,8 @@ void *Dispatcher(void *arg) { /* Extract sender_id */ if ((token = strtok_r(message, " ", &rest)) == NULL) { - fprintf(stderr, "ERROR: strtok_r didn't return a token\n"); - error_message = "WARNING: Syntax error: missing arguments\n"; - cmd_send_message(SERVER_ID, sender_id, error_message); + fprintf(stderr, "WARNING: strtok_r didn't return a token\n"); + cmd_send_message(SERVER_ID, sender_id, "WARNING: Syntax error: missing arguments\n"); break; } sender_id = strtol(token, &endptr, 10); @@ -541,9 +538,8 @@ void *Dispatcher(void *arg) { /* Extract command */ if ((token = strtok_r(rest, " ", &rest)) == NULL ) { - fprintf(stderr, "ERROR: strtok_r didn't return a token\n"); - error_message = "WARNING: Syntax error: missing arguments\n"; - cmd_send_message(SERVER_ID, sender_id, error_message); + fprintf(stderr, "WARNING: strtok_r didn't return a token\n"); + cmd_send_message(SERVER_ID, sender_id, "WARNING: Syntax error: missing arguments\n"); break; } /* We don't check for string length, because only the first char will be used. @@ -565,9 +561,8 @@ void *Dispatcher(void *arg) { case CMD_SET_NAME: printf("cmd_set_name (from %d)\n", sender_id); if ((token = strtok_r(rest, "\n", &rest)) == NULL) { - fprintf(stderr, "ERROR: strtok_r didn't return a token\n"); - error_message = "WARNING: Syntax error: missing arguments\n"; - cmd_send_message(SERVER_ID, sender_id, error_message); + fprintf(stderr, "WARNING: strtok_r didn't return a token\n"); + cmd_send_message(SERVER_ID, sender_id, "WARNING: Syntax error: missing arguments\n"); break; } cmd_set_name(sender_id, token); @@ -579,9 +574,8 @@ void *Dispatcher(void *arg) { case CMD_SET_GROUP: printf("cmd_set_group (from %d)\n", sender_id); if ((token = strtok_r(rest, "\n", &rest)) == NULL ) { - fprintf(stderr, "ERROR: strtok_r didn't return a token\n"); - error_message = "WARNING: Syntax error: missing arguments\n"; - cmd_send_message(SERVER_ID, sender_id, error_message); + fprintf(stderr, "WARNING: strtok_r didn't return a token\n"); + cmd_send_message(SERVER_ID, sender_id, "WARNING: Syntax error: missing arguments\n"); break; } cmd_set_group(sender_id, token); @@ -606,20 +600,17 @@ void *Dispatcher(void *arg) { /* Extract receiver_id */ if ((token = strtok_r(rest, " ", &rest)) == NULL) { - fprintf(stderr, "ERROR: strtok_r didn't return a token\n"); - error_message = "WARNING: Syntax error: missing arguments\n"; - cmd_send_message(SERVER_ID, sender_id, error_message); + fprintf(stderr, "WARNING: strtok_r didn't return a token\n"); + cmd_send_message(SERVER_ID, sender_id, "WARNING: Syntax error: missing arguments\n"); break; } receiver_id = get_client_id_from_name(token); printf("token = %s\n", token); printf("receiver_id = %d\n", receiver_id); if (receiver_id == MAX_CLIENTS) { - size_for_malloc = snprintf(NULL, 0, "WARNING: Receiver \"%s\" does not exist !", token); - error_message = (char*) malloc(size_for_malloc + 1); - snprintf(error_message, size_for_malloc + 1, "WARNING: Receiver \"%s\" does not exist !", token); - fprintf(stderr, "%s", error_message); - cmd_send_message(SERVER_ID, sender_id, error_message); + sprintf(buf, "WARNING: Receiver \"%s\" does not exist !\n", token); + fprintf(stderr, "%s", buf); + cmd_send_message(SERVER_ID, sender_id, buf); break; } if (receiver_id < 0) { @@ -630,11 +621,10 @@ void *Dispatcher(void *arg) { break; default: token = strtok_r(token, "\n", &rest); - size_for_malloc = snprintf(NULL, 0, "WARNING: \"%s\" is not a command\n", token); - error_message = (char*) malloc(size_for_malloc + 1); - snprintf(error_message, size_for_malloc + 1, "WARNING: \"%s\" is not a command\n", token); - fprintf(stderr, "%s", error_message); - cmd_send_message(SERVER_ID, sender_id, error_message); + sprintf(buf, "WARNING: \"%s\" is not a command\n", token); + fprintf(stderr, "%s", buf); + cmd_send_message(SERVER_ID, sender_id, buf); + break; } }