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