From f094b4d42ea49cdd4fd3882bb68fb7e6c901afb9 Mon Sep 17 00:00:00 2001 From: Tim Kellogg Date: Thu, 11 Dec 2014 16:47:03 -0700 Subject: [PATCH] Return 400 Bad Request when "Host" header is null Fixes #102 --- .../org/mashupbots/socko/webserver/RequestHandler.scala | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/socko-webserver/src/main/scala/org/mashupbots/socko/webserver/RequestHandler.scala b/socko-webserver/src/main/scala/org/mashupbots/socko/webserver/RequestHandler.scala index 74bb289..64075c4 100644 --- a/socko-webserver/src/main/scala/org/mashupbots/socko/webserver/RequestHandler.scala +++ b/socko-webserver/src/main/scala/org/mashupbots/socko/webserver/RequestHandler.scala @@ -110,7 +110,12 @@ class RequestHandler(server: WebServer, routes: PartialFunction[SockoEvent, Unit * @param e Message to process */ override def channelRead(ctx: ChannelHandlerContext, e: AnyRef) { + def isInvalid(httpRequest: HttpRequest): Boolean = HttpHeaders.getHost(httpRequest) == null + e match { + case httpRequest: FullHttpRequest if isInvalid(httpRequest) => + writeErrorResponse(ctx, HttpResponseStatus.BAD_REQUEST, new NullPointerException) + case httpRequest: FullHttpRequest => val event = HttpRequestEvent(ctx, httpRequest, httpConfig) @@ -125,6 +130,9 @@ class RequestHandler(server: WebServer, routes: PartialFunction[SockoEvent, Unit routes(event) } + case httpRequest: HttpRequest if isInvalid(httpRequest) => + writeErrorResponse(ctx, HttpResponseStatus.BAD_REQUEST, new NullPointerException) + case httpRequest: HttpRequest => val event = HttpRequestEvent(ctx, httpRequest, httpConfig)