/* * Copyright (C) 2012 The Android Open Source Project * * Licensed 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 * * http://www.apache.org/licenses/LICENSE-2.0 * * 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. */ package com.koushikdutta.async.http.spdy; import com.koushikdutta.async.http.Protocol; import java.util.List; import java.util.Locale; final class SpdyTransport { /** See http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1#TOC-3.2.1-Request. */ private static final List<String> SPDY_3_PROHIBITED_HEADERS = Util.immutableList( "connection", "host", "keep-alive", "proxy-connection", "transfer-encoding"); /** See http://tools.ietf.org/html/draft-ietf-httpbis-http2-09#section-8.1.3. */ private static final List<String> HTTP_2_PROHIBITED_HEADERS = Util.immutableList( "connection", "host", "keep-alive", "proxy-connection", "te", "transfer-encoding", "encoding", "upgrade"); /** When true, this header should not be emitted or consumed. */ static boolean isProhibitedHeader(Protocol protocol, String name) { if (protocol == Protocol.SPDY_3) { return SPDY_3_PROHIBITED_HEADERS.contains(name.toLowerCase(Locale.US)); } else if (protocol == Protocol.HTTP_2) { return HTTP_2_PROHIBITED_HEADERS.contains(name.toLowerCase(Locale.US)); } else { throw new AssertionError(protocol); } } }