Skip to content

The viewer adds an unnecessary moderator_id key to SpatialVoiceModerationRequest capability requests #4994

@maestrolinden

Description

@maestrolinden

Environment

Second Life Test 7.2.3.19307764689 (64bit)
Release Notes

You are at 128.8, 123.6, 23.0 in webRTC1 located at simhost-07fe521507cacae37.aditi
SLURL: secondlife://Aditi/secondlife/webRTC1/129/124/23
(global coordinates 259969.0, 245372.0, 23.0)
WebRTC-Voice 2025-11-10.19248958927
Release Notes

CPU: Apple M1 Pro (2400 MHz)
Memory: 16384 MB
OS Version: macOS 26.0.1 Darwin 25.0.0 Darwin Kernel Version 25.0.0: Wed Sep 17 21:41:45 PDT 2025; root:xnu-12377.1.9~141/RELEASE_ARM64_T6000 arm64
Graphics Card Vendor: Apple
Graphics Card: Apple M1 Pro

OpenGL Version: 4.1 Metal - 90.5

Window size: 964x687
Font Size Adjustment: 96pt
UI Scaling: 0.75
Draw distance: 88m
Bandwidth: 10000kbit/s
LOD factor: 1.125
Render quality: 1
Texture memory: 12124MB
Disk cache: Max size 2150.4 MB (87.5% used)
HiDPI display mode:

J2C Decoder Version: KDU v8.4.1
Audio Driver Version: OpenAL, version 1.1 ALSOFT 1.24.2 / OpenAL Community / OpenAL Soft: OpenAL Soft
Dullahan: 1.24.0.202510081737
CEF: 139.0.40+g465474a+chromium-139.0.7258.139
Chromium: 139.0.7258.139
LibVLC Version: 3.0.21
Voice Server Version: Secondlife WebRTC Gateway

Packets Lost: 1/8966 (0.0%)
November 12 2025 14:32:40

Description

When a user performs a nearby voice moderation action on a webRTC region, the viewer includes an extra moderator_id field in its SpatialVoiceModerationRequest POST request, with a value that matches the agent_id of the agent the user is logged in as. The moderator_id field is ignored by the simulator and should not be included, because the simulator can already infer which agent_id is performing the action via the capability mapping.

In practice, the simulator ignores the tag, so this is a relatively minor issue.

Reproduction steps

  1. Configure the viewer to use Hippolyzer, so that you can view the conversation with the simulator (or find some appropriate debug logging tags to set - though I don't know what those would be).
  2. Login to a region with SpatialVoiceModerationRequest (such as WebRTC-Voice 2025-11-10.19248958927), at a location that allows your agent to moderate.
    • In general, moderation permission is granted if the agent is an estate manager or parcel owner
  3. Open the Conversations floater, and right click on any user's name (including your own), and select 'Moderator Options' -> 'Mute everyone'

Actual results:
The viewer makes a well-formed SpatialVoiceModerationRequest request, except that it includes an extra/unnecessary moderator_id key. The simulator ignores the extra key and accepts the operation anyway:

POST [[SpatialVoiceModerationRequest]] HTTP/1.1
# https://simhost-07fe521507cacae37.aditi.secondlife.io:12043/cap/ebea8c68-0ddb-92de-e9fd-75e0b98edbed
Host: simhost-07fe521507cacae37.aditi.secondlife.io:12043
Accept-Encoding: deflate, gzip
Connection: keep-alive
Keep-alive: 300
Accept: application/llsd+xml
Content-Type: application/llsd+xml
X-SecondLife-UDP-Listen-Port: 54347
Content-Length: 140

<?xml version="1.0" ?>
<llsd>
<map>
   <key>moderator_id</key>
    <uuid>e1a51880-d7b5-4c00-800d-91664f5b84c0</uuid>
   <key>operand</key>
    <string>mute_all</string>
  </map>
</llsd>

Response:

HTTP/1.1 200 OK
Date: Wed, 12 Nov 2025 22:40:41 GMT
Server: Apache
X-LL-Request-Id: aRUM6VNARr55C9rlhxSegAAAAAA
Content-Length: 107
Content-Type: application/llsd+xml
Access-Control-Allow-Origin: *
Keep-Alive: timeout=10, max=99
Connection: Keep-Alive

<?xml version="1.0" ?>
<llsd>
<map>
   <key>operand</key>
    <string>mute_all</string>
   <key>status</key>
    <integer>200</integer>
  </map>
</llsd>

Expected results:
The same as 'actual results', except that the moderator_id key should be omitted.


This repo is using Opire - what does it mean? 👇
💵 Everyone can add rewards for this issue commenting /reward 100 (replace 100 with the amount).
🕵️‍♂️ If someone starts working on this issue to earn the rewards, they can comment /try to let everyone know!
🙌 And when they open the PR, they can comment /claim #4994 either in the PR description or in a PR's comment.

🪙 Also, everyone can tip any user commenting /tip 20 @maestrolinden (replace 20 with the amount, and @maestrolinden with the user to tip).

📖 If you want to learn more, check out our documentation.

Metadata

Metadata

Labels

bugSomething isn't workingtriageFlags issues that need to be triagedwebrtc

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions