0
0
mirror of https://github.com/OpenVPN/openvpn.git synced 2024-09-20 12:02:28 +02:00

log file descriptor in more socket related error messages

This add the fd to the epoll event error message and the x_check_status
message. This helps debugging when thing go wrong with event handling.

Also add logging when ep_del fails to remove a socket from the structure.
In constract to ep_ctl that has this as a FATAL message (M_ERR), we only
log here since the code has been ignoring the status forever there might
be corner cases where a FATAL message could trigger an unintened
regression.

PATCH v2: Fix wrong order of fd,code in printed message.

Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20210403123000.17688-1-arne@rfc2549.org>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg22008.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
Arne Schwabe 2021-04-03 14:30:00 +02:00 committed by Gert Doering
parent c5fec838e7
commit 8ccce69dc1
2 changed files with 10 additions and 6 deletions

View File

@ -690,15 +690,15 @@ x_check_status(int status,
{ {
if (extended_msg) if (extended_msg)
{ {
msg(x_cs_info_level, "%s %s [%s]: %s (code=%d)", description, msg(x_cs_info_level, "%s %s [%s]: %s (fd=%d,code=%d)", description,
sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "", sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "",
extended_msg, strerror(my_errno), my_errno); extended_msg, strerror(my_errno), sock ? sock->sd : -1, my_errno);
} }
else else
{ {
msg(x_cs_info_level, "%s %s: %s (code=%d)", description, msg(x_cs_info_level, "%s %s: %s (fd=%d,code=%d)", description,
sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "", sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "",
strerror(my_errno), my_errno); strerror(my_errno), sock ? sock->sd : -1, my_errno);
} }
if (x_cs_err_delay_ms) if (x_cs_err_delay_ms)

View File

@ -555,7 +555,10 @@ ep_del(struct event_set *es, event_t event)
ASSERT(!eps->fast); ASSERT(!eps->fast);
CLEAR(ev); CLEAR(ev);
epoll_ctl(eps->epfd, EPOLL_CTL_DEL, event, &ev); if (epoll_ctl(eps->epfd, EPOLL_CTL_DEL, event, &ev) < 0)
{
msg(M_WARN|M_ERRNO, "EVENT: epoll_ctl EPOLL_CTL_DEL failed, sd=%d", (int)event);
}
} }
static void static void
@ -844,7 +847,8 @@ po_wait(struct event_set *es, const struct timeval *tv, struct event_set_return
} }
else if (pfdp->revents) else if (pfdp->revents)
{ {
msg(D_EVENT_ERRORS, "Error: poll: unknown revents=0x%04x", (unsigned int)pfdp->revents); msg(D_EVENT_ERRORS, "Error: poll: unknown revents=0x%04x for fd=%d",
(unsigned int)pfdp->revents, pfdp->fd);
} }
++pfdp; ++pfdp;
} }