Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Trac Trac
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 246
    • Issues 246
    • List
    • Boards
    • Service Desk
    • Milestones
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar
  • Legacy
  • TracTrac
  • Issues
  • #28732
Closed (moved) (moved)
Open
Created Dec 05, 2018 by David Fifield@dcf

Standardize on ArrayBuffer as the type of WebRTC messages

Two problems:

  1. The proxy receives binary messages over an RTCDataChannel without specifying what the type of those messages should be. Some debugging code is written to handle the type ArrayBuffer, but when I tried it the type was actually Blob, which crashed the debug code.
  2. Snowflake uses exclusively binary WebRTC data, but the test code uses strings as message contents rather than one of the binary data types.

This wasn't a huge problem, because strings ArrayBuffers and Blobs are all valid to pass to WebSocket.send. The only other thing we do other than send them is take their length for the purpose of rate limiting, and that is broken.

https://gitweb.torproject.org/user/dcf/snowflake.git/log/?h=arraybuffer&id=73f328fef8a9351afc47bb65a68b549fbab90cad https://gitweb.torproject.org/user/dcf/snowflake.git/diff/?h=arraybuffer&id=73f328fef8a9351afc47bb65a68b549fbab90cad&id2=5817c257c1568c403a41e108d195b209e4e5f589

This branch sets binaryType = "arraybuffer" so that we don't get unexpected Blob objects. It then makes changes to the test and rate-limiting code to standardize on the ArrayBuffer interface everywhere.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking