Test and fix primary-read

This commit is contained in:
Vitaliy Filippov
2020-02-09 19:17:32 +03:00
parent 235d15422c
commit 97d3fc593c
10 changed files with 297 additions and 19 deletions
+6 -8
View File
@@ -193,19 +193,17 @@ int osd_t::handle_epoll_events()
else
{
auto & cl = clients[events[i].data.fd];
if (events[i].events & EPOLLRDHUP)
if (cl.peer_state == PEER_CONNECTING)
{
// Either OUT (connected) or HUP
handle_connect_result(cl.peer_fd);
}
else if (events[i].events & EPOLLRDHUP)
{
// Stop client
printf("osd: client %d disconnected\n", cl.peer_fd);
stop_client(cl.peer_fd);
}
else if (cl.peer_state == PEER_CONNECTING)
{
if (events[i].events & EPOLLOUT)
{
handle_connect_result(cl.peer_fd);
}
}
else if (!cl.read_ready)
{
// Mark client as ready (i.e. some data is available)