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; }