diff --git a/prak3/src/server.cpp b/prak3/src/server.cpp
index fe652c5d237a043b833329c8c488d0bc6ca9c95e..ac239f5677479d7b3d87a68c1bd0570960a35ef4 100644
--- a/prak3/src/server.cpp
+++ b/prak3/src/server.cpp
@@ -226,15 +226,25 @@ std::string processRequest_shared_mtx(const std::string& request) {
 }
 
 void handle_client(int client_socket) {
+    
     char buffer[BUFFER_SIZE] = {0};
+    
     while (true) {
-        ssize_t bytes_received = read(client_socket, buffer, BUFFER_SIZE - 1);
-        if (bytes_received <= 0) {
-            std::cout << "Client disconnected." << std::endl;
-            break;
+        
+        ssize_t bytes_received = 0;
+        ssize_t total_bytes_received = 0;
+        while (true) {
+            bytes_received = read(client_socket, buffer + total_bytes_received, 1);
+            if (bytes_received <= 0) {
+                std::cout << "Client disconnected." << std::endl;
+                return;
+            }
+            total_bytes_received += bytes_received;
+            if (buffer[total_bytes_received - 1] == ';') {
+                break;
+            }
         }
 
-        buffer[bytes_received] = '\0';
         std::string response = processRequest_shared_mtx(buffer);
         
         // Anfragezähler inkrementieren