• B
    Move ALPN handling from finalizer to delayed call · 5626f634
    Benjamin Kaduk 提交于
    Commit 02f0274e moved ALPN processing
    into an extension finalization function, as the only documented ordering
    requirement from previous commits was that ALPN processing occur after
    SNI processing, and SNI processing is performed before the extension
    finalization step.  However, it is useful for applications'
    alpn_select callbacks to run after ciphersuite selection as well -- at
    least one application protocol specification (HTTP/2) imposes restrictions
    on which ciphersuites are usable with that protocol.  Since it is generally
    more preferrable to have a successful TLS connection with a default application
    protocol than to fail the TLS connection and not be able to have the preferred
    application protocol, it is good to give the alpn_select callback information
    about the ciphersuite to be used, so that appropriate restrctions can be
    enforced in application code.
    
    Accordingly, split the ALPN handling out into a separate tls_handl_alpn()
    function akin to tls_handle_status_request(), called from
    tls_post_process_client_hello().  This is an alternative to resuscitating
    ssl_check_clienthello_tlsext_late(), something of an awkwward name itself.
    Reviewed-by: NMatt Caswell <matt@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/4070)
    5626f634
extensions.c 47.3 KB