@@ -117,6 +117,7 @@ typedef struct DurationOptionAdditionalMetadata DurationOptionAdditionalMetadata
117117struct SizeOptionAdditionalMetadata
118118{
119119 SizeUnits defaultUnits = sizeUnits_byte;
120+ Int64 minValidValueInBytes = INT64_MIN;
120121};
121122typedef struct SizeOptionAdditionalMetadata SizeOptionAdditionalMetadata;
122123
@@ -427,7 +428,14 @@ static ResultCode parseSizeValue( const OptionMetadata* optMeta, String rawValue
427428 ResultCode parseResultCode = parseSize ( stringToView ( rawValue )
428429 , optMeta->additionalData .sizeData .defaultUnits
429430 , /* out */ &parsedValue->u .sizeValue );
430- if ( parseResultCode == resultSuccess ) parsedValue->type = parsedOptionValueType_size;
431+ if ( parseResultCode == resultSuccess )
432+ {
433+ if ( sizeToBytes ( parsedValue->u .sizeValue ) < optMeta->additionalData .sizeData .minValidValueInBytes )
434+ {
435+ return resultParsingFailed;
436+ }
437+ parsedValue->type = parsedOptionValueType_size;
438+ }
431439 return parseResultCode;
432440}
433441
@@ -667,7 +675,7 @@ static OptionMetadata buildDurationOptionMetadata(
667675 };
668676}
669677
670- [[maybe_unused]] static OptionMetadata buildSizeOptionMetadata (
678+ static OptionMetadata buildSizeOptionMetadata (
671679 String name
672680 , StringView iniName
673681 , bool isSecret
@@ -676,6 +684,7 @@ static OptionMetadata buildDurationOptionMetadata(
676684 , SetConfigSnapshotFieldFunc setFieldFunc
677685 , GetConfigSnapshotFieldFunc getFieldFunc
678686 , SizeUnits defaultUnits
687+ , Int64 minValidValueInBytes
679688)
680689{
681690 return (OptionMetadata)
@@ -692,7 +701,7 @@ static OptionMetadata buildDurationOptionMetadata(
692701 .setField = setFieldFunc,
693702 .getField = getFieldFunc,
694703 .parsedValueToZval = &parsedSizeValueToZval,
695- .additionalData = (OptionAdditionalMetadata){ .sizeData = (SizeOptionAdditionalMetadata){ .defaultUnits = defaultUnits } }
704+ .additionalData = (OptionAdditionalMetadata){ .sizeData = (SizeOptionAdditionalMetadata){ .defaultUnits = defaultUnits, . minValidValueInBytes = minValidValueInBytes } }
696705 };
697706}
698707
@@ -827,6 +836,7 @@ ELASTIC_APM_DEFINE_ENUM_FIELD_ACCESS_FUNCS( LogLevel, logLevelSyslog )
827836# ifdef PHP_WIN32
828837ELASTIC_APM_DEFINE_ENUM_FIELD_ACCESS_FUNCS ( LogLevel, logLevelWinSysDebug )
829838# endif
839+ ELASTIC_APM_DEFINE_FIELD_ACCESS_FUNCS ( sizeValue, maxSendQueueSize )
830840# if ( ELASTIC_APM_MEMORY_TRACKING_ENABLED_01 != 0 )
831841ELASTIC_APM_DEFINE_ENUM_FIELD_ACCESS_FUNCS ( MemoryTrackingLevel, memoryTrackingLevel )
832842# endif
@@ -882,6 +892,9 @@ ELASTIC_APM_DEFINE_FIELD_ACCESS_FUNCS( stringValue, debugDiagnosticsFile )
882892#define ELASTIC_APM_INIT_DURATION_METADATA ( fieldName, optName, defaultValue, defaultUnits, isNegativeValid ) \
883893 ELASTIC_APM_INIT_METADATA_EX ( buildDurationOptionMetadata, fieldName, optName, /* isSecret */ false , /* isDynamic */ false , defaultValue, defaultUnits, isNegativeValid )
884894
895+ #define ELASTIC_APM_INIT_SIZE_METADATA ( fieldName, optName, defaultValue, defaultUnits, minValidValueInBytes ) \
896+ ELASTIC_APM_INIT_METADATA_EX ( buildSizeOptionMetadata, fieldName, optName, /* isSecret */ false , /* isDynamic */ false , defaultValue, defaultUnits, minValidValueInBytes )
897+
885898#define ELASTIC_APM_INIT_SECRET_METADATA ( buildFunc, fieldName, optName, defaultValue ) \
886899 ELASTIC_APM_INIT_METADATA_EX ( buildFunc, fieldName, optName, /* isSecret */ true , /* isDynamic */ false , defaultValue )
887900
@@ -1115,6 +1128,13 @@ static void initOptionsMetadata( OptionMetadata* optsMeta )
11151128 ELASTIC_APM_CFG_OPT_NAME_LOG_LEVEL_WIN_SYS_DEBUG );
11161129 #endif
11171130
1131+ ELASTIC_APM_INIT_SIZE_METADATA (
1132+ maxSendQueueSize,
1133+ ELASTIC_APM_CFG_OPT_NAME_MAX_SEND_QUEUE_SIZE,
1134+ /* defaultValue: */ makeSize ( 10 , sizeUnits_mebibyte ),
1135+ /* defaultUnits: */ sizeUnits_mebibyte,
1136+ /* minValidValueInBytes: */ 1 );
1137+
11181138 #if ( ELASTIC_APM_MEMORY_TRACKING_ENABLED_01 != 0 )
11191139 ELASTIC_APM_ENUM_INIT_METADATA (
11201140 /* fieldName: */ memoryTrackingLevel,
0 commit comments