Skip to content

feat(net): workers dial the buyer back to deliver results (C0MPUTE_P2P_LISTEN/EXTERNAL); v0.2.66 - #140

Merged
ralyodio merged 2 commits into
masterfrom
feat/worker-dials-buyer
Nov 8, 2026
Merged

ralyodio merged 2 commits into
masterfrom
feat/worker-dials-buyer

Conversation

@ralyodio

@ralyodio ralyodio commented Nov 8, 2026

Copy link
Copy Markdown
Collaborator

Live on dev2 every remote diffusion worker finished its image but the gateway logged timed out fetching the c0mpute result: workers listen on random firewalled ports and there is no relay, so only same-host workers could deliver.

  • JobAccept.buyer_addrs (optional): the buyer's public addrs from C0MPUTE_P2P_EXTERNAL.
  • C0MPUTE_P2P_LISTEN: fixed listen addrs for a gateway with one open port.
  • The worker dials the buyer (public TCP only, must be the accept's buyer peer id, max 4) just before its receipt; the buyer's fetch reuses that connection.
  • Tests: reachability unit tests.

🤖 Generated with Claude Code

ralyodio and others added 2 commits November 8, 2026 16:59
…s; bump v0.2.66

Live: dev2's gateway got 'timed out fetching the c0mpute result' from every
remote image worker. Workers listen on random, firewalled ports and c0mpute
has no relay, so a buyer could only fetch from workers on its own host.

- JobAccept.buyer_addrs (optional, old nodes ignore it): the buyer's public
  multiaddrs from C0MPUTE_P2P_EXTERNAL.
- C0MPUTE_P2P_LISTEN: fixed listen addresses (a buyer gateway opens one port).
- Before publishing a receipt the worker dials those addresses (public TCP
  only, must end in the accept's own buyer peer id, max 4), so the buyer's
  fetch reuses that connection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

ThreatCrush Security Scan

12 finding(s)

HIGH/CRITICAL: 1 | MEDIUM: 8 | LOW: 3

Severity Rule Location
HIGH js-ssrf-outbound-request apps/web/public/sw.js:24
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:53
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:80
MEDIUM sh-remote-script-execution scripts/dev-setup.sh:25
MEDIUM sh-eval-expansion scripts/dev-setup.sh:35
MEDIUM sh-remote-script-execution scripts/install.sh:173
MEDIUM sh-remote-script-execution scripts/install.sh:198
MEDIUM sh-remote-script-execution scripts/install.sh:316
MEDIUM sh-remote-script-execution scripts/install.sh:354
LOW py-ssrf-outbound-request examples/business-strategist-agent/chat.py:37
LOW py-ssrf-outbound-request examples/business-strategist-agent/train.py:54
LOW secret-generic-credential node/crates/c0mpute-core/src/webhook.rs:1165

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 00751a9 into master Nov 8, 2026
14 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