src/Pure/Tools/server.scala
changeset 67793 d0eeaeab48cc
parent 67792 73c7a55972b4
child 67794 82c5ca89ac61
--- a/src/Pure/Tools/server.scala	Fri Mar 09 13:11:47 2018 +0100
+++ b/src/Pure/Tools/server.scala	Fri Mar 09 13:36:52 2018 +0100
@@ -9,7 +9,7 @@
 
 import java.io.{BufferedReader, BufferedWriter, InputStreamReader, OutputStreamWriter,
   IOException}
-import java.net.{Socket, ServerSocket, InetAddress}
+import java.net.{Socket, SocketException, ServerSocket, InetAddress}
 
 
 object Server
@@ -46,9 +46,11 @@
     val writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream, UTF8.charset))
 
     def read_line(): Option[String] =
-      reader.readLine() match {
-        case null => None
-        case line => Some(line)
+      Exn.capture { reader.readLine() } match {
+        case Exn.Res(null) => None
+        case Exn.Res(line) => Some(line)
+        case Exn.Exn(_: SocketException) => None
+        case Exn.Exn(exn) => throw exn
       }
 
     def write_line(msg: String)