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;