Skip to content

Commit e472dc0

Browse files
committed
Update Jetty adapter to 11.0.15
Update Jetty from version 9.4 to 11.0, which also increases the minimum compatible Java version from 1.8 to 11. As Jetty 10.0 also requires Java 11, we can skip over that version.
1 parent 145ca76 commit e472dc0

File tree

5 files changed

+35
-21
lines changed

5 files changed

+35
-21
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../ring-jakarta-servlet/

ring-jetty-adapter/checkouts/ring-servlet

Lines changed: 0 additions & 1 deletion
This file was deleted.

ring-jetty-adapter/project.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
:url "http://opensource.org/licenses/MIT"}
77
:dependencies [[org.clojure/clojure "1.7.0"]
88
[ring/ring-core "1.10.0"]
9-
[ring/ring-servlet "1.10.0"]
10-
[org.eclipse.jetty/jetty-server "9.4.51.v20230217"]]
9+
[ring/ring-jakarta-servlet "1.10.0"]
10+
[org.eclipse.jetty/jetty-server "11.0.15"]]
1111
:aliases {"test-all" ["with-profile" "default:+1.8:+1.9:+1.10:+1.11" "test"]}
1212
:profiles
1313
{:dev {:dependencies [[clj-http "3.12.3"]

ring-jetty-adapter/src/ring/adapter/jetty.clj

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"A Ring adapter that uses the Jetty 9 embedded web server.
33
44
Adapters are used to convert Ring handlers into running web servers."
5-
(:require [ring.util.servlet :as servlet])
5+
(:require [ring.util.jakarta.servlet :as servlet])
66
(:import [org.eclipse.jetty.server
77
Request
88
Server
@@ -16,8 +16,8 @@
1616
[org.eclipse.jetty.util BlockingArrayQueue]
1717
[org.eclipse.jetty.util.thread ThreadPool QueuedThreadPool]
1818
[org.eclipse.jetty.util.ssl SslContextFactory$Server KeyStoreScanner]
19-
[javax.servlet AsyncContext DispatcherType AsyncEvent AsyncListener]
20-
[javax.servlet.http HttpServletRequest HttpServletResponse]))
19+
[jakarta.servlet AsyncContext DispatcherType AsyncEvent AsyncListener]
20+
[jakarta.servlet.http HttpServletRequest HttpServletResponse]))
2121

2222
(defn- ^AbstractHandler proxy-handler [handler]
2323
(proxy [AbstractHandler] []
@@ -113,13 +113,16 @@
113113
(.addExcludeProtocols context-server protocols))))
114114
context-server))
115115

116+
116117
(defn- ^ServerConnector ssl-connector [^Server server options]
117118
(let [ssl-port (options :ssl-port 443)
119+
customizer (doto (SecureRequestCustomizer.)
120+
(.setSniHostCheck (options :sni-host-check? true)))
118121
http-factory (HttpConnectionFactory.
119122
(doto (http-config options)
120123
(.setSecureScheme "https")
121124
(.setSecurePort ssl-port)
122-
(.addCustomizer (SecureRequestCustomizer.))))
125+
(.addCustomizer customizer)))
123126
ssl-context (ssl-context-factory options)
124127
ssl-factory (SslConnectionFactory. ssl-context "http/1.1")]
125128
(when-let [scan-interval (options :keystore-scan-interval)]
@@ -175,6 +178,7 @@
175178
:ssl-port - the SSL port to listen on (defaults to 443, implies
176179
:ssl? is true)
177180
:ssl-context - an optional SSLContext to use for SSL connections
181+
:sni-host-check? - use SNI to check the hostname (default true)
178182
:exclude-ciphers - when :ssl? is true, additionally exclude these
179183
cipher suites
180184
:exclude-protocols - when :ssl? is true, additionally exclude these

ring-jetty-adapter/test/ring/adapter/test/jetty.clj

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,13 @@
8282
(doto (KeyStore/getInstance (KeyStore/getDefaultType)) (.load nil)))
8383

8484
(def test-ssl-options
85-
{:port test-port
86-
:ssl? true
87-
:ssl-port test-ssl-port
88-
:keystore nil-keystore
89-
:key-password "hunter2"
90-
:join? false})
85+
{:port test-port
86+
:ssl? true
87+
:ssl-port test-ssl-port
88+
:keystore nil-keystore
89+
:key-password "hunter2"
90+
:join? false
91+
:sni-host-check? false})
9192

9293
(deftest test-run-jetty
9394
(testing "HTTP server"
@@ -102,7 +103,8 @@
102103
(with-server hello-world {:port test-port
103104
:ssl-port test-ssl-port
104105
:keystore "test/keystore.jks"
105-
:key-password "password"}
106+
:key-password "password"
107+
:sni-host-check? false}
106108
(let [response (http/get test-ssl-url {:insecure? true})]
107109
(is (= (:status response) 200))
108110
(is (= (:body response) "Hello World")))))
@@ -122,7 +124,8 @@
122124
:port test-port
123125
:ssl-port test-ssl-port
124126
:keystore "test/keystore.jks"
125-
:key-password "password"}
127+
:key-password "password"
128+
:sni-host-check? false}
126129
(let [response (http/get test-ssl-url {:insecure? true})]
127130
(is (= (:status response) 200))
128131
(is (= (:body response) "Hello World")))
@@ -135,7 +138,8 @@
135138
:key-password "password"
136139
:port test-port
137140
:ssl? true
138-
:ssl-port test-ssl-port}
141+
:ssl-port test-ssl-port
142+
:sni-host-check? false}
139143
(is (thrown? java.io.IOException
140144
(http/get test-ssl-url {:insecure? true}))
141145
"missing client certs will cause an exception")
@@ -153,7 +157,8 @@
153157
:key-password "password"
154158
:port test-port
155159
:ssl? true
156-
:ssl-port test-ssl-port}
160+
:ssl-port test-ssl-port
161+
:sni-host-check? false}
157162
(let [response (http/get test-ssl-url {:insecure? true
158163
:throw-exceptions false})]
159164
(is (= 403 (:status response))
@@ -169,7 +174,8 @@
169174
(testing "HTTPS server using :ssl-context"
170175
(with-server hello-world {:port test-port
171176
:ssl-port test-ssl-port
172-
:ssl-context (ssl-context)}
177+
:ssl-context (ssl-context)
178+
:sni-host-check? false}
173179
(let [response (http/get test-ssl-url {:insecure? true})]
174180
(is (= (:status response) 200))
175181
(is (= (:body response) "Hello World")))))
@@ -179,7 +185,8 @@
179185
:ssl-context (ssl-context)
180186
:port test-port
181187
:ssl? true
182-
:ssl-port test-ssl-port}
188+
:ssl-port test-ssl-port
189+
:sni-host-check? false}
183190
(is (thrown? java.io.IOException
184191
(http/get test-ssl-url {:insecure? true}))
185192
"missing client certs will cause an exception")
@@ -196,7 +203,8 @@
196203
:ssl-context (ssl-context)
197204
:port test-port
198205
:ssl? true
199-
:ssl-port test-ssl-port}
206+
:ssl-port test-ssl-port
207+
:sni-host-check? false}
200208
(let [response (http/get test-ssl-url {:insecure? true
201209
:throw-exceptions false})]
202210
(is (= 403 (:status response))
@@ -243,7 +251,8 @@
243251
:keystore "test/keystore.jks"
244252
:key-password "password"
245253
:join? false
246-
:max-idle-time 5000})
254+
:max-idle-time 5000
255+
:sni-host-check? false})
247256
connectors (. server getConnectors)]
248257
(is (= 5000 (. (first connectors) getIdleTimeout)))
249258
(is (= 5000 (. (second connectors) getIdleTimeout)))
@@ -254,6 +263,7 @@
254263
:ssl-port test-ssl-port
255264
:keystore "test/keystore.jks"
256265
:key-password "password"
266+
:sni-host-check? false
257267
:join? false})
258268
connectors (. server getConnectors)]
259269
(is (= 200000 (. (first connectors) getIdleTimeout)))

0 commit comments

Comments
 (0)