aboutsummaryrefslogtreecommitdiffstats
path: root/src/client.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-02-28 15:20:35 +0100
committerMax Kellermann <max@duempel.org>2009-02-28 15:20:35 +0100
commit5c10d2ded7e14a5c155115e27ced5178546f0d05 (patch)
treef0ddae57e95fa0f306e38abb5daaddb7e5ff6339 /src/client.c
parente085deb9444bc049401a4296c3e7ad87659a663a (diff)
downloadmpd-5c10d2ded7e14a5c155115e27ced5178546f0d05.tar.gz
mpd-5c10d2ded7e14a5c155115e27ced5178546f0d05.tar.xz
mpd-5c10d2ded7e14a5c155115e27ced5178546f0d05.zip
client: use sockaddr_to_string()
Removed the sockaddr_to_tmp_string() hack, use the new function sockaddr_to_string() instead.
Diffstat (limited to 'src/client.c')
-rw-r--r--src/client.c52
1 files changed, 7 insertions, 45 deletions
diff --git a/src/client.c b/src/client.c
index f8abb846b..1cfa42aed 100644
--- a/src/client.c
+++ b/src/client.c
@@ -20,6 +20,7 @@
#include "command.h"
#include "conf.h"
#include "listen.h"
+#include "socket_util.h"
#include "permission.h"
#include "event_pipe.h"
#include "idle.h"
@@ -250,51 +251,10 @@ static void client_close(struct client *client)
g_free(client);
}
-static const char *
-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)
+void client_new(int fd, const struct sockaddr *sa, size_t sa_length, int uid)
{
struct client *client;
+ char *remote;
if (num_clients >= client_max_connections) {
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->uid = uid;
+
+ remote = sockaddr_to_string(sa, sa_length, NULL);
g_log(G_LOG_DOMAIN, LOG_LEVEL_SECURE,
- "[%u] opened from %s", client->num,
- sockaddr_to_tmp_string(addr));
+ "[%u] opened from %s", client->num, remote);
+ g_free(remote);
}
static int client_process_line(struct client *client, char *line)