secondlife / secondlife/viewer

Async methods received without an `id` are silently discarded

Open
#6,181 1 comment 0 reactions 1 assignee View on GitHub

@Rider-Linden is already working on this.

Since Aug 25, 2026.

bug SLua
Dominant language
C++
Stars
299
Forks
146
Avg merge
1d 9h
Merged PRs (30d)
88

Description

Repo: viewer
Labels: bug, protocol

Summary

A method dispatched asynchronously that arrives without an id (i.e. in JSON-RPC notification
form) is logged and dropped. No response, no error object, no side effect.

Evidence

indra/llcorehttp/lljsonrpcws.cpp, processRequest, in the if (is_async) branch:

if (is_notification)
{
    LL_WARNS("JSONRPC") << "Async method " << method
                        << " called as notification; ignoring" << LL_ENDL;
    return;
}
Impact

Affects all 14 methods registered via registerAsyncMethod. The caller receives complete
silence and cannot distinguish this from a hung request. Diagnosing it requires reading viewer
logs.

Proposed fix

Return a JSON-RPC InvalidRequest error (-32600) instead of dropping the message, so the
caller learns the request was rejected.

Notes

Async vs. sync dispatch is an internal implementation detail and is deliberately not
documented in the protocol specification — id is assigned by the JSON-RPC layer rather than by
the caller, so this failure mode should not be reachable by a well-behaved client.

Test plan
  • Test steps:

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.