From b63d6abeb531ffb16d900ba19ea6da20d992dba3 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Mon, 9 Jun 2025 13:44:22 -0700 Subject: [PATCH] Handle missing SC_ADDRESS_TYPEs in XDRCereal JSONOutputArchive overrides --- src/util/XDRCereal.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/util/XDRCereal.cpp b/src/util/XDRCereal.cpp index 416068ab9a..01df8a82c3 100644 --- a/src/util/XDRCereal.cpp +++ b/src/util/XDRCereal.cpp @@ -29,6 +29,24 @@ cereal_override(cereal::JSONOutputArchive& ar, const stellar::SCAddress& addr, case stellar::SC_ADDRESS_TYPE_ACCOUNT: xdr::archive(ar, stellar::KeyUtils::toStrKey(addr.accountId()), field); return; + case stellar::SC_ADDRESS_TYPE_MUXED_ACCOUNT: + xdr::archive(ar, + std::make_tuple( + cereal::make_nvp("id", addr.muxedAccount().id), + cereal::make_nvp( + "accountID", + stellar::strKey::toStrKey( + stellar::strKey::STRKEY_MUXED_ACCOUNT_ED25519, + addr.muxedAccount().ed25519) + .value)), + field); + break; + case stellar::SC_ADDRESS_TYPE_CLAIMABLE_BALANCE: + xdr::archive(ar, addr.claimableBalanceId(), field); + return; + case stellar::SC_ADDRESS_TYPE_LIQUIDITY_POOL: + xdr::archive(ar, addr.liquidityPoolId(), field); + return; default: // this would be a bug abort();