|
|
|
@ -461,6 +461,11 @@ static const char *janus_videoroom_join(struct websocket_message *wm, struct jan |
|
|
|
return "JSON object does not contain 'message.ptype' key"; |
|
|
|
json_reader_end_member(reader); |
|
|
|
|
|
|
|
bool plain_offer = false; |
|
|
|
if (json_reader_read_member(reader, "plain")) |
|
|
|
plain_offer = json_reader_get_boolean_value(reader); |
|
|
|
json_reader_end_member(reader); |
|
|
|
|
|
|
|
*retcode = 436; |
|
|
|
if (handle->room != 0 && handle->room != room_id) |
|
|
|
return "User already exists in a different room"; |
|
|
|
@ -575,17 +580,25 @@ static const char *janus_videoroom_join(struct websocket_message *wm, struct jan |
|
|
|
AUTO_CLEANUP(struct sdp_ng_flags flags, call_ng_free_flags); |
|
|
|
call_ng_flags_init(&flags, OP_REQUEST); |
|
|
|
|
|
|
|
// set all WebRTC-specific attributes |
|
|
|
flags.transport_protocol = &transport_protocols[PROTO_UDP_TLS_RTP_SAVPF]; |
|
|
|
flags.ice_option = ICE_FORCE; |
|
|
|
flags.trickle_ice = 1; |
|
|
|
flags.generate_mid = 1; |
|
|
|
flags.rtcp_mux_offer = 1; |
|
|
|
flags.rtcp_mux_require = 1; |
|
|
|
flags.no_rtcp_attr = 1; |
|
|
|
flags.sdes_off = 1; |
|
|
|
flags.rtcp_mirror = 1; |
|
|
|
|
|
|
|
if (!plain_offer) { |
|
|
|
// set all WebRTC-specific attributes |
|
|
|
flags.transport_protocol = &transport_protocols[PROTO_UDP_TLS_RTP_SAVPF]; |
|
|
|
flags.ice_option = ICE_FORCE; |
|
|
|
flags.trickle_ice = 1; |
|
|
|
flags.rtcp_mux_offer = 1; |
|
|
|
flags.rtcp_mux_require = 1; |
|
|
|
flags.no_rtcp_attr = 1; |
|
|
|
flags.sdes_off = 1; |
|
|
|
} |
|
|
|
else { |
|
|
|
flags.transport_protocol = &transport_protocols[PROTO_RTP_AVP]; |
|
|
|
flags.ice_option = ICE_REMOVE; |
|
|
|
flags.rtcp_mux_demux = 1; |
|
|
|
} |
|
|
|
|
|
|
|
int ret = monologue_subscribe_request(&srcs, dest_ml, &flags); |
|
|
|
if (ret) |
|
|
|
return "Subscribe error"; |
|
|
|
|