aboutsummaryrefslogtreecommitdiff
path: root/src/irc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/irc.c')
-rw-r--r--src/irc.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/irc.c b/src/irc.c
index 6391ca2..cafd0a0 100644
--- a/src/irc.c
+++ b/src/irc.c
@@ -31,6 +31,7 @@ char bell_type;
char hide_motd;
char start_latch = 0;
char new_scr_status;
+char need_rejoin;
static char msgbuf[MAX_MSG] = { 0 };
static char *msg; /* with source removed */
@@ -454,18 +455,20 @@ static void do_numeric(void) {
break;
case RPL_MOTD:
- /* FIXME: this prevents the user using /MOTD on purpose, too */
if(!hide_motd)
- do_catchall(0);
+ do_catchall(1);
break;
/* don't print, but do trigger rejoin */
case RPL_ENDOFMOTD:
case ERR_NOMOTD:
hide_motd = 0;
- cmd_rejoin_chans();
- if(scr_names[2][0] == '#')
- scr_display(2);
+ if(need_rejoin) {
+ cmd_rejoin_chans();
+ if(scr_names[2][0] == '#')
+ scr_display(2);
+ need_rejoin = 0;
+ }
break;
case RPL_NAMREPLY:
@@ -1046,6 +1049,7 @@ void irc_loop(void) {
/* this stuff happens on every connect. */
hide_motd = conf->hide_motd;
msgbuf[0] = msgbuf_len = regged = irc_away = minutes = 0;
+ need_rejoin = 1;
start_minute_timer();
while(1) {