aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sircbot.c13
1 files 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;