From 0cd645de074223ce6b4441f0e43ecf90ef48c1f7 Mon Sep 17 00:00:00 2001
From: Ingo Bauersachs <ingo@jitsi.org>
Date: Sat, 8 Mar 2014 17:50:14 +0100
Subject: [PATCH] Fix some possible NPEs

---
 src/org/jitsi/impl/neomedia/MediaStreamImpl.java         | 9 ++++++---
 .../jitsi/impl/neomedia/RTPConnectorUDPOutputStream.java | 3 +++
 src/org/jitsi/impl/neomedia/device/MediaDeviceImpl.java  | 7 ++++++-
 .../jitsi/impl/neomedia/notify/AudioSystemClipImpl.java  | 5 +++++
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
index fa20e98a..238042ac 100644
--- a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
+++ b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
@@ -2518,9 +2518,12 @@ else if (ev instanceof RemotePayloadChangeEvent)
                     // and starting again the DataSource
                     try
                     {
-                        transcodingDataSource.disconnect();
-                        transcodingDataSource.connect();
-                        transcodingDataSource.start();
+                        if (transcodingDataSource != null)
+                        {
+                            transcodingDataSource.disconnect();
+                            transcodingDataSource.connect();
+                            transcodingDataSource.start();
+                        }
 
                         // as output streams of the DataSource
                         // are recreated we need to update
diff --git a/src/org/jitsi/impl/neomedia/RTPConnectorUDPOutputStream.java b/src/org/jitsi/impl/neomedia/RTPConnectorUDPOutputStream.java
index 415ccfab..690ab63d 100644
--- a/src/org/jitsi/impl/neomedia/RTPConnectorUDPOutputStream.java
+++ b/src/org/jitsi/impl/neomedia/RTPConnectorUDPOutputStream.java
@@ -69,6 +69,9 @@ protected void sendToTarget(RawPacket packet, InetSocketAddress target)
     @Override
     protected void doLogPacket(RawPacket packet, InetSocketAddress target)
     {
+        if (socket == null || packet == null || target == null)
+            return;
+
         // Do not log the packet if this one has been processed (and already
         // logged) by the ice4j stack.
         if(socket instanceof MultiplexingDatagramSocket)
diff --git a/src/org/jitsi/impl/neomedia/device/MediaDeviceImpl.java b/src/org/jitsi/impl/neomedia/device/MediaDeviceImpl.java
index 05ffce29..e3ac6a6e 100644
--- a/src/org/jitsi/impl/neomedia/device/MediaDeviceImpl.java
+++ b/src/org/jitsi/impl/neomedia/device/MediaDeviceImpl.java
@@ -139,7 +139,12 @@ private static String toString(CaptureDevice captureDevice)
 
         CaptureDeviceInfo captureDeviceInfo
             = captureDevice.getCaptureDeviceInfo();
-        MediaLocator mediaLocator = captureDeviceInfo.getLocator();
+
+        MediaLocator mediaLocator = null;
+        if (captureDeviceInfo != null)
+        {
+            mediaLocator = captureDeviceInfo.getLocator();
+        }
 
         str.append((mediaLocator == null) ? captureDeviceInfo : mediaLocator);
         return str.toString();
diff --git a/src/org/jitsi/impl/neomedia/notify/AudioSystemClipImpl.java b/src/org/jitsi/impl/neomedia/notify/AudioSystemClipImpl.java
index bafd820c..19780180 100644
--- a/src/org/jitsi/impl/neomedia/notify/AudioSystemClipImpl.java
+++ b/src/org/jitsi/impl/neomedia/notify/AudioSystemClipImpl.java
@@ -121,6 +121,11 @@ protected void exitRunOnceInPlayThread()
      */
     protected boolean runOnceInPlayThread()
     {
+        if (renderer == null || buffer == null)
+        {
+            return false;
+        }
+
         InputStream audioStream = null;
 
         try
-- 
GitLab