cover PCRF Result-Code reject on the UE bearer resource path - #58
Merged
Conversation
This was referenced Jul 26, 2026
next-nf
force-pushed
the
async-ue-bearer-22-inc6
branch
from
July 27, 2026 11:44
265c514 to
0376a35
Compare
next-nf
force-pushed
the
async-ue-bearer-22-reject
branch
from
July 27, 2026 11:44
53e3c87 to
59fecdd
Compare
next-nf
force-pushed
the
async-ue-bearer-22-inc6
branch
from
July 27, 2026 12:16
0376a35 to
3a3048c
Compare
next-nf
force-pushed
the
async-ue-bearer-22-reject
branch
from
July 27, 2026 12:16
59fecdd to
0dac27c
Compare
next-nf
force-pushed
the
async-ue-bearer-22-inc6
branch
from
July 27, 2026 12:23
3a3048c to
b1a6edd
Compare
next-nf
force-pushed
the
async-ue-bearer-22-reject
branch
from
July 27, 2026 12:23
0dac27c to
54053d9
Compare
This was referenced Jul 27, 2026
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.
Covers the PCRF-rejection path of the UE-requested bearer resource modification
procedure end-to-end. Until now it was verified only by code-reading: #22
Increments 2/3 had to substitute an unknown-filter trigger, which fails
synchronously in the procedure's first
liftand never issues a CCR-Update, soccr_result({fail, RC})and the post-awaitbr_errroute had never run in a test.Test-only — no production change. The path already works.
GH #50 is obsolete. It reported the reject e2e as blocked by
smf_aaa_gx:fold_cca/5crashing on the static mock'sundefinedState_at_send.The async-invoke restack deleted that whole first-step diameter bridge —
fold_cca,ccr_update_issue,ccr_initial_issueandState_at_sendare absentfrom the tree. Under
pipeline_asyncthe entire real pipeline runs in the worker,so the answer is handled by
smf_aaa_static's ordinary synchronoushandle_response/5, whoseResult-Code >= 3000clause returns{fail, Code};run_pipeline/6short-circuits on it and returns it verbatim toccr_result/1.What's here
'Update-Gx-Reject'mock answer carryingDIAMETER_UNABLE_TO_COMPLY (5012).A real PCRF refusing a UE resource modification's traffic mapping would answer
Experimental-Result-Code
DIAMETER_ERROR_TRAFFIC_MAPPING_INFO_REJECTED (5144)(TS 29.212 §5.5.3), but
smf_aaa_staticdiscriminates on the base Result-CodeAVP only — putting 5144 there would bake a wire-incorrect answer into the fixture.
ue_delete_packet_filters_pcrf_reject: valid filter ids (so the CCR-Update isactually issued and the procedure parks), asserting the Bearer Resource Failure
Indication (Cause/LBI/PTI), that no Delete or Update Bearer Request follows, and
that the dedicated bearer is untouched — the short-circuit happens before
async_m:modify_data, so nothing is committed.ue_delete_packet_filters_reject's doc string, which described thenow-deleted foundation defect. Both cases stay: one covers the pre-async guard,
the other the post-await route.
Verification
pgw_SUITE134/134, 0 failures. The new case was also mutation-checked: pointingit at the benign
'Update-Gx'answer makes it fail on the failure-indication?match, so it is not vacuously passing.Side note on #51: this is the first test in which an error callback runs after
the procedure went async, so
delete_sessionsucceeding at the end is liveevidence that
br_err's{next_state, ...}drainsasync_pendingand leaves thecoarse gate open — the property #51 warns is missing on the shared
handle_ctx_error/4route. It does not fix #51.Stacked on #57. Merge bottom-up: #45 → #46 → #48 → #56 → #57 → this.