HomeSource World

node: support expressive origin rules in (#21481)


node: support expressive origin rules in (#21481)

  • Only compare hostnames in

Also using a helper function for ToLower consolidates all preparation steps in one function for more maintainable consistency.

Spaces => tabs

Remove a semicolon

Add space at start of comment

Remove parens around conditional

Handle case wehre parsed hostname is empty

When passing a single word like "localhost" the parsed hostname is an empty string. Handle this and the error-parsing case together as default, and the nonempty hostname case in the conditional.

Refactor with new originIsAllowed functions

Adds originIsAllowed() & ruleAllowsOrigin(); removes prepOriginForComparison

Remove blank line

Added tests for simple allowed-orign rule

which does not specify a protocol or port, just a hostname

Fix copy-paste: := => =

Remove parens around conditional

Remove autoadded whitespace on blank lines

Compare scheme, hostname, and port with rule

if the rule specifies those portions.

Remove one autoadded trailing whitespace

Better handle case where only origin host is given

e.g. "localhost"

Remove parens around conditional

Refactor: attemptWebsocketConnectionFromOrigin DRY

Include return type on helper function

Provide srv obj in helper fn

Provide srv to helper fn

Remove stray underscore

Remove blank line

parent 93e666b4c1e7e49b8406dc83ed93f4a02ea49ac1
author wbt <> 1598559718 -0400
committer Martin Holst Swende <> 1605602257 +0100
gpgsig -----BEGIN PGP SIGNATURE-----


Refactor: drop err var for more concise test lines

Add several tests for new WebSocket origin checks

Remove autoadded whitespace on blank lines

Restore TestWebsocketOrigins originally-named test

and rename the others to be helpers rather than full tests

Remove autoadded whitespace on blank line

Temporarily comment out new test sets

Uncomment test around origin rule with scheme

Remove tests without scheme on browser origin


Uncomment tests with port; remove some blank lines

Handle when browser does not specify scheme/port

Uncomment test for including scheme & port in rule

Add IP tests

  • node: more tests + table-driven, ws origin changes

Co-authored-by: Martin Holst Swende <>


wbt <>Authored on Nov 19 2020, 1:54 PM
GitHub <>Committed on Nov 19 2020, 1:54 PM
rGETH28080463d283: Merge pull request #21861 from holiman/remove_retesteth

Event Timeline

GitHub <> committed rGETHf1e1d9f874ec: node: support expressive origin rules in (#21481) (authored by wbt <>).Nov 19 2020, 1:54 PM