=htc small cleanup

This commit is contained in:
2beaucoup 2014-12-11 14:43:08 +01:00
parent 1eee973fc2
commit 57aeb4aa54

View file

@ -73,57 +73,57 @@ private[http] class HttpResponseRendererFactory(serverHeader: Option[headers.Ser
entity.isChunked && (!entity.isKnownEmpty || ctx.requestMethod == HttpMethods.HEAD) && (ctx.requestProtocol == `HTTP/1.1`)
@tailrec def renderHeaders(remaining: List[HttpHeader], alwaysClose: Boolean = false,
connHeader: Connection = null, serverHeaderSeen: Boolean = false,
connHeader: Connection = null, serverSeen: Boolean = false,
transferEncodingSeen: Boolean = false, dateSeen: Boolean = false): Unit =
remaining match {
case head :: tail head match {
case x: `Content-Length`
suppressionWarning(log, x, "explicit `Content-Length` header is not allowed. Use the appropriate HttpEntity subtype.")
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen, dateSeen)
case x: `Content-Type`
suppressionWarning(log, x, "explicit `Content-Type` header is not allowed. Set `HttpResponse.entity.contentType` instead.")
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen, dateSeen)
case x: Date
render(x)
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen, dateSeen = true)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen, dateSeen = true)
case x: `Transfer-Encoding`
x.withChunkedPeeled match {
case None
suppressionWarning(log, head)
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen, dateSeen)
case Some(te)
// if the user applied some custom transfer-encoding we need to keep the header
render(if (mustRenderTransferEncodingChunkedHeader) te.withChunked else te)
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen = true, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen = true, dateSeen)
}
case x: `Connection`
case x: Connection
val connectionHeader = if (connHeader eq null) x else Connection(x.tokens ++ connHeader.tokens)
renderHeaders(tail, alwaysClose, connectionHeader, serverHeaderSeen, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connectionHeader, serverSeen, transferEncodingSeen, dateSeen)
case x: `Server`
case x: Server
render(x)
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen = true, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen = true, transferEncodingSeen, dateSeen)
case x: CustomHeader
if (!x.suppressRendering) render(x)
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen, dateSeen)
case x: RawHeader if (x is "content-type") || (x is "content-length") || (x is "transfer-encoding") ||
(x is "date") || (x is "server") || (x is "connection")
suppressionWarning(log, x, "illegal RawHeader")
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen, dateSeen)
case x
render(x)
renderHeaders(tail, alwaysClose, connHeader, serverHeaderSeen, transferEncodingSeen, dateSeen)
renderHeaders(tail, alwaysClose, connHeader, serverSeen, transferEncodingSeen, dateSeen)
}
case Nil
if (!serverHeaderSeen) renderDefaultServerHeader(r)
if (!serverSeen) renderDefaultServerHeader(r)
if (!dateSeen) r ~~ dateHeader
close = alwaysClose ||
ctx.closeAfterResponseCompletion || // request wants to close