diff --git a/Assignment-06/starter/rsh_server.c b/Assignment-06/starter/rsh_server.c index 64198648242718f3a1c71a8d9a72d865161c6daa..746672a629ce889c36d310f49df22c64ffbc7ca9 100644 --- a/Assignment-06/starter/rsh_server.c +++ b/Assignment-06/starter/rsh_server.c @@ -207,56 +207,66 @@ int boot_server(char *ifaces, int port){ * */ - int process_cli_requests(int svr_socket) { +int process_cli_requests(int svr_socket) { int cli_socket; char buffer[RDSH_COMM_BUFF_SZ]; ssize_t bytes_received; int rc = OK; + printf("SERVER: Waiting for client connections...\n"); + while (1) { // Accept a client connection cli_socket = accept(svr_socket, NULL, NULL); if (cli_socket == -1) { - perror("accept"); + perror("SERVER: accept failed"); rc = ERR_RDSH_COMMUNICATION; break; } + printf("SERVER: Client connected. Socket: %d\n", cli_socket); // Receive data from the client bytes_received = recv(cli_socket, buffer, sizeof(buffer), 0); if (bytes_received < 0) { - perror("recv"); + perror("SERVER: recv failed"); close(cli_socket); rc = ERR_RDSH_COMMUNICATION; break; } else if (bytes_received == 0) { // Client disconnected + printf("SERVER: Client disconnected.\n"); close(cli_socket); continue; } + // Null-terminate the received data + buffer[bytes_received] = '\0'; + printf("SERVER: Received command: %s\n", buffer); + // Check for special commands if (strncmp(buffer, "stop-server", strlen("stop-server")) == 0) { - printf("Client requested server to stop\n"); + printf("SERVER: Client requested server to stop.\n"); rc = OK_EXIT; close(cli_socket); break; } // Handle client requests + printf("SERVER: Executing client request...\n"); rc = exec_client_requests(cli_socket); if (rc < 0) { - fprintf(stderr, "Error processing client requests: %d\n", rc); + fprintf(stderr, "SERVER: Error processing client requests: %d\n", rc); close(cli_socket); break; } // Close the client socket close(cli_socket); - printf("Client socket closed properly\n"); + printf("SERVER: Client socket closed properly.\n"); } // Clean up and stop the server + printf("SERVER: Stopping server...\n"); stop_server(svr_socket); return rc; }