Skip to content

Commit fca324f

Browse files
committed
Try suppressing Broken pipe
1 parent ec4a1eb commit fca324f

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

src/grumpy/server.clj

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
[clojure.string :as str]
77
[io.pedestal.http :as http]
88
[ring.util.response :as response]
9+
[clojure.stacktrace :as stacktrace]
910
[io.pedestal.interceptor :as interceptor]
1011
[com.stuartsierra.component :as component]
1112
[io.pedestal.http.ring-middlewares :as middlewares]
@@ -16,7 +17,8 @@
1617
[grumpy.routes :as routes]
1718
[grumpy.authors :as authors])
1819
(:import
19-
[java.util Date]))
20+
[java.util Date]
21+
[java.io IOException]))
2022

2123

2224
(def page-size 5)
@@ -149,6 +151,20 @@
149151
:body (grumpy/resource "robots.txt")})]))
150152

151153

154+
(defn suppress-error [name class message-re]
155+
(interceptor/interceptor
156+
{:name name
157+
:error
158+
(fn [ctx ^Throwable e]
159+
(let [cause (stacktrace/root-cause e)
160+
message (.getMessage cause)]
161+
(if (and (instance? class cause) (re-matches message-re message))
162+
(do
163+
(println "Ignoring" (type cause) "-" message)
164+
ctx)
165+
(assoc ctx :io.pedestal.interceptor.chain/error e))))}))
166+
167+
152168
(defrecord Server [opts crux server]
153169
component/Lifecycle
154170
(start [this]
@@ -161,6 +177,7 @@
161177
::http/secure-headers {:content-security-policy-settings "object-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"}}
162178
(http/default-interceptors)
163179
(update ::http/interceptors conj no-cache)
180+
(update ::http/interceptors #(cons (suppress-error ::suppress-broken-pipe java.io.IOException #"Broken pipe") %))
164181
(http/create-server)
165182
(http/start))]
166183
(assoc this :server server)))

0 commit comments

Comments
 (0)