aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-08-28 20:20:10 +0200
committerMax Kellermann <max@duempel.org>2008-08-28 20:20:10 +0200
commite0fd63ecf82a2a00eed063e52f75e4ef77a0abae (patch)
treec15ccf719a45ced84a8de2769246ac39c2cec381
parent34735fab66eb5f8a4cd65413f09e1ba60f5872a3 (diff)
downloadmpd-e0fd63ecf82a2a00eed063e52f75e4ef77a0abae.tar.gz
mpd-e0fd63ecf82a2a00eed063e52f75e4ef77a0abae.tar.xz
mpd-e0fd63ecf82a2a00eed063e52f75e4ef77a0abae.zip
moved code to sockaddr_to_tmp_string()
Unclutter the client_new() constructor by moving unrelated complex code into a separate function.
-rw-r--r--src/client.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/client.c b/src/client.c
index 7ae000881..2e0106b38 100644
--- a/src/client.c
+++ b/src/client.c
@@ -248,16 +248,10 @@ static void client_close(struct client *client)
free(client);
}
-void client_new(int fd, const struct sockaddr *addr)
+static const char *
+sockaddr_to_tmp_string(const struct sockaddr *addr)
{
const char *hostname;
- struct client *client;
-
- if (num_clients >= client_max_connections) {
- ERROR("Max Connections Reached!\n");
- xclose(fd);
- return;
- }
switch (addr->sa_family) {
#ifdef HAVE_TCP
@@ -293,11 +287,25 @@ void client_new(int fd, const struct sockaddr *addr)
hostname = "unknown";
}
+ return hostname;
+}
+
+void client_new(int fd, const struct sockaddr *addr)
+{
+ struct client *client;
+
+ if (num_clients >= client_max_connections) {
+ ERROR("Max Connections Reached!\n");
+ xclose(fd);
+ return;
+ }
+
client = xcalloc(1, sizeof(*client));
list_add(&client->siblings, &clients);
++num_clients;
client_init(client, fd);
- SECURE("client %i: opened from %s\n", client->num, hostname);
+ SECURE("client %i: opened from %s\n", client->num,
+ sockaddr_to_tmp_string(addr));
}
static int client_process_line(struct client *client)