diff options
Diffstat (limited to 'loop.c')
| -rw-r--r-- | loop.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/loop.c b/loop.c index 46c585c..c568c6f 100644 --- a/loop.c +++ b/loop.c @@ -16,11 +16,11 @@ #include "ircd.h" -#include <string.h> - #include <err.h> #include <poll.h> #include <signal.h> +#include <stdio.h> +#include <string.h> #include <time.h> #include <unistd.h> @@ -131,19 +131,31 @@ loop: } if (peers[i].ping && now - peers[i].ping > PEER_PONGTIMEOUT) { - announce( - &peers[i], - ":%s!%s@%s QUIT :Ping Timeout (%llu seconds)", - getnick(&peers[i]), - peers[i].user, - peers[i].host, + snprintf( + peers[i].quit, + sizeof(PEER_QUIT_MAX), + "Ping Timeout (%llu seconds)", now - peers[i].ping ); peers[i].flags |= DELETE; } if (peers[i].flags & DELETE) { - writef(peers[i].fd, "ERROR :Closing Link: %s", peers[i].host); + if (peers[i].type) + announce( + &peers[i], + ":%s!%s@%s QUIT :%s", + getnick(&peers[i]), + peers[i].user, + peers[i].host, + peers[i].quit + ); + writef( + peers[i].fd, + "ERROR :Closing Link: %s (%s)", + peers[i].host, + peers[i].quit + ); close(peers[i].fd); user_remove(i); --i; |