提交 81355098 authored 作者: Anthony Minessale's avatar Anthony Minessale

fix early media vs answer race

上级 3691279e
This diff was suppressed by a .gitattributes entry.
...@@ -1820,6 +1820,8 @@ ...@@ -1820,6 +1820,8 @@
$.verto.dialog.prototype.handleAnswer = function(params) { $.verto.dialog.prototype.handleAnswer = function(params) {
var dialog = this; var dialog = this;
dialog.gotAnswer = true;
if (dialog.state.val >= $.verto.enum.state.active.val) { if (dialog.state.val >= $.verto.enum.state.active.val) {
return; return;
} }
...@@ -1827,15 +1829,20 @@ ...@@ -1827,15 +1829,20 @@
if (dialog.state.val >= $.verto.enum.state.early.val) { if (dialog.state.val >= $.verto.enum.state.early.val) {
dialog.setState($.verto.enum.state.active); dialog.setState($.verto.enum.state.active);
} else { } else {
dialog.rtc.answer(params.sdp, function() { if (dialog.gotEarly) {
dialog.setState($.verto.enum.state.active); console.log("Dialog " + dialog.callID + "Got answer while still establishing early media, delaying...");
}, } else {
function(e) { console.log("Dialog " + dialog.callID + "Answering Channel");
console.error(e); dialog.rtc.answer(params.sdp, function() {
dialog.hangup(); dialog.setState($.verto.enum.state.active);
}); },
console.log("ANSWER SDP", params.sdp); function(e) {
} console.error(e);
dialog.hangup();
});
console.log("Dialog " + dialog.callID + "ANSWER SDP", params.sdp);
}
}
}; };
$.verto.dialog.prototype.cidString = function(enc) { $.verto.dialog.prototype.cidString = function(enc) {
...@@ -1878,14 +1885,22 @@ ...@@ -1878,14 +1885,22 @@
return; return;
} }
dialog.gotEarly = true;
dialog.rtc.answer(params.sdp, function() { dialog.rtc.answer(params.sdp, function() {
dialog.setState($.verto.enum.state.early); console.log("Dialog " + dialog.callID + "Establishing early media");
dialog.setState($.verto.enum.state.early);
if (dialog.gotAnswer) {
console.log("Dialog " + dialog.callID + "Answering Channel");
dialog.setState($.verto.enum.state.active);
}
}, },
function(e) { function(e) {
console.error(e); console.error(e);
dialog.hangup(); dialog.hangup();
}); });
console.log("EARLY SDP", params.sdp); console.log("Dialog " + dialog.callID + "EARLY SDP", params.sdp);
}; };
$.verto.ENUM = function(s) { $.verto.ENUM = function(s) {
......
...@@ -1848,7 +1848,6 @@ static switch_status_t verto_send_media_indication(switch_core_session_t *sessio ...@@ -1848,7 +1848,6 @@ static switch_status_t verto_send_media_indication(switch_core_session_t *sessio
} else { } else {
cJSON *params = NULL; cJSON *params = NULL;
cJSON *msg = jrpc_new_req(method, tech_pvt->call_id, &params); cJSON *msg = jrpc_new_req(method, tech_pvt->call_id, &params);
if (!switch_test_flag(tech_pvt, TFLAG_SENT_MEDIA)) { if (!switch_test_flag(tech_pvt, TFLAG_SENT_MEDIA)) {
cJSON_AddItemToObject(params, "sdp", cJSON_CreateString(tech_pvt->mparams->local_sdp_str)); cJSON_AddItemToObject(params, "sdp", cJSON_CreateString(tech_pvt->mparams->local_sdp_str));
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论