From 88517a6ce1901c8146343a15c63374f6ab4cae32 Mon Sep 17 00:00:00 2001
From: Boris Grozev <boris@jitsi.org>
Date: Fri, 17 Jan 2014 15:21:24 +0100
Subject: [PATCH] Fixes a regression in which RawPackets can be returned for
 re-use prematurely

---
 src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java b/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java
index 96fd8b3b..078c3992 100755
--- a/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java
+++ b/src/org/jitsi/impl/neomedia/RTPConnectorOutputStream.java
@@ -272,7 +272,10 @@ protected abstract void doLogPacket(
     private boolean send(RawPacket packet)
     {
         if(!isSocketValid())
+        {
+            rawPacketPool.offer(packet);
             return false;
+        }
 
         numberOfPackets++;
         for (InetSocketAddress target : targets)
@@ -377,6 +380,7 @@ public int write(byte[] buffer, int offset, int length)
                     {
                         //skip sending the rest, but return them to the pool
                         fail = true;
+                        continue;
                     }
                 }
                 else
@@ -385,7 +389,7 @@ public int write(byte[] buffer, int offset, int length)
                 }
             }
 
-            if (pkt != null)
+            if (pkt != null && fail) //if !fail, send() will have returned it
                 rawPacketPool.offer(pkt);
         }
 
-- 
GitLab