Skip to content

Release 1.8.0: fill the gaps found in the Esselink-nu and NoorDigitalAgency forks - #63

Merged
ademar merged 1 commit into
masterfrom
feature/fork-gaps-1.8
Sep 25, 2026
Merged

ademar merged 1 commit into
masterfrom
feature/fork-gaps-1.8

Conversation

@ademar

@ademar ademar commented Sep 25, 2026

Copy link
Copy Markdown
Member

Summary

I went through all 33 forks for work that never came back upstream. Two had changes still missing from master. This PR reimplements them so existing code keeps compiling, and credits both forks.

  • Host info can be read (from @NoorDigitalAgency, eb86c49). HostInfoResponse.Host was protected, so callers couldn't reach the parsed host; the library's own test was disabled for that reason. It now has a public getter.
  • Transfer responses are complete (from @Esselink-nu, f033d0d). DomainTransferResponse looked for domain:expDate, but RFC 5731 names it domain:exDate, so ExpirationDate was always null. It now reads exDate, keeping expDate as a fallback. It also reads the elements RFC 5731 requires in every transfer response, into TransferStatus, RequestClientId, RequestDate, ActionClientId and ActionDate.
  • Name servers as host attributes (from @Esselink-nu, ecba914). This is the hostAttr form, with glue addresses:
    • New DomainHostAttribute class.
    • New DomainCreate.NameServerAttributes and EppDomainUpdateAddRemove.NameServerAttributes, alongside the existing string lists. The fork changed NameServers' type and forced hostAttr for everyone, which would break existing callers, so this adds them side by side instead.
    • Mixing host objects and host attributes in one domain:ns throws, as RFC 5731 allows only one form.
    • Info responses keep the addresses in Domain.NameServerAttributes, also filled for the Nominet and IIS info responses.
  • PollResponse.DomainName for notifications (from @NoorDigitalAgency, 7663881). It now falls back to the domain-1.0 name element in the message. That covers standard panData/trnData notifications as well as IIS updateNotify, deleteNotify and transferNotify, which the fork handled one by one. None of the Nominet notification fixtures use that namespace, so their behavior is unchanged.

Both forks are added to CONTRIBUTORS. The other fork changes (DNSSEC info, TLS 1.2, netstandard2.0, a test fixture) are already in master through 1.4.0–1.7.0.

Version bumped to 1.8.0. The changes add API and change no existing signatures.

Testing

  • Three Inconclusive placeholders are now real tests: TestHostInfoResponse1, TestDomainTransferQueryResponse1 and TestDomainTransferRequestResponse1.
  • New tests cover hostAttr in create and update, rejecting mixed forms, parsing hostAttr from info responses, and DomainName from the RFC panData fixture and from an IIS updateNotify.
  • 77 passed, 19 skipped (previously 22 skipped), in UTC and Asia/Tokyo.

🤖 Generated with Claude Code

- HostInfoResponse.Host was protected, so host info could not be read.
  It is now public (NoorDigitalAgency).
- DomainTransferResponse looked for domain:expDate instead of RFC 5731's
  domain:exDate, so ExpirationDate was always null. It now reads exDate
  (falling back to expDate) and the trStatus, reID, reDate, acID and
  acDate elements RFC 5731 requires (Esselink-nu).
- Name servers can be sent as host attributes with glue addresses:
  DomainCreate.NameServerAttributes and
  EppDomainUpdateAddRemove.NameServerAttributes, alongside the existing
  host object lists; mixing both in one domain:ns throws. Info responses
  keep the addresses in Domain.NameServerAttributes (Esselink-nu's
  approach, reworked to stay source compatible).
- PollResponse.DomainName falls back to the domain-1.0 name in the
  message, covering standard panData/trnData notifications and IIS
  updateNotify/deleteNotify/transferNotify (NoorDigitalAgency).

Implements the host info and both domain transfer response tests that
were Inconclusive placeholders. Credits both forks in CONTRIBUTORS.
Bump to 1.8.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ademar
ademar merged commit 3c9e1ea into master Sep 25, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant