whipsink: Handle offer creation errors more gracefully

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949>
This commit is contained in:
Sebastian Dröge 2022-12-05 12:15:55 +02:00
parent 8452cd9efa
commit 9b964db4c9
2 changed files with 21 additions and 6 deletions

View file

@ -845,7 +845,7 @@ impl WhepSrc {
gst::element_imp_error!(
self_,
gst::LibraryError::Failed,
["generate offer::Promise returned with no reply: {}", error]
["generate offer::Promise returned with error: {}", error]
);
}
});

View file

@ -427,11 +427,26 @@ impl ObjectImpl for WhipSink {
let whipsink = ele.imp();
let offer_sdp = match reply {
Ok(Some(sdp)) => sdp
.value("offer")
.expect("structure must have an offer key")
.get::<gst_webrtc::WebRTCSessionDescription>()
.expect("offer must be an SDP"),
Ok(Some(reply)) => {
if let Ok(sdp) = reply.value("offer").map(|offer| {
offer.get::<gst_webrtc::WebRTCSessionDescription>().unwrap()
}) {
sdp
} else {
let error = reply
.value("error")
.expect("structure must have an error value")
.get::<glib::Error>()
.expect("value must be a GLib error");
gst::element_imp_error!(
whipsink,
gst::LibraryError::Failed,
["generate offer::Promise returned with error: {}", error]
);
return;
}
}
Ok(None) => {
gst::element_error!(
ele,