Skip to content

fix(aiosendspin adapters): update for encryption-era SendspinServer/SendspinClient constructors#94

Merged
OnFreund merged 1 commit into
mainfrom
claude/issue-93-fffea9
Jul 17, 2026
Merged

fix(aiosendspin adapters): update for encryption-era SendspinServer/SendspinClient constructors#94
OnFreund merged 1 commit into
mainfrom
claude/issue-93-fffea9

Conversation

@OnFreund

Copy link
Copy Markdown
Contributor

Summary

  • aiosendspin's encryption support (Sendspin-Protocol/aiosendspin#292 through #298) changed SendspinServer()/SendspinClient() to require an Identity keypair and a pairing store instead of a plain server_id/client_id string, and defaulted allow_unencrypted to False. The old constructor calls in both adapters raised a TypeError before server-ready.json/client-ready.json could be written, timing out every conformance scenario run with --from aiosendspin (or --to aiosendspin).
  • Construct an Identity.generate() + in-memory pairing store on both aiosendspin_server.py and aiosendspin_client.py, and pass allow_unencrypted=True on the server so today's still-unencrypted client adapters continue to be admitted.
  • Also fixed two smaller renames from the same aiosendspin release: client.negotiated_rolesclient.active_role_ids, and the removed add_server_hello_listener callback → the existing client.server_info property.

Test plan

  • Cloned current aiosendspin + sendspin-cli at HEAD into a scratch venv and ran the harness directly against this fix.
  • Confirmed the server now logs Sendspin server started successfully and writes server-ready.json (previously: immediate TypeError crash).
  • Hand-crafted an unencrypted legacy client/hello (mimicking untouched client SDKs like sendspin-jvm) and confirmed the server logs Accepting unencrypted legacy connection (transition mode) and returns a valid server/hello, validating the allow_unencrypted=True admission path called out in the issue.
  • Ran a full aiosendspinaiosendspin conformance self-test: connection, Noise/legacy handshake, and role negotiation now succeed (previously impossible). Remaining media-transfer-level scenario failures (audio/metadata/artwork/FLAC negotiation) are further, separate protocol drift unrelated to this constructor crash — filed as a follow-up rather than folded into this fix.

Fixes #93

🤖 Generated with Claude Code

…endspinClient constructors

aiosendspin's encryption support (Sendspin/aiosendspin#292-298) changed
SendspinServer() and SendspinClient() to require an Identity keypair and a
pairing_store instead of a plain server_id/client_id string, and dropped
allow_unencrypted's default to False. The adapters' old constructor calls raised
a TypeError immediately, before server-ready.json/client-ready.json could be
written, timing out every conformance scenario using --from aiosendspin.

Construct an Identity + in-memory pairing store on both adapters, pass
allow_unencrypted=True so today's still-unencrypted client adapters keep being
admitted, and update the renamed client.negotiated_roles -> active_role_ids and
the removed add_server_hello_listener -> client.server_info.

Fixes #93

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@OnFreund
OnFreund merged commit 9861395 into main Jul 17, 2026
2 checks passed
@OnFreund
OnFreund deleted the claude/issue-93-fffea9 branch July 17, 2026 18:34
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.

aiosendspin_server adapter: SendspinServer() call is out of date with aiosendspin's new encryption constructor, breaking every conformance run

1 participant