client: use sockaddr_to_string()
Removed the sockaddr_to_tmp_string() hack, use the new function sockaddr_to_string() instead.
This commit is contained in:
parent
e085deb944
commit
5c10d2ded7
52
src/client.c
52
src/client.c
@ -20,6 +20,7 @@
|
|||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "listen.h"
|
#include "listen.h"
|
||||||
|
#include "socket_util.h"
|
||||||
#include "permission.h"
|
#include "permission.h"
|
||||||
#include "event_pipe.h"
|
#include "event_pipe.h"
|
||||||
#include "idle.h"
|
#include "idle.h"
|
||||||
@ -250,51 +251,10 @@ static void client_close(struct client *client)
|
|||||||
g_free(client);
|
g_free(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
void client_new(int fd, const struct sockaddr *sa, size_t sa_length, int uid)
|
||||||
sockaddr_to_tmp_string(const struct sockaddr *addr)
|
|
||||||
{
|
|
||||||
const char *hostname;
|
|
||||||
|
|
||||||
switch (addr->sa_family) {
|
|
||||||
#ifdef HAVE_TCP
|
|
||||||
case AF_INET:
|
|
||||||
hostname = (const char *)inet_ntoa(((const struct sockaddr_in *)
|
|
||||||
addr)->sin_addr);
|
|
||||||
if (!hostname)
|
|
||||||
hostname = "error getting ipv4 address";
|
|
||||||
break;
|
|
||||||
#ifdef HAVE_IPV6
|
|
||||||
case AF_INET6:
|
|
||||||
{
|
|
||||||
static char host[INET6_ADDRSTRLEN + 1];
|
|
||||||
memset(host, 0, INET6_ADDRSTRLEN + 1);
|
|
||||||
if (inet_ntop(AF_INET6, (const void *)
|
|
||||||
&(((const struct sockaddr_in6 *)addr)->
|
|
||||||
sin6_addr), host,
|
|
||||||
INET6_ADDRSTRLEN)) {
|
|
||||||
hostname = (const char *)host;
|
|
||||||
} else {
|
|
||||||
hostname = "error getting ipv6 address";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#endif /* HAVE_TCP */
|
|
||||||
#ifdef HAVE_UN
|
|
||||||
case AF_UNIX:
|
|
||||||
hostname = "local connection";
|
|
||||||
break;
|
|
||||||
#endif /* HAVE_UN */
|
|
||||||
default:
|
|
||||||
hostname = "unknown";
|
|
||||||
}
|
|
||||||
|
|
||||||
return hostname;
|
|
||||||
}
|
|
||||||
|
|
||||||
void client_new(int fd, const struct sockaddr *addr, int uid)
|
|
||||||
{
|
{
|
||||||
struct client *client;
|
struct client *client;
|
||||||
|
char *remote;
|
||||||
|
|
||||||
if (num_clients >= client_max_connections) {
|
if (num_clients >= client_max_connections) {
|
||||||
g_warning("Max Connections Reached!");
|
g_warning("Max Connections Reached!");
|
||||||
@ -308,9 +268,11 @@ void client_new(int fd, const struct sockaddr *addr, int uid)
|
|||||||
|
|
||||||
client_init(client, fd);
|
client_init(client, fd);
|
||||||
client->uid = uid;
|
client->uid = uid;
|
||||||
|
|
||||||
|
remote = sockaddr_to_string(sa, sa_length, NULL);
|
||||||
g_log(G_LOG_DOMAIN, LOG_LEVEL_SECURE,
|
g_log(G_LOG_DOMAIN, LOG_LEVEL_SECURE,
|
||||||
"[%u] opened from %s", client->num,
|
"[%u] opened from %s", client->num, remote);
|
||||||
sockaddr_to_tmp_string(addr));
|
g_free(remote);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int client_process_line(struct client *client, char *line)
|
static int client_process_line(struct client *client, char *line)
|
||||||
|
@ -30,7 +30,7 @@ struct sockaddr;
|
|||||||
void client_manager_init(void);
|
void client_manager_init(void);
|
||||||
void client_manager_deinit(void);
|
void client_manager_deinit(void);
|
||||||
|
|
||||||
void client_new(int fd, const struct sockaddr *addr, int uid);
|
void client_new(int fd, const struct sockaddr *sa, size_t sa_length, int uid);
|
||||||
|
|
||||||
bool client_is_expired(const struct client *client);
|
bool client_is_expired(const struct client *client);
|
||||||
|
|
||||||
|
@ -455,7 +455,7 @@ listen_in_event(G_GNUC_UNUSED GIOChannel *source,
|
|||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
set_nonblocking(fd);
|
set_nonblocking(fd);
|
||||||
|
|
||||||
client_new(fd, &sockAddr, get_remote_uid(fd));
|
client_new(fd, &sockAddr, socklen, get_remote_uid(fd));
|
||||||
} else if (fd < 0 && errno != EINTR) {
|
} else if (fd < 0 && errno != EINTR) {
|
||||||
g_warning("Problems accept()'ing");
|
g_warning("Problems accept()'ing");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user