Repository navigation
v11.7.0
-
A Delegate permission name this version cannot map no longer costs the caller the object that carries it (#195).
PermissionValueConverterthrew aJsonExceptionon an unrecognizedPermissionValuename, and rippled returns that field as a name and gains new ones with every amendment, so a node ahead of the release took the whole containing object with it: throughTransactionResponseConverterthe exception was swallowed and the transaction came back empty withTransactionTypeleft at the enum defaultAccountSet, and throughLOConverterit escaped and failed the entireaccount_objectspage.- Breaking: the converter is now
JsonConverter<PermissionEntry>rather thanJsonConverter<uint>and is applied toPermissionEntryitself, not to itsPermissionValueproperty - a converter bound to the number could not reach a second property. Code that namedPermissionValueConverterin its ownJsonSerializerOptionshas to drop it;PermissionEntrycarries the attribute PermissionEntry.PermissionValueNamecarries the name: the token the node sent, or the name resolved from the number when the node sent one.PermissionValueisPermissionValueConverter.UnknownPermissionValue(0, which rippled treats as no permission at all) when the name does not mapPermissionValueConverter.TryGetPermissionValueandTryGetPermissionNameexpose both directions of the mapping- writing is unchanged for a permission that maps - the number is what
Xrpl.BinaryCodecreads - and an unmapped name is written back as the name, which rippled accepts intx_jsonand the codec refuses to sign TestUPermissionValueConvertercovers the mapping in both directions, the two paths that used to lose the object, and the signing blob
- Breaking: the converter is now
-
TransactionType.HookSetis removed (Xrpl.BinaryCodec11.7.0.0). It was written by hand in the 2022 refactor, outlived the move to generated enums as an[Obsolete]leftover, and belongs to no protocol definition: rippled defines no transaction type 22, and neither the bundleddefinitions.jsonnor the one in xrpl.js has ever carried it. Its ordinal made delegate permission value 23 reachable from the name, a value no ledger can produce.- Breaking: the field is gone from
Xrpl.BinaryCodec, soTransactionType.Valuesno longer contains it. ADelegateSetnamingHookSetnow fails closed - the name maps to nothing,PermissionValuestays 0 and the codec refuses to sign it
- Breaking: the field is gone from
-
A transaction whose deserialization fails keeps the type its discriminator named (#196).
TransactionResponseConverter.ReadcatchesJsonExceptionand returns the bare object built from the discriminator, which it then dropped: no*Responseclass assignsTransactionTypein a constructor, so the field stayed at the enum defaultAccountSet- a real and common type, not a sentinel - and aPaymentor aDelegateSetthat failed to parse presented itself as an emptyAccountSetwith no error of any kind. OnlyTransactionResponseUnknownstamped the field.- the catch branch now resolves the discriminator through
ParseTransactionType, falling back toTransactionType.Unknown. The round trip back to a name is compared, becauseEnum.TryParsealso accepts the decimal form of a member's value and would otherwise turn a discriminator like"5"into whichever member holds that number TestUTransactionResponseConvertergains the failed-parse cases: the named type, an unknown type, and the numeric discriminator- the fallback object still carries none of the data the failed pass would have assigned - the type is honest, the fields are not recovered
- the catch branch now resolves the discriminator through