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
next prev parent 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