# HG changeset patch # User wenzelm # Date 1520599012 -3600 # Node ID d0eeaeab48cc591bfc077888df7329f6e26d39d3 # Parent 73c7a55972b4bc0e38b417347cb1207f0cb5fb81 more robust read_line after shutdown; diff -r 73c7a55972b4 -r d0eeaeab48cc src/Pure/Tools/server.scala --- 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)