From 5f8e37be9e923e40d1219072116bb83fc30bafa5 Mon Sep 17 00:00:00 2001 From: Stephan Unverwerth Date: Thu, 29 Sep 2016 00:08:07 +0200 Subject: [PATCH] make input stream non-blocking --- bin/php-language-server.php | 2 ++ src/ProtocolStreamReader.php | 5 +---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/bin/php-language-server.php b/bin/php-language-server.php index ab7e217..51b3dfb 100644 --- a/bin/php-language-server.php +++ b/bin/php-language-server.php @@ -27,6 +27,8 @@ else { $outputStream = STDOUT; } +stream_set_blocking($inputStream, false); + $server = new LanguageServer(new ProtocolStreamReader($inputStream), new ProtocolStreamWriter($outputStream)); Loop\run(); diff --git a/src/ProtocolStreamReader.php b/src/ProtocolStreamReader.php index 2cac662..32fd992 100644 --- a/src/ProtocolStreamReader.php +++ b/src/ProtocolStreamReader.php @@ -30,7 +30,7 @@ class ProtocolStreamReader implements ProtocolReader { $this->input = $input; Loop\addReadStream($this->input, function() { - while(($c = fgetc($this->input)) !== false) { + while(($c = fgetc($this->input)) !== false && $c !== '') { $this->buffer .= $c; switch ($this->parsingMode) { case ParsingMode::HEADERS: @@ -54,9 +54,6 @@ class ProtocolStreamReader implements ProtocolReader $this->parsingMode = ParsingMode::HEADERS; $this->headers = []; $this->buffer = ''; - - // after reading a full message, leave to allow different tasks to run - return; } break; }