summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/channels.c15
-rw-r--r--src/irc/core/irc-channels-setup.c2
2 files changed, 14 insertions, 3 deletions
diff --git a/src/core/channels.c b/src/core/channels.c
index 9af8b844..bfde605e 100644
--- a/src/core/channels.c
+++ b/src/core/channels.c
@@ -245,9 +245,18 @@ void channel_send_autocommands(CHANNEL_REC *channel)
if (rec == NULL || rec->autosendcmd == NULL || !*rec->autosendcmd)
return;
- if (rec->botmasks == NULL || !*rec->botmasks) {
- /* just send the command. */
- eval_special_string(rec->autosendcmd, "", channel->server, channel);
+ if (channel->wholist == FALSE) {
+ /* if the autosendcmd alone (with no -bots parameter) has been
+ * specified then send it right after joining the channel, when
+ * the WHO list hasn't been yet retrieved.
+ * Depending on the value of the 'channel_max_who_sync' option
+ * the WHO list might not be retrieved after the join event. */
+
+ if (rec->botmasks == NULL || !*rec->botmasks) {
+ /* just send the command. */
+ eval_special_string(rec->autosendcmd, "", channel->server, channel);
+ }
+
return;
}
diff --git a/src/irc/core/irc-channels-setup.c b/src/irc/core/irc-channels-setup.c
index 2320352d..be69ad63 100644
--- a/src/irc/core/irc-channels-setup.c
+++ b/src/irc/core/irc-channels-setup.c
@@ -25,9 +25,11 @@
void irc_channels_setup_init(void)
{
signal_add("channel wholist", (SIGNAL_FUNC) channel_send_autocommands);
+ signal_add("channel joined", (SIGNAL_FUNC) channel_send_autocommands);
}
void irc_channels_setup_deinit(void)
{
signal_remove("channel wholist", (SIGNAL_FUNC) channel_send_autocommands);
+ signal_remove("channel joined", (SIGNAL_FUNC) channel_send_autocommands);
}