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 7 format. V7 is essentially the same as V8.
58 */
59 public class WebSocket07FrameDecoder 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 WebSocket07FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength) {
74 this(WebSocketDecoderConfig.newBuilder()
75 .expectMaskedFrames(expectMaskedFrames)
76 .allowExtensions(allowExtensions)
77 .maxFramePayloadLength(maxFramePayloadLength)
78 .build());
79 }
80
81 /**
82 * Constructor
83 *
84 * @param expectMaskedFrames
85 * Web socket servers must set this to true processed incoming masked payload. Client implementations
86 * must set this to false.
87 * @param allowExtensions
88 * Flag to allow reserved extension bits to be used or not
89 * @param maxFramePayloadLength
90 * Maximum length of a frame's payload. Setting this to an appropriate value for you application
91 * helps check for denial of services attacks.
92 * @param allowMaskMismatch
93 * When set to true, frames which are not masked properly according to the standard will still be
94 * accepted.
95 */
96 public WebSocket07FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength,
97 boolean allowMaskMismatch) {
98 this(WebSocketDecoderConfig.newBuilder()
99 .expectMaskedFrames(expectMaskedFrames)
100 .allowExtensions(allowExtensions)
101 .maxFramePayloadLength(maxFramePayloadLength)
102 .allowMaskMismatch(allowMaskMismatch)
103 .build());
104 }
105
106 /**
107 * Constructor
108 *
109 * @param decoderConfig
110 * Frames decoder configuration.
111 */
112 public WebSocket07FrameDecoder(WebSocketDecoderConfig decoderConfig) {
113 super(decoderConfig);
114 }
115 }