Skip to content

Commit f7b519a

Browse files
authored
Merge pull request #714 from bgrozev/fixes
Fixes
2 parents aef3b62 + 6ca96e7 commit f7b519a

File tree

7 files changed

+68
-21
lines changed

7 files changed

+68
-21
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@
157157
<dependency>
158158
<groupId>${project.groupId}</groupId>
159159
<artifactId>libjitsi</artifactId>
160-
<version>1.0-20180829.231707-362</version>
160+
<version>1.0-20180904.192703-363</version>
161161
</dependency>
162162

163163
<dependency>

src/main/java/org/jitsi/videobridge/AbstractEndpoint.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ protected List<MediaStreamTrackDesc> getAllMediaStreamTracks(
419419
List<MediaStreamTrackDesc> allTracks = new LinkedList<>();
420420
channels.stream()
421421
.map(channel -> channel.getStream().getMediaStreamTrackReceiver())
422+
.filter(Objects::nonNull)
422423
.forEach(
423424
trackReceiver -> allTracks.addAll(
424425
Arrays.asList(trackReceiver.getMediaStreamTracks())));

src/main/java/org/jitsi/videobridge/AbstractEndpointMessageTransport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public abstract class AbstractEndpointMessageTransport
3838
* information.
3939
*/
4040
private static final Logger classLogger
41-
= Logger.getLogger(EndpointMessageTransport.class);
41+
= Logger.getLogger(AbstractEndpointMessageTransport.class);
4242

4343
/**
4444
* The {@link Endpoint} associated with this

src/main/java/org/jitsi/videobridge/Conference.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,8 +491,10 @@ private void closeTransportManagers()
491491
{
492492
synchronized (transportManagers)
493493
{
494-
transportManagers.forEach((id, tm) -> closeTransportManager(tm));
495-
transportManagers.clear();
494+
Collection<TransportManager> transportManagers
495+
= new LinkedList<>(this.transportManagers.values());
496+
transportManagers.forEach(this::closeTransportManager);
497+
this.transportManagers.clear();
496498
}
497499
}
498500

src/main/java/org/jitsi/videobridge/RtpChannel.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1903,19 +1903,29 @@ private void updateStatisticsOnExpire()
19031903

19041904
updatePacketsAndBytes(conferenceStatistics);
19051905

1906-
TrackStats streamStats
1907-
= stream.getMediaStreamStats().getSendStats();
1908-
logger.info(Logger.Category.STATISTICS,
1909-
"expire_ch_stats," + getLoggingId() +
1910-
" bRecv=" + statistics.bytesReceived +
1911-
",bSent=" + statistics.bytesSent +
1912-
",pRecv=" + statistics.packetsReceived +
1913-
",pSent=" + statistics.packetsSent +
1914-
",bRetr=" + streamStats.getBytesRetransmitted() +
1915-
",bNotRetr=" + streamStats.getBytesNotRetransmitted() +
1916-
",pRetr=" + streamStats.getPacketsRetransmitted() +
1917-
",pNotRetr=" + streamStats.getPacketsNotRetransmitted() +
1918-
",pMiss=" + streamStats.getPacketsMissingFromCache());
1906+
MediaStream stream = this.stream;
1907+
TrackStats streamStats;
1908+
if (stream != null &&
1909+
(streamStats = stream.getMediaStreamStats().getSendStats())
1910+
!= null)
1911+
{
1912+
logger.info(Logger.Category.STATISTICS,
1913+
"expire_ch_stats," + getLoggingId() +
1914+
" bRecv=" + statistics.bytesReceived +
1915+
",bSent=" + statistics.bytesSent +
1916+
",pRecv=" + statistics.packetsReceived +
1917+
",pSent=" + statistics.packetsSent +
1918+
",bRetr=" +
1919+
streamStats.getBytesRetransmitted() +
1920+
",bNotRetr=" +
1921+
streamStats.getBytesNotRetransmitted() +
1922+
",pRetr=" +
1923+
streamStats.getPacketsRetransmitted() +
1924+
",pNotRetr=" +
1925+
streamStats.getPacketsNotRetransmitted() +
1926+
",pMiss=" +
1927+
streamStats.getPacketsMissingFromCache());
1928+
}
19191929
}
19201930
}
19211931

src/main/java/org/jitsi/videobridge/cc/SimulcastController.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1525,10 +1525,27 @@ boolean accept(FrameDesc source, RawPacket pkt)
15251525
private RawPacket handleVp8PictureIdRewriting(RawPacket pktOut)
15261526
{
15271527
MediaStreamTrackDesc source = weakSource.get();
1528-
assert source != null;
1528+
if (source == null)
1529+
{
1530+
logger.error("Source is null, dropping packet.");
1531+
return null;
1532+
}
15291533

1530-
REDBlock redBlock = source.getMediaStreamTrackReceiver()
1531-
.getStream().getPrimaryREDBlock(pktOut);
1534+
MediaStreamTrackReceiver trackReceiver
1535+
= source.getMediaStreamTrackReceiver();
1536+
if (trackReceiver == null)
1537+
{
1538+
logger.error("Track receiver is null, dropping packet.");
1539+
return null;
1540+
}
1541+
1542+
MediaStream stream = trackReceiver.getStream();
1543+
if (stream == null)
1544+
{
1545+
logger.error("Stream is null, dropping packet.");
1546+
return null;
1547+
}
1548+
REDBlock redBlock = stream.getPrimaryREDBlock(pktOut);
15321549

15331550
if (!DePacketizer
15341551
.VP8PayloadDescriptor.hasExtendedPictureId(

src/main/java/org/jitsi/videobridge/octo/OctoTransportManager.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ public class OctoTransportManager
5151
*/
5252
public static final String NAMESPACE = "http://jitsi.org/octo";
5353

54+
/**
55+
* The timeout to set on the sockets that we create.
56+
*/
57+
private static final int SO_TIMEOUT = 1000;
58+
5459
/**
5560
* Converts a "relay ID" to a socket address. The current implementation
5661
* assumes that the ID has the form of "address:port".
@@ -239,7 +244,7 @@ private void initializeSockets()
239244
private DatagramSocket createOctoSocket(DatagramSocket socket)
240245
throws SocketException
241246
{
242-
return new DelegatingDatagramSocket(socket)
247+
DatagramSocket s = new DelegatingDatagramSocket(socket)
243248
{
244249
@Override
245250
public void receive(DatagramPacket p)
@@ -274,6 +279,18 @@ public void send(DatagramPacket p)
274279
doSend(p, true);
275280
}
276281
};
282+
283+
// With the hierarchy of sockets that we use for Octo (Delegating ->
284+
// Multiplexed -> Multiplexing -> DatagramSocket) the calls receive()
285+
// are handled by the Multiplexing instance. Since it is persistent, it
286+
// will not get closed when this socket instance is closed, and will
287+
// therefore not throw a SocketClosedException. This means that we can
288+
// not rely on this exception to stop the receive thread
289+
// (RTPConnectorInputStream#receiveThread), and therefore we need a
290+
// finite timeout.
291+
s.setSoTimeout(SO_TIMEOUT);
292+
293+
return s;
277294
}
278295

279296
/**

0 commit comments

Comments
 (0)