This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new e06c8a3  [OPENMEETINGS-2035] corrrect error is displayed if broadcast 
can't be started
e06c8a3 is described below

commit e06c8a3db2c02d216d0140473601d235e30cc94d
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Mar 21 12:39:27 2019 +0700

    [OPENMEETINGS-2035] corrrect error is displayed if broadcast can't be 
started
---
 .../apache/openmeetings/core/remote/KStream.java   |  4 +--
 .../openmeetings/core/remote/StreamProcessor.java  | 32 +++++++++++++++-------
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
index 46b1c36..393e7b2 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
@@ -150,13 +150,13 @@ public class KStream extends AbstractStream {
                final WebRtcEndpoint endpoint = getEndpointForUser(processor, 
sid, uid);
                final String sdpAnswer = endpoint.processOffer(sdpOffer);
 
+               log.debug("gather candidates");
+               endpoint.gatherCandidates(); // this one might throw Exception
                log.trace("USER {}: SdpAnswer is {}", this.uid, sdpAnswer);
                processor.getHandler().sendClient(sid, newKurentoMsg()
                                .put("id", "videoResponse")
                                .put("uid", this.uid)
                                .put("sdpAnswer", sdpAnswer));
-               log.debug("gather candidates");
-               endpoint.gatherCandidates();
        }
 
        private WebRtcEndpoint getEndpointForUser(final StreamProcessor 
processor, String sid, String uid) {
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
index c75d3cf..c8788eb 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
@@ -23,6 +23,7 @@ import static 
org.apache.openmeetings.core.remote.KurentoHandler.PARAM_CANDIDATE
 import static org.apache.openmeetings.core.remote.KurentoHandler.PARAM_ICE;
 import static 
org.apache.openmeetings.core.remote.KurentoHandler.activityAllowed;
 import static org.apache.openmeetings.core.remote.KurentoHandler.newKurentoMsg;
+import static org.apache.openmeetings.core.remote.KurentoHandler.sendError;
 
 import java.util.List;
 import java.util.Map;
@@ -48,6 +49,7 @@ import org.apache.openmeetings.db.manager.IClientManager;
 import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.apache.openmeetings.db.util.ws.TextRoomMessage;
 import org.kurento.client.IceCandidate;
+import org.kurento.client.internal.server.KurentoServerException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -95,16 +97,7 @@ public class StreamProcessor implements IStreamProcessor {
                                toggleActivity(c, 
Activity.valueOf(msg.getString("activity")));
                                break;
                        case "broadcastStarted":
-                               sd = c.getStream(uid);
-                               sender = getByUid(uid);
-                               if (sender == null) {
-                                       KRoom room = 
kHandler.getRoom(c.getRoomId());
-                                       sender = room.join(sd);
-                               }
-                               sender.startBroadcast(this, sd, 
msg.getString("sdpOffer"));
-                               if (StreamType.SCREEN == sd.getType() && 
sd.hasActivity(Activity.RECORD) && !isRecording(c.getRoomId())) {
-                                       startRecording(c);
-                               }
+                               handleBroadcastStarted(c, uid, msg);
                                break;
                        case "onIceCandidate":
                                sender = getByUid(uid);
@@ -164,6 +157,25 @@ public class StreamProcessor implements IStreamProcessor {
                }
        }
 
+       private void handleBroadcastStarted(Client c, final String uid, 
JSONObject msg) {
+               StreamDesc sd = c.getStream(uid);
+               KStream sender= getByUid(uid);
+               try {
+                       if (sender == null) {
+                               KRoom room = kHandler.getRoom(c.getRoomId());
+                               sender = room.join(sd);
+                       }
+                       sender.startBroadcast(this, sd, 
msg.getString("sdpOffer"));
+                       if (StreamType.SCREEN == sd.getType() && 
sd.hasActivity(Activity.RECORD) && !isRecording(c.getRoomId())) {
+                               startRecording(c);
+                       }
+               } catch (KurentoServerException e) {
+                       sender.release(this);
+                       sendError(c, "Failed to start broadcast: " + 
e.getMessage());
+                       log.error("Failed to start broadcast", e);
+               }
+       }
+
        private static boolean isBroadcasting(final Client c) {
                return c.hasAnyActivity(Activity.AUDIO, Activity.VIDEO);
        }

Reply via email to