diff options
Diffstat (limited to 'server/client.c')
-rw-r--r-- | server/client.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/server/client.c b/server/client.c index 56c5190..02e9862 100644 --- a/server/client.c +++ b/server/client.c @@ -146,6 +146,24 @@ client_flush_host(struct in_addr *host) uloc_hflush(host); } +/* Unlike client_flush_host, this flushes only subs, not locations */ +void +client_flush_princ(char *target) +{ + int i; + Client *client, *next; + String *principal = make_string(target, 0); + + for (i = 0; i < HASHSIZE; i++) { + for (client = client_bucket[i]; client; client = next) { + next = client->next; + if (client->principal == principal) + client_deregister(client, 0); + } + } + free_string(principal); +} + Code_t client_send_clients(void) { |