Skip to content

Correctly serialize non ASCII metadata#6664

Open
lukaszsamson wants to merge 1 commit intophoenixframework:mainfrom
lukaszsamson:fix/c26-binary-serializer-utf8
Open

Correctly serialize non ASCII metadata#6664
lukaszsamson wants to merge 1 commit intophoenixframework:mainfrom
lukaszsamson:fix/c26-binary-serializer-utf8

Conversation

@lukaszsamson
Copy link
Copy Markdown
Contributor

This PR fixes serialization of non ASCII topic metadata. It also adds assert on byte size matchin asserts on server side in lib/phoenix/socket/serializers/v2_json_serializer.ex which limit fields to 255 bytes

Fixes #6663

With this patch Repro https://github.com/lukaszsamson/phoenix-serializer-bug-repro works correctly:

Server:

[info] CONNECTED TO CtfWeb.UserSocket in 27µs
  Transport: :websocket
  Serializer: Phoenix.Socket.V2.JSONSerializer
  Parameters: %{"vsn" => "2.0.0"}
[info] JOINED echo:room:café in 26µs
  Parameters: %{}
[debug] HANDLED echo_bin INCOMING ON echo:room:café (CtfWeb.EchoChannel) in 4µs
  Parameters: {:binary, "π-data-🚀"}

Client:

window.runRoundtrip()
Promise {<pending>}
frame:1829 📡 [info] CONNECTED TO CtfWeb.UserSocket in 14µs  Transport: :websocket  Serializer: Phoenix.Socket.V2.JSONSerializer  Parameters: %{"vsn" => "2.0.0"}
frame:1829 📡 [info] JOINED echo:room:café in 12µs  Parameters: %{}

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.

JS binary serializer mishandles non-ASCII metadata fields

2 participants