From 74b6ff074b421c52e11fad0733ca9490eddc42dd Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Sun, 28 Jul 2019 00:28:36 +0700 Subject: vty/telnet_interface.c: log connection accept() / close() events Unfortunately, osmo_sock_get_name_buf() fails in telnet_close_client(): DLGLOBAL INFO telnet_interface.c:130 Closing telnet connection because getsockname(), getpeername(), and even close() fail with: "Bad file descriptor". This looks like a bug of the existing code. Change-Id: I77b31abfa159d2f269deaa5a08d94b7bbba7d23c --- src/vty/telnet_interface.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/vty/telnet_interface.c b/src/vty/telnet_interface.c index d44754cf..9aa36fe4 100644 --- a/src/vty/telnet_interface.c +++ b/src/vty/telnet_interface.c @@ -123,6 +123,13 @@ extern struct host host; int telnet_close_client(struct osmo_fd *fd) { struct telnet_connection *conn = (struct telnet_connection*)fd->data; + char sock_name_buf[OSMO_SOCK_NAME_MAXLEN]; + int rc; + + /* FIXME: getsockname() always fails: "Bad file descriptor" */ + rc = osmo_sock_get_name_buf(sock_name_buf, OSMO_SOCK_NAME_MAXLEN, fd->fd); + LOGP(DLGLOBAL, LOGL_INFO, "Closing telnet connection %s\n", + (rc <= 0) ? "r=NULL<->l=NULL" : sock_name_buf); close(fd->fd); osmo_fd_unregister(fd); @@ -166,6 +173,7 @@ static int telnet_new_connection(struct osmo_fd *fd, unsigned int what) struct sockaddr_in sockaddr; socklen_t len = sizeof(sockaddr); int new_connection = accept(fd->fd, (struct sockaddr*)&sockaddr, &len); + char sock_name_buf[OSMO_SOCK_NAME_MAXLEN]; int rc; if (new_connection < 0) { @@ -173,6 +181,10 @@ static int telnet_new_connection(struct osmo_fd *fd, unsigned int what) return new_connection; } + rc = osmo_sock_get_name_buf(sock_name_buf, OSMO_SOCK_NAME_MAXLEN, new_connection); + LOGP(DLGLOBAL, LOGL_INFO, "Accept()ed new telnet connection %s\n", + (rc <= 0) ? "r=NULL<->l=NULL" : sock_name_buf); + connection = talloc_zero(tall_telnet_ctx, struct telnet_connection); connection->priv = fd->data; connection->fd.data = connection; -- cgit v1.2.3