diff --git a/Assignment-06/starter/rsh_server.c b/Assignment-06/starter/rsh_server.c
index 1b966a864c7dc05e55170573d4bb71abe170b7e0..bf4764da99f5ad5f97c611e4a818c2c33d5bae1a 100644
--- a/Assignment-06/starter/rsh_server.c
+++ b/Assignment-06/starter/rsh_server.c
@@ -221,6 +221,7 @@ int boot_server(char *ifaces, int port) {
 int process_cli_requests(int svr_socket) {
     int cli_socket;
     pthread_t thread_id;
+    void *thread_ret;
 
     printf("SERVER: Waiting for client connections...\n");
 
@@ -239,16 +240,18 @@ int process_cli_requests(int svr_socket) {
             close(cli_socket);
             return ERR_RDSH_COMMUNICATION;
         }
-        printf("SERVER: Thread created for client. Thread ID: %lu\n", (unsigned long)thread_id);
 
-        pthread_detach(thread_id);
-        printf("SERVER: Thread detached.\n");
+        // Wait for the thread to finish and check its return value
+        pthread_join(thread_id, &thread_ret);
+        if (thread_ret == (void *)OK_EXIT) {
+            printf("SERVER: Received stop-server command. Shutting down...\n");
+            break;  // Exit the loop and shut down the server
+        }
     }
 
     return OK;
 }
 
-
 /*
  * exec_client_requests(cli_socket)
  *      cli_socket:  The server-side socket that is connected to the client
@@ -291,7 +294,6 @@ 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];
@@ -308,6 +310,13 @@ void *exec_client_requests(void *socket_handle) {
     cmd_buff[recv_bytes] = '\0';
     printf("SERVER: Received command: %s\n", cmd_buff);
 
+    // Check for stop-server command
+    if (strcmp(cmd_buff, "stop-server") == 0) {
+        printf("SERVER: Received stop-server command. Shutting down...\n");
+        close(cli_socket);
+        pthread_exit((void *)OK_EXIT);  // Signal server to stop
+    }
+
     // Execute the command
     if (strstr(cmd_buff, "|") != NULL) {
         // Handle pipeline commands
@@ -387,6 +396,7 @@ void *exec_client_requests(void *socket_handle) {
     pthread_exit(NULL);
 }
 
+
 /*
  * send_message_eof(cli_socket)
  *      cli_socket:  The server-side socket that is connected to the client