Repository navigation
Sync upstream v0.9.12 and harden parser boundaries - #3
Merged
Merged
Conversation
Implement RepeatingGroup.Reset() to clear all groups without reallocating the template or struct. This addresses issue quickfixgo#758, where repeated message parsing required new RepeatingGroup instances for each parse, causing unnecessary allocations in high-throughput FIX message processing scenarios. Changes: - Add RepeatingGroup.Reset() that clears groups slice (keeps capacity) - Add test_repeating_group_reset.go covering Reset() behavior and multi-cycle reuse without reallocation
In FieldMap.GetTime the code took an RLock(), then called GetBytes() which attempted to RLock the mutex again. This could lead to potential deadlock so here we swap out that call for the existing getBytesNoLock method which appears to be exactly for this purpose.
Remove a call to Reset a bytes.Buffer immediately after it is initialised.
…lock Fix potential deadlock in FieldMap.GetTime
Remove redundant buffer Reset
…reset fix(repeating_group): add Reset() method (closes quickfixgo#758)
…itionally-required-field-missing-reject-reason Revert "Fix duplicate reject reason value for ConditionallyRequiredFieldMissing"
compositeLog.OnEventf passed the variadic arguments as a single
[]interface{} argument, so every wrapped log rendered the format verbs
against one slice value, producing output such as
"session [FIX.4.4 %!s(int=7)] seq %!d(MISSING)" instead of
"session FIX.4.4 seq 7".
…epeating-group ParseGroup: Body field after nested repeating group
…ror-message correction to error message in SessionFactory
…neventf-variadic-forward Fix OnEventf argument forwarding in the composite log
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Synchronize the fork with upstream v0.9.12 (eff945d). This brings in the GetTime recursive-read-lock fix, RepeatingGroup.Reset, composite log argument forwarding, the business-reject reason correction, and dictionary diagnostics.
The nested-group defect originated upstream in 6889cf1; upstream PR quickfixgo#756 addresses the same body-field bug. Retain the fork's ancestor-before-classification and root-path reset because v0.9.12 still misclassifies nested sibling-group members. Add direct comparative regressions. Fuzzing also exposed inherited panics for short messages and empty integer fields; reject these and out-of-bounds XML payloads explicitly. Normal session sequencing, transport writes, FileStore persistence and resend scheduling are unchanged.
Validation: full Go tests and vet; Race on engine, FileStore, settings and composite log; 59/59 local FIX44 TCP/FileStore acceptance cases; 30-second dictionary-parser fuzz run with 2,036,420 executions. Existing upstream parser fails the sibling and truncated-input regressions; the merged fork passes. MongoDB integration requires an external instance and remains skipped in the local full suite.