From 566b354dd44fa476e3659ff881aab47a36789c44 Mon Sep 17 00:00:00 2001
From: Lyubomir Marinov <lyubomir.marinov@jitsi.org>
Date: Tue, 28 Aug 2012 09:55:39 +0000
Subject: [PATCH] Fixes a NullPointerException during video conference calls.
 Reported by Emil Ivov.

---
 .../jitsi/impl/neomedia/MediaStreamImpl.java  | 20 +++++++++------
 .../impl/neomedia/RTPTranslatorImpl.java      | 25 ++++++++++++++++++-
 2 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
index e6219a55..2495af4b 100644
--- a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
+++ b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
@@ -2062,16 +2062,21 @@ private Iterable<SendStream> stopSendStreams(
             return null;
 
         for (SendStream sendStream : sendStreams)
+        {
             try
             {
-                if(logger.isTraceEnabled())
-                    logger.trace("Stopping send stream with hashcode "
-                            + sendStream.hashCode());
+                if (logger.isTraceEnabled())
+                {
+                    logger.trace(
+                            "Stopping send stream with hashcode "
+                                + sendStream.hashCode());
+                }
 
                 sendStream.getDataSource().stop();
                 sendStream.stop();
 
                 if (close)
+                {
                     try
                     {
                         sendStream.close();
@@ -2089,16 +2094,17 @@ private Iterable<SendStream> stopSendStreams(
                          * SendStreams, ignore the exception here just in case
                          * because we already ignore IOExceptions.
                          */
-                        logger
-                            .error(
-                                "Failed to close stream " + sendStream,
+                        logger.error(
+                                "Failed to close send stream " + sendStream,
                                 npe);
                     }
+                }
             }
             catch (IOException ioe)
             {
-                logger.warn("Failed to stop stream " + sendStream, ioe);
+                logger.warn("Failed to stop send stream " + sendStream, ioe);
             }
+        }
         return sendStreams;
     }
 
diff --git a/src/org/jitsi/impl/neomedia/RTPTranslatorImpl.java b/src/org/jitsi/impl/neomedia/RTPTranslatorImpl.java
index bee04eb1..a9863c74 100644
--- a/src/org/jitsi/impl/neomedia/RTPTranslatorImpl.java
+++ b/src/org/jitsi/impl/neomedia/RTPTranslatorImpl.java
@@ -155,6 +155,15 @@ private synchronized void closeFakeSendStreamIfNotNecessary()
                 {
                     fakeSendStream.close();
                 }
+                catch (NullPointerException npe)
+                {
+                    /*
+                     * Refer to MediaStreamImpl#stopSendStreams(
+                     * Iterable<SendStream>, boolean) for an explanation about
+                     * the swallowing of the exception.
+                     */
+                    logger.error("Failed to close fake send stream", npe);
+                }
                 finally
                 {
                     fakeSendStream = null;
@@ -180,7 +189,21 @@ private synchronized void closeSendStream(SendStreamDesc sendStreamDesc)
         if (sendStreams.contains(sendStreamDesc)
                 && (sendStreamDesc.getSendStreamCount() < 1))
         {
-            sendStreamDesc.sendStream.close();
+            SendStream sendStream = sendStreamDesc.sendStream;
+
+            try
+            {
+                sendStream.close();
+            }
+            catch (NullPointerException npe)
+            {
+                /*
+                 * Refer to MediaStreamImpl#stopSendStreams(
+                 * Iterable<SendStream>, boolean) for an explanation about the
+                 * swallowing of the exception.
+                 */
+                logger.error("Failed to close send stream", npe);
+            }
             sendStreams.remove(sendStreamDesc);
         }
     }
-- 
GitLab