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.