Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
S
Snowflake
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 42
    • Issues 42
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 4
    • Merge Requests 4
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

GitLab is used only for code review, issue tracking and project management. Canonical locations for source code are still https://gitweb.torproject.org/ https://git.torproject.org/ and git-rw.torproject.org.

  • The Tor Project
    • A
      Anti-censorship
  • Pluggable Transports
  • Snowflake
  • Issues
  • #28732

Closed
Open
Opened Dec 05, 2018 by David Fifield@dcfOwner

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.

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: tpo/anti-censorship/pluggable-transports/snowflake#28732