diff --git a/Assignment-06/starter/rsh_server.c b/Assignment-06/starter/rsh_server.c index e4aa7203ec0699a90590d3ebfc9cdad1c39417eb..8191051f28514de9acd068c74da7b87e5162897d 100644 --- a/Assignment-06/starter/rsh_server.c +++ b/Assignment-06/starter/rsh_server.c @@ -249,6 +249,7 @@ int process_cli_requests(int svr_socket) { } + /* * exec_client_requests(cli_socket) * cli_socket: The server-side socket that is connected to the client @@ -291,22 +292,20 @@ int process_cli_requests(int svr_socket) { * or receive errors. */ + void *exec_client_requests(void *socket_handle) { int cli_socket = *((int *)socket_handle); char cmd_buff[RDSH_COMM_BUFF_SZ]; ssize_t recv_bytes; - int rc = OK; - printf("SERVER: New client connected. Socket: %d\n", cli_socket); + printf("SERVER: Handling client request. Socket: %d\n", cli_socket); - // Receive the command from the client recv_bytes = recv(cli_socket, cmd_buff, sizeof(cmd_buff), 0); if (recv_bytes <= 0) { perror("SERVER: recv failed"); close(cli_socket); pthread_exit(NULL); } - cmd_buff[recv_bytes] = '\0'; printf("SERVER: Received command: %s\n", cmd_buff); @@ -320,7 +319,7 @@ void *exec_client_requests(void *socket_handle) { pthread_exit(NULL); } - rc = rsh_execute_pipeline(cli_socket, &cmd_list); + rsh_execute_pipeline(cli_socket, &cmd_list); for (int i = 0; i < cmd_list.num; i++) { free(cmd_list.commands[i]._cmd_buffer); @@ -363,8 +362,8 @@ void *exec_client_requests(void *socket_handle) { pthread_exit(NULL); } else if (pid == 0) { // Child process: execute the command - dup2(cli_socket, STDOUT_FILENO); // Redirect stdout to client socket - dup2(cli_socket, STDERR_FILENO); // Redirect stderr to client socket + dup2(cli_socket, STDOUT_FILENO); + dup2(cli_socket, STDERR_FILENO); execvp(cmd.argv[0], cmd.argv); perror("SERVER: execvp failed"); exit(EXIT_FAILURE); @@ -390,10 +389,6 @@ void *exec_client_requests(void *socket_handle) { } - - - - /* * send_message_eof(cli_socket) * cli_socket: The server-side socket that is connected to the client diff --git a/Assignment-06/starter/rshlib.h b/Assignment-06/starter/rshlib.h index 927594ef97d524c2175d1d4fb85efa5b8288f788..ce863532cfa17427a5a7d0cf3e6161f8eba53c5c 100644 --- a/Assignment-06/starter/rshlib.h +++ b/Assignment-06/starter/rshlib.h @@ -65,7 +65,7 @@ int stop_server(int svr_socket); int send_message_eof(int cli_socket); int send_message_string(int cli_socket, char *buff); int process_cli_requests(int svr_socket); -int exec_client_requests(int cli_socket); +int *exec_client_requests(int cli_socket); int rsh_execute_pipeline(int socket_fd, command_list_t *clist); Built_In_Cmds rsh_match_command(const char *input);