1 /* 2 * Copyright 2019 The Netty Project 3 * 4 * The Netty Project licenses this file to you under the Apache License, 5 * version 2.0 (the "License"); you may not use this file except in compliance 6 * with the License. You may obtain a copy of the License at: 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 // (BSD License: https://www.opensource.org/licenses/bsd-license) 17 // 18 // Copyright (c) 2011, Joe Walnes and contributors 19 // All rights reserved. 20 // 21 // Redistribution and use in source and binary forms, with or 22 // without modification, are permitted provided that the 23 // following conditions are met: 24 // 25 // * Redistributions of source code must retain the above 26 // copyright notice, this list of conditions and the 27 // following disclaimer. 28 // 29 // * Redistributions in binary form must reproduce the above 30 // copyright notice, this list of conditions and the 31 // following disclaimer in the documentation and/or other 32 // materials provided with the distribution. 33 // 34 // * Neither the name of the Webbit nor the names of 35 // its contributors may be used to endorse or promote products 36 // derived from this software without specific prior written 37 // permission. 38 // 39 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 40 // CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 41 // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 42 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 43 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 44 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 45 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 46 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 47 // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 48 // BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 49 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 50 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 51 // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 52 // POSSIBILITY OF SUCH DAMAGE. 53 54 package io.netty.handler.codec.http.websocketx; 55 56 /** 57 * Decodes a web socket frame from wire protocol version 13 format. V13 is essentially the same as V8. 58 */ 59 public class WebSocket13FrameDecoder extends WebSocket08FrameDecoder { 60 61 /** 62 * Constructor 63 * 64 * @param expectMaskedFrames 65 * Web socket servers must set this to true processed incoming masked payload. Client implementations 66 * must set this to false. 67 * @param allowExtensions 68 * Flag to allow reserved extension bits to be used or not 69 * @param maxFramePayloadLength 70 * Maximum length of a frame's payload. Setting this to an appropriate value for you application 71 * helps check for denial of services attacks. 72 */ 73 public WebSocket13FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength) { 74 this(expectMaskedFrames, allowExtensions, maxFramePayloadLength, false); 75 } 76 77 /** 78 * Constructor 79 * 80 * @param expectMaskedFrames 81 * Web socket servers must set this to true processed incoming masked payload. Client implementations 82 * must set this to false. 83 * @param allowExtensions 84 * Flag to allow reserved extension bits to be used or not 85 * @param maxFramePayloadLength 86 * Maximum length of a frame's payload. Setting this to an appropriate value for you application 87 * helps check for denial of services attacks. 88 * @param allowMaskMismatch 89 * When set to true, frames which are not masked properly according to the standard will still be 90 * accepted. 91 */ 92 public WebSocket13FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength, 93 boolean allowMaskMismatch) { 94 this(WebSocketDecoderConfig.newBuilder() 95 .expectMaskedFrames(expectMaskedFrames) 96 .allowExtensions(allowExtensions) 97 .maxFramePayloadLength(maxFramePayloadLength) 98 .allowMaskMismatch(allowMaskMismatch) 99 .build()); 100 } 101 102 /** 103 * Constructor 104 * 105 * @param decoderConfig 106 * Frames decoder configuration. 107 */ 108 public WebSocket13FrameDecoder(WebSocketDecoderConfig decoderConfig) { 109 super(decoderConfig); 110 } 111 }