mirror of https://gerrit.osmocom.org/libosmocore
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 <error-in-getsockname> because getsockname(), getpeername(), and even close() fail with: "Bad file descriptor". This looks like a bug of the existing code. Change-Id: I77b31abfa159d2f269deaa5a08d94b7bbba7d23c
This commit is contained in:
parent
2605ffc3d7
commit
74b6ff074b
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue