2012-02-07 09:26:55 +01:00
|
|
|
/*
|
2019-06-18 10:05:58 +02:00
|
|
|
* Copyright 2019 The Netty Project
|
2012-02-07 09:26:55 +01:00
|
|
|
*
|
|
|
|
* The Netty Project licenses this file to you under the Apache License,
|
|
|
|
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
|
|
* with the License. You may obtain a copy of the License at:
|
|
|
|
*
|
2012-06-04 22:31:44 +02:00
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
2012-02-07 09:26:55 +01:00
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
|
|
* License for the specific language governing permissions and limitations
|
|
|
|
* under the License.
|
|
|
|
*/
|
2011-11-28 23:45:13 +01:00
|
|
|
// (BSD License: http://www.opensource.org/licenses/bsd-license)
|
|
|
|
//
|
|
|
|
// Copyright (c) 2011, Joe Walnes and contributors
|
|
|
|
// All rights reserved.
|
|
|
|
//
|
|
|
|
// Redistribution and use in source and binary forms, with or
|
|
|
|
// without modification, are permitted provided that the
|
|
|
|
// following conditions are met:
|
|
|
|
//
|
|
|
|
// * Redistributions of source code must retain the above
|
|
|
|
// copyright notice, this list of conditions and the
|
|
|
|
// following disclaimer.
|
|
|
|
//
|
|
|
|
// * Redistributions in binary form must reproduce the above
|
|
|
|
// copyright notice, this list of conditions and the
|
|
|
|
// following disclaimer in the documentation and/or other
|
|
|
|
// materials provided with the distribution.
|
|
|
|
//
|
|
|
|
// * Neither the name of the Webbit nor the names of
|
|
|
|
// its contributors may be used to endorse or promote products
|
|
|
|
// derived from this software without specific prior written
|
|
|
|
// permission.
|
|
|
|
//
|
|
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
|
|
// CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
|
|
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
|
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
|
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
|
|
// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
|
|
// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
|
|
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
|
|
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
// POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
2011-12-09 04:38:59 +01:00
|
|
|
package io.netty.handler.codec.http.websocketx;
|
2011-11-28 23:45:13 +01:00
|
|
|
|
|
|
|
/**
|
2011-12-15 06:09:09 +01:00
|
|
|
* Decodes a web socket frame from wire protocol version 13 format. V13 is essentially the same as V8.
|
2011-11-28 23:45:13 +01:00
|
|
|
*/
|
|
|
|
public class WebSocket13FrameDecoder extends WebSocket08FrameDecoder {
|
|
|
|
|
2011-12-15 12:25:40 +01:00
|
|
|
/**
|
|
|
|
* Constructor
|
2012-05-31 02:13:00 +02:00
|
|
|
*
|
2014-10-22 21:59:45 +02:00
|
|
|
* @param expectMaskedFrames
|
2011-12-15 12:25:40 +01:00
|
|
|
* Web socket servers must set this to true processed incoming masked payload. Client implementations
|
|
|
|
* must set this to false.
|
|
|
|
* @param allowExtensions
|
|
|
|
* Flag to allow reserved extension bits to be used or not
|
2012-05-31 02:13:00 +02:00
|
|
|
* @param maxFramePayloadLength
|
|
|
|
* Maximum length of a frame's payload. Setting this to an appropriate value for you application
|
|
|
|
* helps check for denial of services attacks.
|
2011-12-15 12:25:40 +01:00
|
|
|
*/
|
2014-10-22 21:59:45 +02:00
|
|
|
public WebSocket13FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength) {
|
|
|
|
this(expectMaskedFrames, allowExtensions, maxFramePayloadLength, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor
|
|
|
|
*
|
|
|
|
* @param expectMaskedFrames
|
|
|
|
* Web socket servers must set this to true processed incoming masked payload. Client implementations
|
|
|
|
* must set this to false.
|
|
|
|
* @param allowExtensions
|
|
|
|
* Flag to allow reserved extension bits to be used or not
|
|
|
|
* @param maxFramePayloadLength
|
|
|
|
* Maximum length of a frame's payload. Setting this to an appropriate value for you application
|
|
|
|
* helps check for denial of services attacks.
|
|
|
|
* @param allowMaskMismatch
|
2017-02-15 20:03:59 +01:00
|
|
|
* When set to true, frames which are not masked properly according to the standard will still be
|
|
|
|
* accepted.
|
2014-10-22 21:59:45 +02:00
|
|
|
*/
|
|
|
|
public WebSocket13FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength,
|
|
|
|
boolean allowMaskMismatch) {
|
2019-06-18 10:05:58 +02:00
|
|
|
this(WebSocketDecoderConfig.newBuilder()
|
|
|
|
.expectMaskedFrames(expectMaskedFrames)
|
|
|
|
.allowExtensions(allowExtensions)
|
|
|
|
.maxFramePayloadLength(maxFramePayloadLength)
|
|
|
|
.allowMaskMismatch(allowMaskMismatch)
|
|
|
|
.build());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor
|
|
|
|
*
|
|
|
|
* @param decoderConfig
|
|
|
|
* Frames decoder configuration.
|
|
|
|
*/
|
|
|
|
public WebSocket13FrameDecoder(WebSocketDecoderConfig decoderConfig) {
|
|
|
|
super(decoderConfig);
|
2011-12-15 12:25:40 +01:00
|
|
|
}
|
2011-11-28 23:45:13 +01:00
|
|
|
}
|