Skip to content

Add rpc_params_dup_stubs compat flag.#5733

Merged
kentonv merged 1 commit intomainfrom
kenton/rpc_params_dup_stubs
Dec 21, 2025
Merged

Add rpc_params_dup_stubs compat flag.#5733
kentonv merged 1 commit intomainfrom
kenton/rpc_params_dup_stubs

Conversation

@kentonv
Copy link
Member

@kentonv kentonv commented Dec 20, 2025

This flag changes the Worker RPC behavior to match Cap'n Web: When a stub is passed in the params of an RPC method, we should NOT transfer ownership of the stub. Instead, the stub is dup()ed.

The comments explain in more detail why these semantics are superior (and thus why Cap'n Web took them).

Additionally, in the case that the params contain an RpcTarget, if that target has a dup() method, we call it. This specifically fixes an interoperability bug with Cap'n Web: cloudflare/capnweb#110

This flag changes the Worker RPC behavior to match Cap'n Web: When a stub is passed in the params of an RPC method, we should NOT transfer ownership of the stub. Instead, the stub is dup()ed.

The comments explain in more detail why these semantics are superior (and thus why Cap'n Web took them).

Additionally, in the case that the params contain an `RpcTarget`, if that target has a `dup()` method, we call it. This specifically fixes an interoperability bug with Cap'n Web: cloudflare/capnweb#110
@kentonv kentonv force-pushed the kenton/rpc_params_dup_stubs branch from 04d4c78 to d05081b Compare December 20, 2025 15:30
@kentonv kentonv merged commit 9aa33bf into main Dec 21, 2025
32 of 33 checks passed
@kentonv kentonv deleted the kenton/rpc_params_dup_stubs branch December 21, 2025 14:30
kentonv added a commit to cloudflare/capnweb that referenced this pull request Dec 23, 2025
This matches behavior introduced in workerd in: cloudflare/workerd#5733

This plus the workerd change together should allow full end-to-end proxying between Cap'n Web and native workerd RPC to work correctly (provided workerd has enabled the `rpc_params_dup_stubs` compat flag, at least).
kentonv added a commit to cloudflare/capnweb that referenced this pull request Dec 23, 2025
This matches behavior introduced in workerd in: cloudflare/workerd#5733

This plus the workerd change together should allow full end-to-end proxying between Cap'n Web and native workerd RPC to work correctly (provided workerd has enabled the `rpc_params_dup_stubs` compat flag, at least).
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