Tarantool development patches archive
 help / color / mirror / Atom feed
From: Alexander Turenko <alexander.turenko@tarantool.org>
To: Kirill Shcherbatov <kshcherbatov@tarantool.org>
Cc: tarantool-patches@freelists.org,
	Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Subject: [tarantool-patches] Re: [PATCH v1 1/1] box: fix custom delimiter for telnet connection
Date: Tue, 5 Mar 2019 19:12:16 +0300	[thread overview]
Message-ID: <20190305161216.hw754lk573srhshr@tkn_work_nb> (raw)
In-Reply-To: <2065a2cd-79bc-31d9-f55e-3972de01b49a@tarantool.org>

We discussed it a bit more voicely and Kirill fixed some comments. I'll
put them below for the record.

LGTM then.

Vlad, can you, please, look at the patch?

On Tue, Mar 05, 2019 at 05:41:10PM +0300, Kirill Shcherbatov wrote:
> On 05.03.2019 16:43, Alexander Turenko wrote:
> > This patch looks good for me, except several minor things.
> Hi! Thank you for review. Fixed everything.
> 
> ============================================
> 
> In order to give a user ability to use a delimiter symbol within a
> code the real delimiter is user-provided 'delim' plus "\n".
> Since telnet sends "\r\n" on line break, the updated expression
> delim + "\n" could not be found in a sequence data+delim+"\r\n",
> so delimiter feature did not work at all.
> Added delim + "\r" check along with delim + "\n", that solves the
> described problem and does not violate backward compatibility.
> 
> Closes #2027
> ---
>  src/box/lua/console.lua       | 12 +++++++++---
>  test/app-tap/console.test.lua | 14 +++++++++++++-
>  2 files changed, 22 insertions(+), 4 deletions(-)
> 
> diff --git a/src/box/lua/console.lua b/src/box/lua/console.lua
> index 028001127..74e9addad 100644
> --- a/src/box/lua/console.lua
> +++ b/src/box/lua/console.lua
> @@ -344,8 +344,14 @@ end
>  -- Read command from connected client console.listen()
>  --
>  local function client_read(self)
> -    local delim = self.delimiter .. "\n"
> -    local buf = self.client:read(delim)
> +    --
> +    -- Byte sequences that come over the network and come from
> +    -- the local client console may have a different terminal
> +    -- character. We support bouth possible options: CR and LF.
> +    --

Typo: bouth -> both.

CR and LF -> LF and CRLF.

> +    local delim_cr = self.delimiter .. "\r"
> +    local delim_lf = self.delimiter .. "\n"
> +    local buf = self.client:read({delimiter = {delim_lf, delim_cr}})
>      if buf == nil then
>          return nil
>      elseif buf == "" then
> @@ -355,7 +361,7 @@ local function client_read(self)
>          return nil
>      end
>      -- remove trailing delimiter
> -    return buf:sub(1, -#delim-1)
> +    return buf:sub(1, -#self.delimiter-2)
>  end
>  
>  --
> diff --git a/test/app-tap/console.test.lua b/test/app-tap/console.test.lua
> index 4f915afd7..ccd33a2d0 100755
> --- a/test/app-tap/console.test.lua
> +++ b/test/app-tap/console.test.lua
> @@ -21,7 +21,7 @@ local EOL = "\n...\n"
>  
>  test = tap.test("console")
>  
> -test:plan(59)
> +test:plan(61)
>  
>  -- Start console and connect to it
>  local server = console.listen(CONSOLE_SOCKET)
> @@ -255,6 +255,18 @@ box.session.on_connect(nil, console_on_connect)
>  box.session.on_disconnect(nil, console_on_disconnect)
>  box.session.on_auth(nil, console_on_auth)
>  
> +
> +--
> +-- gh-2027: Fix custom delimiter for console connection.

console -> telnet

> +--
> +client = socket.tcp_connect("unix/", CONSOLE_SOCKET)
> +_ = client:read(128)
> +client:write("console = require('console'); console.delimiter('#');\n")
> +test:is(yaml.decode(client:read(EOL))[1], nil, "session type")
> +client:write("box.NULL#\r\n")
> +test:is(yaml.decode(client:read(EOL))[1], box.NULL, "test new delimiter")
> +client:close()
> +
>  --
>  -- gh-2642 "box.session.type()"
>  --
> -- 
> 2.21.0

  reply	other threads:[~2019-03-05 16:12 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-21  7:34 [tarantool-patches] " Kirill Shcherbatov
2019-03-05 13:43 ` [tarantool-patches] " Alexander Turenko
2019-03-05 14:41   ` Kirill Shcherbatov
2019-03-05 16:12     ` Alexander Turenko [this message]
2019-03-07 10:16 ` Kirill Yukhin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190305161216.hw754lk573srhshr@tkn_work_nb \
    --to=alexander.turenko@tarantool.org \
    --cc=kshcherbatov@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='[tarantool-patches] Re: [PATCH v1 1/1] box: fix custom delimiter for telnet connection' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox