[
https://issues.apache.org/jira/browse/PROTON-2967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Stitcher resolved PROTON-2967.
-------------------------------------
Resolution: Fixed
> Decode AMQP values iteratively rather than recursively
> ------------------------------------------------------
>
> Key: PROTON-2967
> URL: https://issues.apache.org/jira/browse/PROTON-2967
> Project: Qpid Proton
> Issue Type: Improvement
> Components: proton-c
> Reporter: Andrew Stitcher
> Assignee: Andrew Stitcher
> Priority: Major
> Fix For: proton-c-0.41.0
>
>
> Decode AMQP values iteratively: The state a recursive decoder keeps in its
> stack frames - how many children of the enclosing container are still to
> come, and, for an array, the constructor its elements share - can be kept in
> the container's own node, in the scratch space the encoder already uses.
> The tree being built is then also the decoder's stack, so the only bound on
> nesting is
> the node array: PNI_NID_MAX, and any limit set with
> pn_data_set_decode_limits().
> Every open node - list, map, array and described alike - carries a count of
> the children still to be decoded, which lets a single loop close each node as
> its last child arrives.
> Only accept a single directly nested described type and no more. That is all
> the standard requires (and then only in the case of transaction coordinator
> messages), and it is hard to see a valid use for more deeply nested described
> types.
> Restricted descriptors to scalar values only, which is no limitation in
> practice and keeps the descriptor path free of nesting.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]