diff options
Diffstat (limited to '')
-rw-r--r-- | src/ClientExpire.cxx (renamed from src/client_expire.c) | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/client_expire.c b/src/ClientExpire.cxx index 1ca32ebcc..56b003df8 100644 --- a/src/client_expire.c +++ b/src/ClientExpire.cxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 The Music Player Daemon Project + * Copyright (C) 2003-2013 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -18,41 +18,33 @@ */ #include "config.h" -#include "client_internal.h" +#include "ClientInternal.hxx" +#include "ClientList.hxx" static guint expire_source_id; void -client_set_expired(struct client *client) +Client::SetExpired() { - if (!client_is_expired(client)) - client_schedule_expire(); + if (IsExpired()) + return; - if (client->source_id != 0) { - g_source_remove(client->source_id); - client->source_id = 0; - } - - if (client->channel != NULL) { - g_io_channel_unref(client->channel); - client->channel = NULL; - } + client_schedule_expire(); + BufferedSocket::Close(); } static void -client_check_expired_callback(gpointer data, G_GNUC_UNUSED gpointer user_data) +client_check_expired_callback(Client *client, G_GNUC_UNUSED gpointer user_data) { - struct client *client = data; - - if (client_is_expired(client)) { + if (client->IsExpired()) { g_debug("[%u] expired", client->num); - client_close(client); + client->Close(); } else if (!client->idle_waiting && /* idle clients never expire */ (int)g_timer_elapsed(client->last_activity, NULL) > client_timeout) { g_debug("[%u] timeout", client->num); - client_close(client); + client->Close(); } } |