You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2019/03/21 05:39:44 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2035] corrrect
error is displayed if broadcast can't be started
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 <so...@gmail.com>
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);
}