Files
MetaCrate/docs/vivox.md
Chili Palmer da4afec708
Some checks failed
Native code generation / deterministic (push) Failing after 2m19s
Imaging and meshing gate / native (push) Failing after 4m24s
JPEG 2000 feature / linux (push) Successful in 2m50s
Native Rust workspace compile / compile (push) Failing after 15m31s
Skia feature / linux (push) Successful in 31m51s
Implement native VivoxTest validation (#95)
2026-08-11 14:09:51 +00:00

1.8 KiB

Native Vivox validation

MetaCrate's Vivox support is a cross-platform Rust implementation of the SDK control protocol. VivoxControlClient connects to a caller-supplied TCP socket, writes bounded XML requests terminated by the Vivox three-newline delimiter, correlates responses by request ID and action, and queues asynchronous login, session, and participant events. It does not start or ship proprietary code.

The client owns connector, account, and session state. Invalid ordering is rejected locally. shutdown() is idempotent and reverses active state in this order: sessions, account, connector, TCP writer. Response failures preserve the action and numeric return/status codes while passwords, handles, and URIs remain opaque. XML is escaped on output; input is capped at 1 MiB and rejects DTD or entity declarations.

vivox-test --fake-script FILE launches a deterministic fake control service on IPv4 loopback. It validates the same wire requests used with a real daemon, scripts device responses and participant events, and waits for both client and server teardown. Live mode additionally logs into a grid, waits for the event queue, requests ProvisionVoiceAccountRequest and ParcelVoiceInfoRequest, and then exercises the control service. Live login requires both --allow-live-login and --confirm-live-login LOGIN; joining audio also requires --allow-session-audio.

Use environment variables for live credentials so they are not copied into a shell history or process argument list:

GRID_FIRST_NAME=... GRID_LAST_NAME=... GRID_PASSWORD=... \
  cargo run -p libremetaverse-programs --bin vivox-test -- \
  --allow-live-login --confirm-live-login LOGIN

The Vivox daemon/SDK is proprietary and must be installed, configured, and started independently. MetaCrate never discovers or invokes it.