summary refs log tree commit diff
path: root/user.c
diff options
context:
space:
mode:
Diffstat (limited to 'user.c')
-rw-r--r--user.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/user.c b/user.c
index 719c60e..5d9bc15 100644
--- a/user.c
+++ b/user.c
@@ -88,17 +88,19 @@ skip:
 void
 user_remove(size_t pid)
 {
+	struct Peer *last;
 	size_t i, j;
 
 	for (i = 0; i < peers[pid].channels_c; ++i)
 		channel_exit(peers[pid].channels[i], &peers[pid]);
 
-	for (i = 0; i < peers[peers_c-1].channels_c; ++i)
+	last = &peers[peers_c-1];
+	for (i = 0; i < last->channels_c; ++i)
 	{
-		for (j = 0; j < peers[peers_c-1].channels[i]->users_c; ++j)
-			if (peers[peers_c-1].channels[i]->users[j]->fd == peers[peers_c-1].fd)
+		for (j = 0; j < last->channels[i]->peers_c; ++j)
+			if (last->channels[i]->peers[j].p->fd == last->fd)
 				break;
-		if (j == peers[peers_c-1].channels[i]->users_c)
+		if (j == last->channels[i]->peers_c)
 		{
 			warnx(
 				"user_unlink(): %s@%s doesn't belong to %s, "
@@ -110,7 +112,7 @@ user_remove(size_t pid)
 			continue;
 		}
 
-		peers[peers_c-1].channels[i]->users[j] = &peers[pid];
+		last->channels[i]->peers[j].p = &peers[pid];
 	}
 
 	peers[pid] = peers[--peers_c];