txthinking/brook · error

It is recommended to use brook link and specify --udpoverstr

Error message

It is recommended to use brook link and specify --udpoverstream

What it means

Not a runtime failure but an intentional configuration rejection in the connect subcommand: a plain quic:// server address was supplied without --udpoverstream, and this build/policy requires QUIC servers to run UDP-over-stream, so the command aborts before dialing. It fires whenever kind == "quicserver" and the user did not set --udpoverstream (the recommended alternative is passing a full brook link that specifies it).

Source

Thrown at cli/brook/main.go:1362

					return nil
				}
				if c.String("from") == "" || c.String("to") == "" || (c.String("server") == "" && c.String("link") == "") {
					return cli.ShowSubcommandHelp(c)
				}
				var link = ""
				if c.String("server") != "" {
					kind := "server"
					if strings.HasPrefix(c.String("server"), "ws://") {
						kind = "wsserver"
					}
					if strings.HasPrefix(c.String("server"), "wss://") {
						kind = "wssserver"
					}
					if strings.HasPrefix(c.String("server"), "quic://") {
						kind = "quicserver"
					}
					if kind == "quicserver" {
						return errors.New("It is recommended to use brook link and specify --udpoverstream")
					}
					v := url.Values{}
					v.Set("password", c.String("password"))
					link = brook.Link(kind, c.String("server"), v)
				}
				if c.String("link") != "" {
					link = c.String("link")
				}
				kind, _, v, err := brook.ParseLink(link)
				if err != nil {
					return err
				}
				if s := v.Get("clientHKDFInfo"); s != "" {
					brook.ClientHKDFInfo = []byte(s)
				}
				if s := v.Get("serverHKDFInfo"); s != "" {
					brook.ServerHKDFInfo = []byte(s)
				}

View on GitHub (pinned to 5cd13ef3b1)

Solutions

  1. Re-run using a brook link that includes --udpoverstream, e.g. pass --link instead of --server
  2. Add --udpoverstream to the connect command alongside the quic:// server
  3. If UDP-over-stream is not required, use a non-QUIC server kind (ws://, wss://, or plain server)
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cli/brook/main.go:1362 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of txthinking/brook@5cd13ef3b1 (2026-09-06). Data as JSON: /api/errors/3a445f1c754a4e93. Report an issue: GitHub.