Use LOG_AND_RETURN_ERROR for returning RTCError

BUG=None

Change-Id: Ia5c27f0ae752810fabb53aea58f8731c6c314519
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/311920
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40469}
This commit is contained in:
Philipp Hancke 2023-07-18 11:03:39 +02:00 committed by WebRTC LUCI CQ
parent 7dbf55437f
commit b81bf53f0e

View File

@ -314,17 +314,13 @@ RTCError VerifyCrypto(const SessionDescription* desc,
}
if (dtls_enabled) {
if (!tinfo->description.identity_fingerprint) {
RTC_LOG(LS_WARNING)
<< "Session description must have DTLS fingerprint if "
"DTLS enabled.";
return RTCError(RTCErrorType::INVALID_PARAMETER,
kSdpWithoutDtlsFingerprint);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
kSdpWithoutDtlsFingerprint);
}
} else {
if (media->cryptos().empty()) {
RTC_LOG(LS_WARNING)
<< "Session description must have SDES when DTLS disabled.";
return RTCError(RTCErrorType::INVALID_PARAMETER, kSdpWithoutSdesCrypto);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
kSdpWithoutSdesCrypto);
}
}
}
@ -397,12 +393,12 @@ RTCError FindDuplicateCodecParameters(
payload_to_codec_parameters.find(codec_parameters.payload_type);
if (existing_codec_parameters != payload_to_codec_parameters.end() &&
codec_parameters != existing_codec_parameters->second) {
return RTCError(RTCErrorType::INVALID_PARAMETER,
"A BUNDLE group contains a codec collision for "
"payload_type='" +
rtc::ToString(codec_parameters.payload_type) +
". All codecs must share the same type, "
"encoding name, clock rate and parameters.");
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
"A BUNDLE group contains a codec collision for "
"payload_type='" +
rtc::ToString(codec_parameters.payload_type) +
". All codecs must share the same type, "
"encoding name, clock rate and parameters.");
}
payload_to_codec_parameters.insert(
std::make_pair(codec_parameters.payload_type, codec_parameters));
@ -424,9 +420,9 @@ RTCError ValidateBundledPayloadTypes(
const cricket::MediaContentDescription* media_description =
description.GetContentDescriptionByName(content_name);
if (!media_description) {
return RTCError(RTCErrorType::INVALID_PARAMETER,
"A BUNDLE group contains a MID='" + content_name +
"' matching no m= section.");
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
"A BUNDLE group contains a MID='" + content_name +
"' matching no m= section.");
}
if (!media_description->has_codecs()) {
continue;
@ -463,7 +459,7 @@ RTCError FindDuplicateHeaderExtensionIds(
if (existing_extension != id_to_extension.end() &&
!(extension.uri == existing_extension->second.uri &&
extension.encrypt == existing_extension->second.encrypt)) {
return RTCError(
LOG_AND_RETURN_ERROR(
RTCErrorType::INVALID_PARAMETER,
"A BUNDLE group contains a codec collision for "
"header extension id=" +
@ -487,9 +483,9 @@ RTCError ValidateBundledRtpHeaderExtensions(
const cricket::MediaContentDescription* media_description =
description.GetContentDescriptionByName(content_name);
if (!media_description) {
return RTCError(RTCErrorType::INVALID_PARAMETER,
"A BUNDLE group contains a MID='" + content_name +
"' matching no m= section.");
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
"A BUNDLE group contains a MID='" + content_name +
"' matching no m= section.");
}
for (const auto& extension : media_description->rtp_header_extensions()) {
auto error =
@ -518,10 +514,10 @@ RTCError ValidateRtpHeaderExtensionsForSpecSimulcast(
return ext.uri == RtpExtension::kRidUri;
});
if (it == extensions.end()) {
return RTCError(RTCErrorType::INVALID_PARAMETER,
"The media section with MID='" + content.mid() +
"' negotiates simulcast but does not negotiate "
"the RID RTP header extension.");
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
"The media section with MID='" + content.mid() +
"' negotiates simulcast but does not negotiate "
"the RID RTP header extension.");
}
}
return RTCError::OK();
@ -3029,10 +3025,11 @@ RTCError SdpOfferAnswerHandler::Rollback(SdpType desc_type) {
auto state = signaling_state();
if (state != PeerConnectionInterface::kHaveLocalOffer &&
state != PeerConnectionInterface::kHaveRemoteOffer) {
return RTCError(RTCErrorType::INVALID_STATE,
(rtc::StringBuilder("Called in wrong signalingState: ")
<< (PeerConnectionInterface::AsString(signaling_state())))
.Release());
LOG_AND_RETURN_ERROR(
RTCErrorType::INVALID_STATE,
(rtc::StringBuilder("Called in wrong signalingState: ")
<< (PeerConnectionInterface::AsString(signaling_state())))
.Release());
}
RTC_DCHECK_RUN_ON(signaling_thread());
RTC_DCHECK(IsUnifiedPlan());
@ -3487,16 +3484,17 @@ RTCError SdpOfferAnswerHandler::ValidateSessionDescription(
RTC_DCHECK_EQ(SessionError::kNone, session_error());
if (!sdesc || !sdesc->description()) {
return RTCError(RTCErrorType::INVALID_PARAMETER, kInvalidSdp);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER, kInvalidSdp);
}
SdpType type = sdesc->GetType();
if ((source == cricket::CS_LOCAL && !ExpectSetLocalDescription(type)) ||
(source == cricket::CS_REMOTE && !ExpectSetRemoteDescription(type))) {
return RTCError(RTCErrorType::INVALID_STATE,
(rtc::StringBuilder("Called in wrong state: ")
<< PeerConnectionInterface::AsString(signaling_state()))
.Release());
LOG_AND_RETURN_ERROR(
RTCErrorType::INVALID_STATE,
(rtc::StringBuilder("Called in wrong state: ")
<< PeerConnectionInterface::AsString(signaling_state()))
.Release());
}
RTCError error = ValidateMids(*sdesc->description());
@ -3517,7 +3515,8 @@ RTCError SdpOfferAnswerHandler::ValidateSessionDescription(
// Verify ice-ufrag and ice-pwd.
if (!VerifyIceUfragPwdPresent(sdesc->description(), bundle_groups_by_mid)) {
return RTCError(RTCErrorType::INVALID_PARAMETER, kSdpWithoutIceUfragPwd);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
kSdpWithoutIceUfragPwd);
}
// Validate that there are no collisions of bundled payload types.
@ -3538,7 +3537,8 @@ RTCError SdpOfferAnswerHandler::ValidateSessionDescription(
if (!pc_->ValidateBundleSettings(sdesc->description(),
bundle_groups_by_mid)) {
return RTCError(RTCErrorType::INVALID_PARAMETER, kBundleWithoutRtcpMux);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
kBundleWithoutRtcpMux);
}
// TODO(skvlad): When the local rtcp-mux policy is Require, reject any
@ -3554,7 +3554,8 @@ RTCError SdpOfferAnswerHandler::ValidateSessionDescription(
if (!MediaSectionsHaveSameCount(*offer_desc, *sdesc->description()) ||
!MediaSectionsInSameOrder(*offer_desc, nullptr, *sdesc->description(),
type)) {
return RTCError(RTCErrorType::INVALID_PARAMETER, kMlineMismatchInAnswer);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
kMlineMismatchInAnswer);
}
} else {
// The re-offers should respect the order of m= sections in current
@ -3578,8 +3579,8 @@ RTCError SdpOfferAnswerHandler::ValidateSessionDescription(
if (current_desc &&
!MediaSectionsInSameOrder(*current_desc, secondary_current_desc,
*sdesc->description(), type)) {
return RTCError(RTCErrorType::INVALID_PARAMETER,
kMlineMismatchInSubsequentOffer);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
kMlineMismatchInSubsequentOffer);
}
}
@ -3594,7 +3595,7 @@ RTCError SdpOfferAnswerHandler::ValidateSessionDescription(
if ((desc.type() == cricket::MEDIA_TYPE_AUDIO ||
desc.type() == cricket::MEDIA_TYPE_VIDEO) &&
desc.streams().size() > 1u) {
return RTCError(
LOG_AND_RETURN_ERROR(
RTCErrorType::INVALID_PARAMETER,
"Media section has more than one track specified with a=ssrc lines "
"which is not supported with Unified Plan.");
@ -3631,7 +3632,7 @@ RTCError SdpOfferAnswerHandler::UpdateTransceiversAndDataChannels(
if (pc_->configuration()->bundle_policy ==
PeerConnectionInterface::kBundlePolicyMaxBundle &&
bundle_groups_by_mid.empty()) {
return RTCError(
LOG_AND_RETURN_ERROR(
RTCErrorType::INVALID_PARAMETER,
"max-bundle configured but session description has no BUNDLE group");
}
@ -3721,7 +3722,8 @@ RTCError SdpOfferAnswerHandler::UpdateTransceiversAndDataChannels(
} else if (media_type == cricket::MEDIA_TYPE_UNSUPPORTED) {
RTC_LOG(LS_INFO) << "Ignoring unsupported media type";
} else {
return RTCError(RTCErrorType::INTERNAL_ERROR, "Unknown section type.");
LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR,
"Unknown section type.");
}
}
@ -3766,8 +3768,8 @@ SdpOfferAnswerHandler::AssociateTransceiver(
}
if (!transceiver) {
// This may happen normally when media sections are rejected.
return RTCError(RTCErrorType::INVALID_PARAMETER,
"Transceiver not found based on m-line index");
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
"Transceiver not found based on m-line index");
}
} else {
RTC_DCHECK_EQ(source, cricket::CS_REMOTE);
@ -3826,8 +3828,9 @@ SdpOfferAnswerHandler::AssociateTransceiver(
}
if (transceiver->media_type() != media_desc->type()) {
return RTCError(RTCErrorType::INVALID_PARAMETER,
"Transceiver type does not match media description type.");
LOG_AND_RETURN_ERROR(
RTCErrorType::INVALID_PARAMETER,
"Transceiver type does not match media description type.");
}
if (media_desc->HasSimulcast()) {
@ -3908,8 +3911,8 @@ RTCError SdpOfferAnswerHandler::UpdateDataChannel(
error.set_error_detail(RTCErrorDetailType::DATA_CHANNEL_FAILURE);
DestroyDataChannelTransport(error);
} else if (!CreateDataChannel(content.name)) {
return RTCError(RTCErrorType::INTERNAL_ERROR,
"Failed to create data channel.");
LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR,
"Failed to create data channel.");
}
return RTCError::OK();
}
@ -4760,8 +4763,8 @@ RTCError SdpOfferAnswerHandler::PushdownMediaDescription(
// Note that this is never expected to fail, since RtpDemuxer doesn't
// return an error when changing payload type demux criteria, which is all
// this does.
return RTCError(RTCErrorType::INTERNAL_ERROR,
"Failed to update payload type demuxing state.");
LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR,
"Failed to update payload type demuxing state.");
}
// Push down the new SDP media section for each audio/video transceiver.
@ -4804,7 +4807,7 @@ RTCError SdpOfferAnswerHandler::PushdownMediaDescription(
: entry.first->SetRemoteContent(entry.second, type, error);
});
if (!success) {
return RTCError(RTCErrorType::INVALID_PARAMETER, error);
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER, error);
}
}
}
@ -5041,7 +5044,7 @@ RTCErrorOr<const cricket::ContentInfo*> SdpOfferAnswerHandler::FindContentInfo(
return content_info.mid() == candidate->sdp_mid();
});
if (it == contents.end()) {
return RTCError(
LOG_AND_RETURN_ERROR(
RTCErrorType::INVALID_PARAMETER,
"Mid " + candidate->sdp_mid() +
" specified but no media section with that mid found.");
@ -5055,16 +5058,16 @@ RTCErrorOr<const cricket::ContentInfo*> SdpOfferAnswerHandler::FindContentInfo(
if (mediacontent_index < content_size) {
return &description->description()->contents()[mediacontent_index];
} else {
return RTCError(RTCErrorType::INVALID_RANGE,
"Media line index (" +
rtc::ToString(candidate->sdp_mline_index()) +
") out of range (number of mlines: " +
rtc::ToString(content_size) + ").");
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_RANGE,
"Media line index (" +
rtc::ToString(candidate->sdp_mline_index()) +
") out of range (number of mlines: " +
rtc::ToString(content_size) + ").");
}
}
return RTCError(RTCErrorType::INVALID_PARAMETER,
"Neither sdp_mline_index nor sdp_mid specified.");
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
"Neither sdp_mline_index nor sdp_mid specified.");
}
RTCError SdpOfferAnswerHandler::CreateChannels(const SessionDescription& desc) {
@ -5109,8 +5112,8 @@ RTCError SdpOfferAnswerHandler::CreateChannels(const SessionDescription& desc) {
const cricket::ContentInfo* data = cricket::GetFirstDataContent(&desc);
if (data && !data->rejected && !CreateDataChannel(data->name)) {
return RTCError(RTCErrorType::INTERNAL_ERROR,
"Failed to create data channel.");
LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR,
"Failed to create data channel.");
}
return RTCError::OK();