netty5/codec-http/src/main/java/io/netty/handler/codec/http/websocketx
Artem Morozov 8fecbab2c5 Handle null "origin" header in "Old Hixie 75 handshake" as proper bad request. (#8864)
Motivation:

Gracefully respond on bad client request.
We have a set of errors produced by Android 7.1.1/7.1.2 clients where both headers `HttpHeaderNames.SEC_WEBSOCKET_VERSION` and `HttpHeaderNames.ORIGIN` are not present. Absence of the first headers leads to WebSocketServerHandshaker00 be applied as a handshaker. However, null 2nd header causes

```
java.lang.NullPointerException: value
 io.netty.util.internal.ObjectUtil.checkNotNull(ObjectUtil.java:33)
 io.netty.handler.codec.DefaultHeaders.addObject(DefaultHeaders.java:327)
 io.netty.handler.codec.http.DefaultHttpHeaders.add(DefaultHttpHeaders.java:123)
 io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker00.newHandshakeResponse(WebSocketServerHandshaker00.java:162)
```
Which causes connection close with unclear reason.

Modification:

Added null-check, and in case of null an appropriate WebSocketHandshakeException is thrown.

Result:

In case of null `HttpHeaderNames.ORIGIN` header a WebSocketHandshakeException is caught by WebSocketServerProtocolHandler which sends a graceful `BAD_REQUEST`.
2019-02-13 17:14:58 -08:00
..
extensions Update to new checkstyle plugin (#8777) (#8780) 2019-01-25 11:58:42 +01:00
BinaryWebSocketFrame.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
CloseWebSocketFrame.java Apply appropriate methods for writing CharSequence into ByteBuf 2017-06-27 07:58:39 +02:00
ContinuationWebSocketFrame.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
package-info.java Use our own URL shortener wherever possible 2014-07-31 17:06:19 -07:00
PingWebSocketFrame.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
PongWebSocketFrame.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
TextWebSocketFrame.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
Utf8FrameValidator.java Close connection for CorruptedFrameException (#8705) 2019-01-17 07:17:12 +01:00
Utf8Validator.java ByteString introduced as AsciiString super class 2015-04-14 16:35:17 -07:00
WebSocket07FrameDecoder.java Correct comment for allowMaskMismatch parameter 2017-02-16 17:03:55 +01:00
WebSocket07FrameEncoder.java #751 - Added support for legacy websocket v7 in order to pass SocksJS tests 2012-12-19 12:35:56 +01:00
WebSocket08FrameDecoder.java Support 1012, 1013 and 1014 WebSocket close status code (#8664) 2018-12-17 19:42:50 +01:00
WebSocket08FrameEncoder.java Fix spelling in javadocs and field name. 2016-02-01 12:03:14 +01:00
WebSocket13FrameDecoder.java Correct comment for allowMaskMismatch parameter 2017-02-16 17:03:55 +01:00
WebSocket13FrameEncoder.java Update license headers 2012-06-04 13:31:44 -07:00
WebSocket00FrameDecoder.java Fixed NPE in WebSocket00FrameDecoder if end couldn't be found in text frame 2014-07-16 20:03:57 +02:00
WebSocket00FrameEncoder.java [#2768] Correctly duplicate buffer for CloseWebSocketFrames 2014-08-14 09:54:35 +02:00
WebSocketChunkedInput.java Support WebSocket data chunked transfer 2016-06-13 08:55:07 +02:00
WebSocketClientHandshaker.java Correct filling an origin header for WS client 2017-10-23 11:38:34 +02:00
WebSocketClientHandshaker07.java Set (and override) websocket handshake headers after custom headers (#7975) 2018-05-30 19:52:40 +02:00
WebSocketClientHandshaker08.java Set (and override) websocket handshake headers after custom headers (#7975) 2018-05-30 19:52:40 +02:00
WebSocketClientHandshaker13.java Set (and override) websocket handshake headers after custom headers (#7975) 2018-05-30 19:52:40 +02:00
WebSocketClientHandshaker00.java Set (and override) websocket handshake headers after custom headers (#7975) 2018-05-30 19:52:40 +02:00
WebSocketClientHandshakerFactory.java Correct comment for allowMaskMismatch parameter 2017-02-16 17:03:55 +01:00
WebSocketClientProtocolHandler.java Update to new checkstyle plugin (#8777) (#8780) 2019-01-25 11:58:42 +01:00
WebSocketClientProtocolHandshakeHandler.java Fix the leak in the WebSocketClientProtocolHandshakeHandler 2014-10-12 20:26:12 +02:00
WebSocketFrame.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
WebSocketFrameAggregator.java HttpObjectAggregator doesn't check content-length header 2015-08-17 09:26:50 -07:00
WebSocketFrameDecoder.java [#1515] Add WebSocketFrameEncoder and WebSocketFrameDecoder interfaces and let our impls implement it 2013-07-04 06:41:22 +02:00
WebSocketFrameEncoder.java [#1515] Add WebSocketFrameEncoder and WebSocketFrameDecoder interfaces and let our impls implement it 2013-07-04 06:41:22 +02:00
WebSocketHandshakeException.java Update license headers 2012-06-04 13:31:44 -07:00
WebSocketProtocolHandler.java Propagate pong frames in WebSocketProtocolHandler (#7955) 2018-05-24 20:27:29 +02:00
WebSocketScheme.java Immediate caching the strings wrapped to AsciiString 2017-08-15 06:22:14 +02:00
WebSocketServerHandshaker.java Removed custom split method as it is not effective anymore. 2016-08-01 21:49:33 +02:00
WebSocketServerHandshaker07.java Correct comment for allowMaskMismatch parameter 2017-02-16 17:03:55 +01:00
WebSocketServerHandshaker08.java Correct comment for allowMaskMismatch parameter 2017-02-16 17:03:55 +01:00
WebSocketServerHandshaker13.java Correct comment for allowMaskMismatch parameter 2017-02-16 17:03:55 +01:00
WebSocketServerHandshaker00.java Handle null "origin" header in "Old Hixie 75 handshake" as proper bad request. (#8864) 2019-02-13 17:14:58 -08:00
WebSocketServerHandshakerFactory.java Correct comment for allowMaskMismatch parameter 2017-02-16 17:03:55 +01:00
WebSocketServerProtocolHandler.java Propagate pong frames in WebSocketProtocolHandler (#7955) 2018-05-24 20:27:29 +02:00
WebSocketServerProtocolHandshakeHandler.java Compare HttpMethod by reference (#8815) 2019-01-30 21:17:00 +01:00
WebSocketUtil.java Fix random number generators in WebSocketUtil 2018-06-25 14:42:59 +02:00
WebSocketVersion.java #751 - Added support for legacy websocket v7 in order to pass SocksJS tests 2012-12-19 12:35:56 +01:00