@@ -61,6 +61,7 @@ LDi_newFlagState(const char* key) {
6161 state -> debugEventsUntilDate = 0 ;
6262 state -> trackEvents = LDBooleanFalse ;
6363 state -> version = 0 ;
64+ state -> omitDetails = LDBooleanFalse ;
6465
6566 return state ;
6667}
@@ -261,13 +262,15 @@ static LDBoolean buildFlagState(const struct LDAllFlagsState *const flags, struc
261262 }
262263
263264
264- if (!LDObjectSetNumber (flagObj , "version" , flag -> version )) {
265- LD_LOG (LD_LOG_ERROR , "set key" );
265+ if (!flag -> omitDetails ) {
266+ if (!LDObjectSetNumber (flagObj , "version" , flag -> version )) {
267+ LD_LOG (LD_LOG_ERROR , "set key" );
266268
267- return LDBooleanFalse ;
269+ return LDBooleanFalse ;
270+ }
268271 }
269272
270- if (flag -> details .reason != LD_UNKNOWN ) {
273+ if (flag -> details .reason != LD_UNKNOWN && ! flag -> omitDetails ) {
271274 struct LDJSON * reason = NULL ;
272275
273276 if (!(reason = LDReasonToJSON (& flag -> details ))) {
@@ -370,22 +373,19 @@ LDi_freeAllFlagsBuilder(struct LDAllFlagsBuilder *const builder) {
370373LDBoolean
371374LDi_allFlagsBuilderAdd (struct LDAllFlagsBuilder * const b , struct LDFlagState * const flag )
372375{
373- LDBoolean wantReason ;
374376
375377 LD_ASSERT (b );
376378
377- wantReason = b -> includeReasons ;
378-
379- if (wantReason && b -> detailsOnlyForTrackedFlags ) {
379+ if (b -> detailsOnlyForTrackedFlags ) {
380380 double now ;
381381
382382 LDi_getMonotonicMilliseconds (& now );
383383 if (!flag -> trackEvents && !(flag -> debugEventsUntilDate != 0 && flag -> debugEventsUntilDate > now )) {
384- wantReason = LDBooleanFalse ;
384+ flag -> omitDetails = LDBooleanTrue ;
385385 }
386386 }
387387
388- if (!wantReason ) {
388+ if (!b -> includeReasons ) {
389389 if (flag -> details .reason == LD_RULE_MATCH ) {
390390 LDFree (flag -> details .extra .rule .id );
391391 } else if (flag -> details .reason == LD_PREREQUISITE_FAILED ) {
0 commit comments