Skip to content

DCV-enabled builds skip synchronous pickup when DCV does no work (NotRun) #32

Open

Description

@spbsoluble

Scope

DCV-enabled builds only (SUPPORTS_DCV, the v2.x line). Not applicable to v1.x / non-DCV builds, where the code is compiled out. Found during review of #20 (v1.0.1 synchronous pickup, commit 9caf0ff).

Symptom

On a DCV-enabled build, the Sectigo-parity synchronous pickup (PickUpEnrolledCertificateAsync) is skipped for every order where DCV is engaged, even when DCV did no work. A certificate that would issue within seconds is only imported on the next synchronization.

Cause

CERTInextCAPlugin.cs:1199 sets dcvIssuanceWaitRan = true whenever _domainValidatorFactory != null && _config.DcvEnabled && orderNumber is non-empty, before PerformDcvIfNeededAsync runs. PickUpEnrolledCertificateAsync (:2340) returns the pending result immediately when that flag is set.

DcvOutcome.NotRun (:1660) covers "nothing pending, deferred, or no domain could be staged". The comment at :1191-1198 only acknowledges the HTTP/email-validated sub-case as over-deferred. It does not cover the "nothing pending" case, for example domains already validated at the account level or a pre-vetted organization order, where the order can issue in seconds and no wait of any kind is performed.

Not a regression

Behavior matches pre-pickup behavior for these orders; the gap is that the pickup feature does not apply to them on DCV builds.

Suggested fix

Skip pickup only when DCV actually owned the wait (outcome == Completed/CompletedWithSkippedDomains, or the duplicate-in-flight and terminal-order cases), and run pickup after NotRun. The comment at :1197 notes a terminal-order regression risk, so PerformDcvIfNeededAsync likely needs to distinguish "terminal" from "nothing to do" in its result. Add a test for NotRun followed by a fast-issuing order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions