]> git.proxmox.com Git - mirror_corosync-qdevice.git/commit
qnetd: Move client schedule disconnect handling
authorJan Friesse <jfriesse@redhat.com>
Wed, 18 Nov 2020 16:52:12 +0000 (17:52 +0100)
committerJan Friesse <jfriesse@redhat.com>
Wed, 18 Nov 2020 16:58:34 +0000 (17:58 +0100)
commit28d49141f8d1852f89847b10d35042ed6a9392bf
treea7c7e5e718599a31eaeadd9a6432676bcf29ca1a
parent72f9388083957f7edf27f380a9e2b7cbc878a4d1
qnetd: Move client schedule disconnect handling

Client disconnect used to be per client fd in
the qnetd_client_net_socket_poll_loop_set_events_cb. Problem is, that
disconnect calls algorithm which may send message to other client
with fd which was already processed in the pr-poll-loop so POLLOUT is
not set till new loop exec is called (and that usually happens
because old one timeouts). To reproduce this problem use
ffsplit and make qnetd disconnect one of the clients - ffsplit
needs to send ack/nack votes, but it doesn't send them during
first iteration and waits for dpd timeout.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
qdevices/qnetd-client-net.c
qdevices/qnetd-instance.c