From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: tarantool-patches@freelists.org
Subject: Re: [tarantool-patches] Re: [PATCH 07/11] coio: fix file descriptor leak on accept
Date: Wed, 5 Dec 2018 00:29:17 +0300 [thread overview]
Message-ID: <0f8de03f-4880-36fb-4089-5da7be787308@tarantool.org> (raw)
In-Reply-To: <20181203161658.mvag6vbepsurq6zk@esperanza>
On 03/12/2018 19:16, Vladimir Davydov wrote:
> On Fri, Nov 30, 2018 at 06:39:39PM +0300, Vladislav Shpilevoy wrote:
>> @@ -90,44 +92,46 @@ evio_setsockopt_keepalive(int fd)
>> */
>> int keepcnt = 5;
>> if (sio_setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &keepcnt,
>> - sizeof(int)))
>> - diag_raise();
>> + sizeof(int)) != 0)
>> + return -1;
>> int keepidle = 30;
>>
>> if (sio_setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle,
>> - sizeof(int)))
>> - diag_raise();
>> + sizeof(int)) != 0)
>> + return -1;
>>
>> int keepintvl = 60;
>> if (sio_setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &keepintvl,
>> - sizeof(int)))
>> - diag_raise();
>> + sizeof(int)) != 0)
>> + return -1;
>> #endif
>> + return 0;
>> }
>>
>> /** Set common client socket options. */
>> -void
>> +int
>> evio_setsockopt_client(int fd, int family, int type)
>> {
>> int on = 1;
>> - /* In case this throws, the socket is not leaked. */
>> if (sio_setfl(fd, O_NONBLOCK) != 0)
>> - diag_raise();
>> + return -1;
>> if (type == SOCK_STREAM && family != AF_UNIX) {
>> /*
>> * SO_KEEPALIVE to ensure connections don't hang
>> * around for too long when a link goes away.
>> */
>> - evio_setsockopt_keepalive(fd);
>> + if (evio_setsockopt_keepalive(fd) != 0)
>> + return -1;
>> /*
>> * Lower latency is more important than higher
>> * bandwidth, and we usually write entire
>> * request/response in a single syscall.
>> */
>> if (sio_setsockopt(fd, IPPROTO_TCP, TCP_NODELAY,
>> - &on, sizeof(on)))
>> - diag_raise();
>> + &on, sizeof(on)) != 0)
>> + return -1;
>> }
>> + return 0;
>> }
>>
>> /** Set options for server sockets. */
>> @@ -150,8 +154,9 @@ evio_setsockopt_server(int fd, int family, int type)
>> if (sio_setsockopt(fd, SOL_SOCKET, SO_LINGER,
>> &linger, sizeof(linger)))
>> diag_raise();
>> - if (type == SOCK_STREAM && family != AF_UNIX)
>> - evio_setsockopt_keepalive(fd);
>> + if (type == SOCK_STREAM && family != AF_UNIX &&
>> + evio_setsockopt_keepalive(fd) != 0)
>> + diag_raise();
>> }
>
> I don't like this patch, because apart from fixing the leak, it also
> removes exceptions from some evio functions, but not all of them, e.g.
> evio_setsockopt_keepalive and evio_setsockopt_client are now exception
> free while evio_setsockopt_server is not. And then you have a separate
> patch that removes the rest of exception from evio.
>
> Let's please first remove all exceptions from evio in one go, and only
> then fix the leak?
>
Done. See v2.
next prev parent reply other threads:[~2018-12-04 21:29 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-30 15:39 [PATCH 00/11] SWIM preparation Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 01/11] box: move info_handler interface into src/info Vladislav Shpilevoy
2018-12-03 11:05 ` Vladimir Davydov
2018-12-03 21:48 ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-03 20:41 ` [tarantool-patches] " Konstantin Osipov
2018-12-03 21:48 ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-04 8:52 ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 10/11] evio: remove exceptions Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 11/11] evio: turn into C Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 02/11] sio: remove unused functions, restyle code Vladislav Shpilevoy
2018-12-03 12:28 ` Vladimir Davydov
2018-12-04 21:29 ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-05 8:41 ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 03/11] sio: remove exceptions Vladislav Shpilevoy
2018-12-03 12:36 ` Vladimir Davydov
2018-12-04 21:29 ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-05 8:42 ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 04/11] sio: fix passing negative size_t to sio_add_to_iov Vladislav Shpilevoy
2018-12-03 13:50 ` Vladimir Davydov
2018-12-04 21:29 ` Vladislav Shpilevoy
2018-12-05 8:48 ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 05/11] sio: turn into C Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 06/11] evio: make on_accept be nothrow Vladislav Shpilevoy
2018-12-03 14:58 ` Vladimir Davydov
2018-12-04 21:29 ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-05 8:52 ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 07/11] coio: fix file descriptor leak on accept Vladislav Shpilevoy
2018-12-03 16:16 ` Vladimir Davydov
2018-12-04 21:29 ` Vladislav Shpilevoy [this message]
2018-11-30 15:39 ` [PATCH 08/11] coio: fix double close of a file descriptor Vladislav Shpilevoy
2018-12-03 16:19 ` Vladimir Davydov
2018-12-04 21:29 ` [tarantool-patches] " Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 09/11] evio: refactoring Vladislav Shpilevoy
2018-12-03 16:37 ` Vladimir Davydov
2018-12-04 21:29 ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-03 9:47 ` [PATCH 00/11] SWIM preparation Vladimir Davydov
2018-12-03 10:27 ` [tarantool-patches] " Vladislav Shpilevoy
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=0f8de03f-4880-36fb-4089-5da7be787308@tarantool.org \
--to=v.shpilevoy@tarantool.org \
--cc=tarantool-patches@freelists.org \
--cc=vdavydov.dev@gmail.com \
--subject='Re: [tarantool-patches] Re: [PATCH 07/11] coio: fix file descriptor leak on accept' \
/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