diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/irc.c | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -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) { |
