From d46d250b8428ead6983d75a71aac8fc591a66a2a Mon Sep 17 00:00:00 2001 From: Aadhavan Srinivasan Date: Tue, 11 Apr 2023 14:29:16 -0500 Subject: [PATCH] Continued refactoring code --- main.c | 77 ++++++++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 43 deletions(-) diff --git a/main.c b/main.c index bd99e0f..638eed1 100644 --- a/main.c +++ b/main.c @@ -73,59 +73,50 @@ int main() { for (int i=1; i < MAX_CONNECTIONS; i++) { if (FD_ISSET(conn_sockets[i],&read_fd_set)) { - do { - - while ( strcmp(buffer,"END_OF_DATA\r\n") != 0 ) { - int num_bytes_read = recv(conn_sockets[i],buffer,sizeof(buffer),0); - if (num_bytes_read <= 0) { - close(conn_sockets[i]); - conn_sockets[i] = 0; - to_user[i] = NULL; - GOTO continue_for_loop; - } - strcat(data, buffer); - } - - strcat(data,"\0"); - if (num_bytes_read <= 0) { + while ( strstr(buffer,"END_OF_DATA") == NULL ) { + int num_bytes_read = recv(conn_sockets[i],buffer,sizeof(buffer),0); + if (num_bytes_read <= 0) { close(conn_sockets[i]); conn_sockets[i] = 0; to_user[i] = NULL; - break; + goto continue_for_loop; + } + strcat(data, buffer); + } + strcat(data,"\0"); + if (from_user[i] == NULL) { + from_user[i] = fetch_user(fetch_from_string(data,"IAM")); + if (from_user[i] == NULL) { + printf("Please identify yourself.\n"); + close(conn_sockets[i]); + continue; } else { - - if (from_user[i] == NULL) { - from_user[i] = fetch_user(fetch_sender_user_string(buffer)); - if (from_user[i] == NULL) { - printf("Please identify yourself.\n"); - raise(SIGINT); - return 150; - } else { - printf("You are %s\n",from_user[i]->username); - } - continue; - } - - if (to_user[i] == NULL) { - to_user[i] = fetch_user(fetch_dest_user_string(buffer)); - if (to_user[i] == NULL) { - printf("Invalid message format or User\n"); - raise(SIGINT); - } else { - printf("Message intended for %s\n",to_user[i]->username); - } - continue; - } - - char* message = fetch_message_string(buffer); - + printf("You are %s\n",from_user[i]->username); } + } - } while (strcmp(buffer,"END_OF_DATA\r\n") != 0); + if (to_user[i] == NULL) { + to_user[i] = fetch_user(fetch_from_string(data,"TO")); + if (to_user[i] == NULL) { + printf("Invalid user or message format.\n"); + close(conn_sockets[i]); + continue; + } else { + printf("Message intended for %s\n",to_user[i]->username); + } + } + + char* message = fetch_message_string(data); + + close(conn_sockets[i]); } + + continue_for_loop: + data[0] = '\0'; /* This effectively clears the string, since the first element is null. */ + to_user[i] = NULL; } }