From b4aa74b3be08f8d551a1bb0cc8e6b533a2ce2bc9 Mon Sep 17 00:00:00 2001 From: reuk Date: Wed, 22 Nov 2023 19:53:30 +0000 Subject: [PATCH] CIPropertyDelegate: Fix issue where status field was omitted from successful PE response headers --- modules/juce_midi_ci/ci/juce_CIPropertyDelegate.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/juce_midi_ci/ci/juce_CIPropertyDelegate.cpp b/modules/juce_midi_ci/ci/juce_CIPropertyDelegate.cpp index 174945216f..0c88221a97 100644 --- a/modules/juce_midi_ci/ci/juce_CIPropertyDelegate.cpp +++ b/modules/juce_midi_ci/ci/juce_CIPropertyDelegate.cpp @@ -172,15 +172,19 @@ struct PropertyDelegateDetail static auto getSubscribeId (const PropertyRequestHeader&) { return String{}; } static auto getSubscribeId (const PropertyReplyHeader&) { return String{}; } - static auto getStatus (const PropertySubscriptionHeader&) { return 0; } - static auto getStatus (const PropertyRequestHeader&) { return 0; } - static auto getStatus (const PropertyReplyHeader& h) { return h.status; } + static std::optional getStatus (const PropertySubscriptionHeader&) { return {}; } + static std::optional getStatus (const PropertyRequestHeader&) { return {}; } + static std::optional getStatus (const PropertyReplyHeader& h) { return h.status; } template static auto toFieldsFromHeader (const T& t) { auto fields = t.extended; + // Status shall always be included if it is present in the header + if (const auto status = getStatus (t)) + fields["status"] = *status; + if (getResource (t) != getResource (T())) fields["resource"] = getResource (t); @@ -199,9 +203,6 @@ struct PropertyDelegateDetail if (t.mediaType != T().mediaType) fields["mediaType"] = t.mediaType; - if (getStatus (t) != getStatus (T())) - fields["status"] = getStatus (t); - if (getSetPartial (t)) fields["setPartial"] = true;