<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<!-- ============================================================= -->
<!-- Configure a SPDY connector.                                   -->
<!-- This configuration must be used in conjunction with jetty.xml -->
<!-- and jetty-ssl.xml                                             -->
<!-- ============================================================= -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">

    <!-- =========================================================== -->
    <!-- Create a push strategy which can be used by reference by    -->
    <!-- individual connection factories below.                      -->
    <!--                                                             -->
    <!-- Consult the javadoc of o.e.j.spdy.server.http.ReferrerPushStrategy -->
    <!-- for all configuration that may be set here.                 -->
    <!-- =========================================================== -->
    <New id="pushStrategy" class="org.eclipse.jetty.spdy.server.http.ReferrerPushStrategy">
        <!-- Uncomment to blacklist browsers for this push strategy. If one of the blacklisted Strings occurs in the
             user-agent header sent by the client, push will be disabled for this browser. This is case insensitive" -->
        <!--
        <Set name="UserAgentBlacklist">
            <Array type="String">
                <Item>.*(?i)firefox/14.*</Item>
                <Item>.*(?i)firefox/15.*</Item>
                <Item>.*(?i)firefox/16.*</Item>
            </Array>
        </Set>
        -->

        <!-- Uncomment to override default file extensions to push -->
        <!--
        <Set name="PushRegexps">
            <Array type="String">
               <Item>.*\.css</Item>
               <Item>.*\.js</Item>
               <Item>.*\.png</Item>
               <Item>.*\.jpg</Item>
               <Item>.*\.gif</Item>
           </Array>
        </Set>
        -->
        <Set name="referrerPushPeriod">5000</Set>
        <Set name="maxAssociatedResources">32</Set>
    </New>

    <!-- =========================================================== -->
    <!-- Add a SPDY/HTTPS Connector.                                 -->
    <!-- Configure an o.e.j.server.ServerConnector with connection   -->
    <!-- factories for TLS (aka SSL), ProtoNego, SPDY and HTTP to    -->
    <!-- provide a connector that can accept HTTPS or SPDY           -->
    <!-- connections.                                                -->
    <!--                                                             -->
    <!-- All accepted TLS connections are initially wired to a       -->
    <!-- Protonego connection, which attempts to use a TLS extension -->
    <!-- to negotiation the protocol.  If it is not supported by     -->
    <!-- the client, then the connection is replaced by a HTTP       -->
    <!-- connection.  If a specific protocol version (eg spdy/3) is  -->
    <!-- negotiated, then the appropriate connection factory         -->
    <!-- is used to create a connection to replace the connection    -->
    <!--                                                             -->
    <!-- The final result is a SPDY or HTTP connection wired behind  -->
    <!-- a TLS (aka SSL) connection.                                 -->
    <!--                                                             -->
    <!-- Consult the javadoc of o.e.j.server.ServerConnector and the -->
    <!-- specific connection factory types for all configuration     -->
    <!-- that may be set here.                                       -->
    <!-- =========================================================== -->
    <Call id="spdyConnector" name="addConnector">
        <Arg>
            <New class="org.eclipse.jetty.server.ServerConnector">
                <Arg name="server">
                    <Ref refid="Server"/>
                </Arg>
                <Arg name="factories">
                    <Array type="org.eclipse.jetty.server.ConnectionFactory">

                        <!-- SSL Connection factory with Protonego as next protocol -->
                        <Item>
                            <New class="org.eclipse.jetty.server.SslConnectionFactory">
                                <Arg name="next"><Property name="protonego"/></Arg>
                                <Arg name="sslContextFactory">
                                    <Ref refid="sslContextFactory"/>
                                </Arg>
                            </New>
                        </Item>

                        <!-- NPN Connection factory with HTTP as default protocol -->
                        <Item>
			    <Ref refid="protonego"/>
                        </Item>

                        <!-- SPDY/3 Connection factory -->
                        <Item>
                            <New class="org.eclipse.jetty.spdy.server.http.HTTPSPDYServerConnectionFactory">
                                <Arg name="version" type="int">3</Arg>
                                <Arg name="config">
                                    <Ref refid="sslHttpConfig"/>
                                </Arg>
                                <!-- Set the initial window size for this SPDY connector. -->
                                <!-- See: http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3#TOC-2.6.8-WINDOW_UPDATE -->
                                <Set name="initialWindowSize"><Property name="spdy.initialWindowSize" default="65536"/></Set>
                                <!-- Uncomment to enable ReferrerPushStrategy -->
                                <!--<Arg name="pushStrategy"><Ref refid="pushStrategy"/></Arg>-->
                            </New>
                        </Item>

                        <!-- SPDY/2 Connection factory -->
                        <Item>
                            <New class="org.eclipse.jetty.spdy.server.http.HTTPSPDYServerConnectionFactory">
                                <Arg name="version" type="int">2</Arg>
                                <Arg name="config">
                                    <Ref refid="sslHttpConfig"/>
                                </Arg>
                                <!-- Set the initial window size for this SPDY connector. -->
                                <!-- See: http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3#TOC-2.6.8-WINDOW_UPDATE -->
                                <Set name="initialWindowSize"><Property name="spdy.initialWindowSize" default="65536"/></Set>
                            </New>
                        </Item>

                        <!-- HTTP Connection factory -->
                        <Item>
                            <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                                <Arg name="config">
                                    <Ref refid="sslHttpConfig"/>
                                </Arg>
                            </New>
                        </Item>
                    </Array>
                </Arg>

                <Set name="host"><Property name="jetty.host"/></Set>
                <Set name="port"><Property name="spdy.port" default="443"/></Set>
                <Set name="idleTimeout"><Property name="spdy.timeout" default="30000"/></Set>
            </New>
        </Arg>
    </Call>

</Configure>
