=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/PushMessagesWorker.java'
--- old/src/com/goldencode/p2j/ui/client/driver/web/PushMessagesWorker.java	2025-01-16 13:38:43 +0000
+++ new/src/com/goldencode/p2j/ui/client/driver/web/PushMessagesWorker.java	2025-09-08 10:27:02 +0000
@@ -109,16 +109,29 @@
    /** The session guard object */
    private final Object sessionGuard = new Object();
    
+   /** TODO */
+   private final ReentrantLock sendLock;
+   
    /** The session state */
    private boolean sessionInvalid = true;
    
+//   /**
+//    * The default constructor.
+//    */
+//   public PushMessagesWorker()
+//   {
+//      this.setName("pushworker");
+//      
+//      this.start();
+//   }
+   
    /**
     * The default constructor.
     */
-   public PushMessagesWorker()
+   public PushMessagesWorker(ReentrantLock sendLock)
    {
+      this.sendLock = sendLock;
       this.setName("pushworker");
-      
       this.start();
    }
 
@@ -287,7 +300,15 @@
                // test message type
                if (message instanceof ByteBuffer)
                {
-                  remote.sendBytes((ByteBuffer) message);
+                  try
+                  {
+                     sendLock.lock();
+                     remote.sendBytes((ByteBuffer) message);
+                  }
+                  finally 
+                  {
+                     sendLock.unlock();
+                  }
                }
                else if (message instanceof String)
                {

=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/WebClientProtocol.java'
--- old/src/com/goldencode/p2j/ui/client/driver/web/WebClientProtocol.java	2025-02-13 16:26:58 +0000
+++ new/src/com/goldencode/p2j/ui/client/driver/web/WebClientProtocol.java	2025-09-08 10:25:45 +0000
@@ -108,6 +108,7 @@
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
+import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.*;
 
 import com.fasterxml.jackson.databind.*;
@@ -271,6 +272,9 @@
    /** The new created temporary file extension */
    private static final String TMP_FILE_EXT = ".tmp";
    
+   /** TODO */
+   private static final ReentrantLock sendLock = new ReentrantLock();
+   
    /** Web socket timeout. */
    private final long timeout;
    
@@ -729,7 +733,15 @@
          {
             if (session.isOpen())
             {
-               session.getRemote().sendBytes(ByteBuffer.wrap(message));
+               try
+               {
+                  sendLock.lock();
+                  session.getRemote().sendBytes(ByteBuffer.wrap(message));
+               }
+               finally 
+               {
+                  sendLock.unlock();
+               }
             }
          }
          catch (IOException ex)
@@ -1427,7 +1439,7 @@
    {
       if (pushWorker == null)
       {
-         pushWorker = new PushMessagesWorker();
+         pushWorker = new PushMessagesWorker(sendLock);
       }
       pushWorker.setCurrentSession(session);
    }

