diff --git a/main-command/src/main/scala/sbt/internal/client/ServerConnection.scala b/main-command/src/main/scala/sbt/internal/client/ServerConnection.scala index 1ad599825..c551613ae 100644 --- a/main-command/src/main/scala/sbt/internal/client/ServerConnection.scala +++ b/main-command/src/main/scala/sbt/internal/client/ServerConnection.scala @@ -30,8 +30,8 @@ abstract class ServerConnection(connection: Socket) { bytesRead = in.read(readBuffer) buffer = buffer ++ readBuffer.toVector.take(bytesRead) // handle un-framing - val delimPos = buffer.indexOf(delimiter) - if (delimPos > 0) { + var delimPos = buffer.indexOf(delimiter) + while (delimPos > -1) { val chunk = buffer.take(delimPos) buffer = buffer.drop(delimPos + 1) @@ -47,6 +47,7 @@ abstract class ServerConnection(connection: Socket) { case event: StringEvent => onLogEntry(event) } ) + delimPos = buffer.indexOf(delimiter) } } catch { diff --git a/main/src/main/scala/sbt/internal/server/NetworkChannel.scala b/main/src/main/scala/sbt/internal/server/NetworkChannel.scala index b8bc171a5..22d51c5ce 100644 --- a/main/src/main/scala/sbt/internal/server/NetworkChannel.scala +++ b/main/src/main/scala/sbt/internal/server/NetworkChannel.scala @@ -29,8 +29,8 @@ final class NetworkChannel(val name: String, connection: Socket, structure: Buil bytesRead = in.read(readBuffer) buffer = buffer ++ readBuffer.toVector.take(bytesRead) // handle un-framing - val delimPos = buffer.indexOf(delimiter) - if (delimPos > 0) { + var delimPos = buffer.indexOf(delimiter) + while (delimPos > -1) { val chunk = buffer.take(delimPos) buffer = buffer.drop(delimPos + 1) @@ -40,6 +40,7 @@ final class NetworkChannel(val name: String, connection: Socket, structure: Buil errorDesc => println("Got invalid chunk from client: " + errorDesc), onCommand ) + delimPos = buffer.indexOf(delimiter) } } catch { diff --git a/notes/1.0.2/server-issue.markdown b/notes/1.0.2/server-issue.markdown new file mode 100644 index 000000000..631237f80 --- /dev/null +++ b/notes/1.0.2/server-issue.markdown @@ -0,0 +1,5 @@ +### Bug fixes + +- In some cases sbt server was missing some messages. By [@guillaumebort][@guillaumebort]. + + [@guillaumebort]: https://github.com/guillaumebort