mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-05 02:02:01 +00:00
fix early media vs answer race
This commit is contained in:
parent
3691279e8a
commit
8135509803
3649
html5/verto/demo/js/verto-min.js
vendored
3649
html5/verto/demo/js/verto-min.js
vendored
File diff suppressed because it is too large
Load Diff
@ -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 @@
|
|||||||
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 @@
|
|||||||
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
|
|||||||
} else {
|
} else {
|
||||||
cJSON *params = NULL;
|
cJSON *params = NULL;
|
||||||
cJSON *msg = jrpc_new_req(method, tech_pvt->call_id, ¶ms);
|
cJSON *msg = jrpc_new_req(method, tech_pvt->call_id, ¶ms);
|
||||||
|
|
||||||
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));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user