From d70ad9a3834f53f1fd87fecdc876f3a85100cde4 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 3 Mar 2010 15:23:08 +0000 Subject: avoid send a "join" flood --- sircbot.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sircbot.c b/sircbot.c index 32db75c..4c85772 100644 --- a/sircbot.c +++ b/sircbot.c @@ -316,8 +316,12 @@ static int irc_loop(struct irc_session *sess, struct sircbot_channel *chan, now = time(NULL); /* wait atleast 5 secs before we join a channel */ for (i = 0; i < numchan; i++) - if ((now - chan[i].last_closetime) > 5) + if ((now - chan[i].last_closetime) > 5 + && chan[i].fd < 0) { + printf("DEBUG: joining %s\n", chan[i].name); + chan[i].last_closetime = now; irc_send(sess, "JOIN", chan[i].name); + } irc_reset_pollfds(sess, fds, chan, numchan); @@ -458,13 +462,13 @@ int main(int argc, char *argv[]) signal(SIGTERM, sighandler); openlog("sircbot",0, LOG_DAEMON); - while (!sigterm) { + while (1) { struct irc_session *s = irc_connect(server, port, nick, pass); char buf[256]; if (s == NULL) { log_err(server); - sleep(5); + sleep(10); continue; } @@ -473,6 +477,9 @@ int main(int argc, char *argv[]) /* reset fifos */ for (i = 0; i < argc; i++) close_fifo(&chan[i], 0); + if (sigterm) + break; + sleep(10); } unlink(pidfile); return 0; -- cgit v1.2.3