@@ -1688,26 +1688,38 @@ void qcc_abort_stream_read(struct qcs *qcs)
16881688 TRACE_LEAVE (QMUX_EV_QCC_NEW , qcc -> conn , qcs );
16891689}
16901690
1691- /* Install the <app_ops> applicative layer of a QUIC connection on mux <qcc>.
1691+ /* Install the applicative layer of a QUIC connection on mux <qcc>.
16921692 * Returns 0 on success else non-zero.
16931693 */
1694- int qcc_install_app_ops (struct qcc * qcc , const struct qcc_app_ops * app_ops )
1694+ int qcc_install_app_ops (struct qcc * qcc )
16951695{
1696- TRACE_ENTER (QMUX_EV_QCC_NEW , qcc -> conn );
1696+ struct connection * conn = qcc -> conn ;
1697+ const struct qcc_app_ops * app_ops ;
1698+ const char * alpn ;
1699+ int alpn_len ;
1700+
1701+ TRACE_ENTER (QMUX_EV_QCC_NEW , conn );
1702+
1703+ if (!conn_get_alpn (conn , & alpn , & alpn_len ))
1704+ goto err ;
1705+
1706+ app_ops = quic_alpn_to_app_ops (alpn , alpn_len );
1707+ if (!app_ops )
1708+ goto err ;
16971709
16981710 if (app_ops -> init && !app_ops -> init (qcc )) {
1699- TRACE_ERROR ("application layer install error" , QMUX_EV_QCC_NEW , qcc -> conn );
1711+ TRACE_ERROR ("application layer install error" , QMUX_EV_QCC_NEW , conn );
17001712 goto err ;
17011713 }
17021714
1703- TRACE_PROTO ("application layer installed" , QMUX_EV_QCC_NEW , qcc -> conn );
1715+ TRACE_PROTO ("application layer installed" , QMUX_EV_QCC_NEW , conn );
17041716 qcc -> app_ops = app_ops ;
17051717
1706- TRACE_LEAVE (QMUX_EV_QCC_NEW , qcc -> conn );
1718+ TRACE_LEAVE (QMUX_EV_QCC_NEW , conn );
17071719 return 0 ;
17081720
17091721 err :
1710- TRACE_LEAVE (QMUX_EV_QCC_NEW , qcc -> conn );
1722+ TRACE_LEAVE (QMUX_EV_QCC_NEW , conn );
17111723 return 1 ;
17121724}
17131725
@@ -3740,7 +3752,7 @@ static int qmux_init(struct connection *conn, struct proxy *prx,
37403752 /* Register conn as app_ops may use it. */
37413753 qcc -> conn = conn ;
37423754
3743- if (qcc_install_app_ops (qcc , conn -> handle . qc -> app_ops )) {
3755+ if (qcc_install_app_ops (qcc )) {
37443756 TRACE_PROTO ("Cannot install app layer" , QMUX_EV_QCC_NEW |QMUX_EV_QCC_ERR , conn );
37453757 goto err ;
37463758 }
0 commit comments