From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladislav Shpilevoy Subject: [PATCH v2 0/4] Outdate binary session on disconnect Date: Tue, 11 Dec 2018 19:10:19 +0300 Message-Id: To: tarantool-patches@freelists.org Cc: vdavydov.dev@gmail.com List-ID: Once a connection is closed, a user can learn it using on_disconnect triggers. But session methods still work: session.fd() returns socket fd, session.sync() returns request sync, session.push() realy writes data to obuf and sends it to iproto thread. The goal of this patchset is to help user detect session disconnect even without setting on_disconnect triggers. Patchset makes a session, whose socket is closed, rotten. It returns an error on push, -1 on fd, 0 on sync. This is reached via moving struct session_vtab from a global array to struct session and changing the vtab on disconnect. V1: https://www.freelists.org/post/tarantool-patches/PATCH-04-Outdate-disconnected-session Changes in v2: - Store vtab in struct session, remove session_vtab_registry; - Do not change session type on disconnect. Only vtab. Branch: http://github.com/tarantool/tarantool/tree/gerold103/gh-3859-outdate-session-on-disconnect Issue: https://github.com/tarantool/tarantool/issues/3859 Vladislav Shpilevoy (4): console: forbid arbitrary session type setting session: minimize number of session type resets session: store vtab in struct session session: outdate a session of a closed connection src/box/applier.cc | 6 +++- src/box/iproto.cc | 77 +++++++++++++++++++++++++++++------------ src/box/lua/console.c | 15 ++++---- src/box/lua/console.lua | 4 +-- src/box/lua/session.c | 26 ++++++++++---- src/box/session.cc | 19 ++++------ src/box/session.h | 29 +++++++++++----- test/box/push.result | 50 ++++++++++++++++++++++++++ test/box/push.test.lua | 22 ++++++++++++ 9 files changed, 186 insertions(+), 62 deletions(-) -- 2.17.2 (Apple Git-113)