Skip to content

Commit 68db6fe

Browse files
committed
Catch Throwable in op handlers to prevent client hangs
1 parent d67c5e5 commit 68db6fe

2 files changed

Lines changed: 6 additions & 6 deletions

File tree

‎server/src/clojure_cli/repl/inspect.clj‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@
184184
target-ns (session-binding session-id #'clojure.core/*ns*)
185185
var-symbol (with-meta (symbol var-name) {:browse-path (mapv :key (rest stack))})
186186
result (try {:defd (str (intern target-ns var-symbol (:value (peek stack))))}
187-
(catch Exception e {:note (ex-message e)}))]
187+
(catch Throwable e {:note (ex-message e)}))]
188188
(respond result)))
189189

190190
(def op-fns
@@ -200,7 +200,7 @@
200200
(fn [{:keys [op transport] :as msg}]
201201
(if-let [f (op-fns op)]
202202
(let [view (try (f msg)
203-
(catch Exception e (assoc (render) :note (ex-message e))))]
203+
(catch Throwable e (assoc (render) :note (ex-message e))))]
204204
(transport/send transport (response-for msg :view (pr-str view) :status ["done"])))
205205
(handler msg))))
206206

‎server/src/clojure_cli/repl/server.clj‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
(map (fn [v] [(str (:ns v) "/" (:name v))
4747
(update v :arglists (fn [arglists] (mapv #(str "[" % "]") arglists)))]))
4848
(:vars (json/read-str (slurp f) :key-fn keyword))))
49-
(catch Exception _ nil))))
49+
(catch Throwable _ nil))))
5050

5151
(defn clojuredocs-examples [fq]
5252
(when-let [examples (seq (:examples (get @clojuredocs-index fq)))]
@@ -57,7 +57,7 @@
5757
(str/join "\n" (remove str/blank? [fq-name (str/join " " arglists) doc])))
5858

5959
(defn resolved [sym]
60-
(try (ns-resolve *ns* sym) (catch Exception _ nil)))
60+
(try (ns-resolve *ns* sym) (catch Throwable _ nil)))
6161

6262
(defn clojuredocs-doc [sym]
6363
(let [fq (if-let [{:keys [ns name]} (some-> (resolved sym) meta)]
@@ -72,7 +72,7 @@
7272

7373
(defn java-doc [sym]
7474
(try (with-out-str ((requiring-resolve 'clojure.java.doc.api/javadoc-fn) (str sym) nil))
75-
(catch Exception _ nil)))
75+
(catch Throwable _ nil)))
7676

7777
(defn doc-for [token ns-name]
7878
(binding [*ns* (the-ns (symbol ns-name))]
@@ -97,7 +97,7 @@
9797
(binding [*ns* (the-ns (symbol ns-name))]
9898
(try (apply require (edn/read-string libspecs))
9999
nil
100-
(catch Exception e (ex-message e)))))
100+
(catch Throwable e (ex-message e)))))
101101

102102
(defn auto-require-middleware [handler]
103103
(fn [{:keys [op libspecs ns transport] :as msg}]

0 commit comments

Comments
 (0)