)]}'
{
  "commit": "bf8554ff80089bf88de262503f85dc3610d79ecf",
  "tree": "3c283526ef321a0efd6f3698a4920f20a3f511cb",
  "parents": [
    "fe1ce13114bb7318e140587f21ebec4cbb127ef3"
  ],
  "author": {
    "name": "Nate Bosch",
    "email": "nbosch@google.com",
    "time": "Wed Jan 27 08:38:42 2021 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jan 27 08:38:42 2021 -0800"
  },
  "message": "Ignore protocol header if handler did not specify allowed protocols (#28)\n\nCloses #27\r\n\r\nThe spec says \"if the server does not agree to any of the client\u0027s\r\nrequested subprotocols, the only acceptable value is null\". The mozilla\r\ndocs for implementing a web socket server say \"The client may close the\r\nconnection if it doesn\u0027t get the subprotocol it wants.\"\r\n\r\nFrom this I take it that the safest thing to do is to ignore the\r\nprotocols. A server which wants to be more careful can handle the `null`\r\nprotocol in whatever way makes sense.\r\n\r\n- Add a null check before searching for overlap in protocol.\r\n- Remove the explicit check for `protocols` with 2 argument callback.\r\n- Rename `protocols` to `requestProtocols`.\r\n- Add tests demonstrating new behavior, remove test for ArgumentError.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "66609de9ea78f43666f2f4785fd914a8b12913e7",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "4a33e02722186ddbb96c96500deaf7787b64eee3",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "c3bedace91b07458c346385f8c227305485d29cc",
      "old_mode": 33188,
      "old_path": "lib/shelf_web_socket.dart",
      "new_id": "c9cbc19dbe4865788e4c4add31e7394de4a74b0b",
      "new_mode": 33188,
      "new_path": "lib/shelf_web_socket.dart"
    },
    {
      "type": "modify",
      "old_id": "93d8976c9177314d1ff6ea2a17f29964ed99827c",
      "old_mode": 33188,
      "old_path": "lib/src/web_socket_handler.dart",
      "new_id": "6f3620b2641786d22bc36d6672483794560cf593",
      "new_mode": 33188,
      "new_path": "lib/src/web_socket_handler.dart"
    },
    {
      "type": "modify",
      "old_id": "9a56f531bee4e4396d03a7c787fb5f4229f7d38e",
      "old_mode": 33188,
      "old_path": "test/web_socket_test.dart",
      "new_id": "e77cad9dfe8d40960d66c453afc33c9728217543",
      "new_mode": 33188,
      "new_path": "test/web_socket_test.dart"
    }
  ]
}
