From 1b01ffab81c6abcd269797e62a2819bb4e844827 Mon Sep 17 00:00:00 2001 From: Juan Navarro Date: Wed, 8 Sep 2021 11:26:19 +0200 Subject: [PATCH] recording: block on connect() before calling record() The Kurento RecorderEndpoint.record() method expects that all elements have been successfully connected. However if connect() is called non- blocking, then it might happen that record() is called in parallel, when the connections haven't been done yet. --- .../io/openvidu/server/recording/CompositeWrapper.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/recording/CompositeWrapper.java b/openvidu-server/src/main/java/io/openvidu/server/recording/CompositeWrapper.java index dfa2ee7d..9b7c80f9 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/recording/CompositeWrapper.java +++ b/openvidu-server/src/main/java/io/openvidu/server/recording/CompositeWrapper.java @@ -121,7 +121,11 @@ public class CompositeWrapper { public void connectPublisherEndpoint(PublisherEndpoint endpoint) throws OpenViduException { HubPort hubPort = new HubPort.Builder(composite).build(); - endpoint.connect(hubPort, false); + + // Block on this call: connections must have been already finished + // before calling `RecorderEndpoint.record()`. + endpoint.connect(hubPort, true); + String streamId = endpoint.getOwner().getPublisherStreamId(); this.hubPorts.put(streamId, hubPort); this.publisherEndpoints.put(streamId, endpoint); @@ -182,4 +186,4 @@ public class CompositeWrapper { return this.endTime - this.startTime; } -} \ No newline at end of file +}