clj-commons / aleph

Asynchronous streaming communication for Clojure - web server, web client, and raw TCP/UDP
http://aleph.io
MIT License
2.54k stars 241 forks source link

Allow custom `SslContext` without ALPN again for HTTP/1.1-only case #730

Closed DerGuteMoritz closed 2 weeks ago

DerGuteMoritz commented 3 weeks ago

With the introduction of HTTP/2 support, Aleph started to require a matching ALPN config to be present in custom SslContext objects. This needlessly broke existing HTTP/1.1-only uses. With this change, we now allow custom SslContext objects without ALPN config again if only HTTP/1.1 is desired (via the http-versions option). Since this still happens to be the default, existing uses should just work again.

Fixes #727


@KingMob your suggested patch almost worked as-is but was thwarted by the fact that applicationProtocolNegotiator is always present (see code comment).

Review welcome but don't merge, yet, as I also would like to add a test-http-versions-client-config test which mirrors test-http-versions-server-config for the client (as that's what #727 was originally about).