<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -25,11 +25,20 @@
   (let [control
         (dothread-swank
           (thread-set-name &quot;Swank Control Thread&quot;)
-          (control-loop conn))
+          (try
+           (control-loop conn)
+           (catch Exception e
+             ;; fail silently
+             nil)))
         read
         (dothread-swank
           (thread-set-name &quot;Read Loop Thread&quot;)
-          (read-loop conn control))]
+          (try
+           (read-loop conn control)
+           (catch Exception e
+             ;; This could be put somewhere better
+             (.interrupt control)
+             (dosync (alter *connections* (partial remove #{conn}))))))]
     (dosync
      (ref-set (conn :control-thread) control)
      (ref-set (conn :read-thread) read))))</diff>
      <filename>src/swank/swank.clj</filename>
    </modified>
    <modified>
      <diff>@@ -2,13 +2,17 @@
   (:use (swank util)
         (swank.util.concurrent thread)))
 
-(defn read-chars [#^java.io.Reader rdr n]
-  (let [sb (StringBuilder.)]
-    (dotimes [i n]
-      (let [c (.read rdr)]
-        (when (not= c -1)
-          (.append sb (char c)))))
-    (str sb)))
+(defn read-chars
+  ([rdr n] (read-chars rdr n false))
+  ([#^java.io.Reader rdr n throw-exception]
+     (let [sb (StringBuilder.)]
+       (dotimes [i n]
+         (let [c (.read rdr)]
+           (if (not= c -1)
+             (.append sb (char c))
+             (when throw-exception
+               (throw throw-exception)))))
+       (str sb))))
 
 (defn call-on-flush-stream
   &quot;Creates a stream that will call a given function when flushed.&quot;</diff>
      <filename>src/swank/util/io.clj</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>3df36ef0a9f8e54e4d53d6c9184dbccc4da0c096</id>
    </parent>
    <parent>
      <id>1c9bf1df3dc6a3b0f0e5178b9f29c5baa88876ba</id>
    </parent>
  </parents>
  <author>
    <name>Matt Revelle</name>
    <email>matt@mars.local</email>
  </author>
  <url>http://github.com/mattrepl/swank-clojure/commit/e4aaef509a43028f29ce6e8e171d2d75b42b0c84</url>
  <id>e4aaef509a43028f29ce6e8e171d2d75b42b0c84</id>
  <committed-date>2009-09-27T16:38:08-07:00</committed-date>
  <authored-date>2009-09-27T16:38:08-07:00</authored-date>
  <message>Merge branch 'master' of git://github.com/jochu/swank-clojure</message>
  <tree>d15cc45229aa6aa6a97339943eabaa2f8667fda2</tree>
  <committer>
    <name>Matt Revelle</name>
    <email>matt@mars.local</email>
  </committer>
</commit>
