mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 05:11:19 -04:00
The client opts into turbotunnel mode by sending a magic token at the beginning of each WebSocket connection (before sending even the ClientID). The token is just a random byte string I generated. The server peeks at the token and, if it matches, uses turbotunnel mode. Otherwise, it unreads the token and continues in the old one-session-per-WebSocket mode.
17 lines
571 B
Go
17 lines
571 B
Go
// Package turbotunnel provides support for overlaying a virtual net.PacketConn
|
|
// on some other network carrier.
|
|
//
|
|
// https://github.com/net4people/bbs/issues/9
|
|
package turbotunnel
|
|
|
|
import "errors"
|
|
|
|
// This magic prefix is how a client opts into turbo tunnel mode. It is just a
|
|
// randomly generated byte string.
|
|
var Token = [8]byte{0x12, 0x93, 0x60, 0x5d, 0x27, 0x81, 0x75, 0xf5}
|
|
|
|
// The size of receive and send queues.
|
|
const queueSize = 32
|
|
|
|
var errClosedPacketConn = errors.New("operation on closed connection")
|
|
var errNotImplemented = errors.New("not implemented")
|