(ext websocketExtension, mode CompressionMode)
| 294 | } |
| 295 | |
| 296 | func acceptDeflate(ext websocketExtension, mode CompressionMode) (*compressionOptions, bool) { |
| 297 | copts := mode.opts() |
| 298 | for _, p := range ext.params { |
| 299 | switch p { |
| 300 | case "client_no_context_takeover": |
| 301 | copts.clientNoContextTakeover = true |
| 302 | continue |
| 303 | case "server_no_context_takeover": |
| 304 | copts.serverNoContextTakeover = true |
| 305 | continue |
| 306 | case "client_max_window_bits", |
| 307 | "server_max_window_bits=15": |
| 308 | continue |
| 309 | } |
| 310 | |
| 311 | if strings.HasPrefix(p, "client_max_window_bits=") { |
| 312 | // We can't adjust the deflate window, but decoding with a larger window is acceptable. |
| 313 | continue |
| 314 | } |
| 315 | return nil, false |
| 316 | } |
| 317 | return copts, true |
| 318 | } |
| 319 | |
| 320 | func headerContainsTokenIgnoreCase(h http.Header, key, token string) bool { |
| 321 | for _, t := range headerTokens(h, key) { |
no test coverage detected
searching dependent graphs…