Skip to content

Conversation

@acamq
Copy link
Contributor

@acamq acamq commented Nov 22, 2025

Using runpodctl send/recieve resulted in this error:

securing channel...runpodctl-receive: croc: receive: room (secure channel) not ready, maybe peer disconnected

But using croc directly worked fine.

The sender and receiver were using fundamentally different croc implementations:

  • Sender (send.go): Used the local forked croc implementation from cmd/croc/croc.go
  • Receiver (receive.go): Used the external library github.com/schollz/croc/v9/src/croc

The receiver now uses the local fork of the croc implementation. Additionally, missing configuration options were added to the receiver side.

How I tested it

Built on Zorin OS 18 with Linux kernel 6.14.0-33-generic, x86_64. Tested by sending and receiving files to and from a pod.

claude and others added 8 commits November 22, 2025 21:05
The receiver was missing critical configuration options that the sender
was setting, causing "room (secure channel) not ready" errors:
- Added DisableLocal: true to match sender
- Added HashAlgorithm: "xxhash" to ensure same hashing algorithm
- Added RelayPorts to connect to the same relay ports

This configuration mismatch prevented sender and receiver from
establishing a secure channel on the relay server.

Fixes channel negotiation errors when using runpodctl send/receive.
…-015V6LZiuJWBGuX8TopyGEhC

Fix croc channel error by matching sender/receiver configuration
The root cause of the "room not ready" error was that sender and
receiver were using completely different croc implementations:
- Sender: Used local forked implementation (cmd/croc/croc.go)
- Receiver: Used external library (github.com/schollz/croc/v9/src/croc)

This fundamental mismatch caused incompatible channel negotiation.

Changes:
- Changed receiver to use local Options type instead of croc.Options
- Changed receiver to call local New() instead of croc.New()
- Added ZipFolder: true to match sender configuration
- Removed import of external croc library

Now both sender and receiver use the same local implementation,
ensuring compatible configuration and channel setup.
…-015V6LZiuJWBGuX8TopyGEhC

Fix receiver to use local croc implementation matching sender
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.

2 participants