git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1554
c9e4aea6-c8fd-4c43-8297-
357d70d61c8c
+2005-11-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (member_can_send_to_channel): After prodding from
+ reed, always allow remote users to send to a channel.
+
2005-11-14 Carlo Wood <run@alinoe.com>
* ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
2005-11-14 Carlo Wood <run@alinoe.com>
* ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
*
* @param member The membership of the user
* @param reveal If true, the user will be "revealed" on a delayed
*
* @param member The membership of the user
* @param reveal If true, the user will be "revealed" on a delayed
*
* @returns True if the client can speak on the channel.
*/
*
* @returns True if the client can speak on the channel.
*/
- /* Discourage using the Apass to get op. They should use the upass. */
+ /* Do not check for users on other servers: This should be a
+ * temporary desynch, or maybe they are on an older server, but
+ * we do not want to send ERR_CANNOTSENDTOCHAN more than once.
+ */
+ if (!MyUser(member->user))
+ return 1;
+
+ /* Discourage using the Apass to get op. They should use the Upass. */
if (IsChannelManager(member) && member->channel->mode.apass[0])
return 0;
if (IsChannelManager(member) && member->channel->mode.apass[0])
return 0;
+ /* If you have voice or ops, you can speak. */
if (IsVoicedOrOpped(member))
return 1;
if (IsVoicedOrOpped(member))
return 1;
*/
if (member->channel->mode.mode & MODE_MODERATED)
return 0;
*/
if (member->channel->mode.mode & MODE_MODERATED)
return 0;
/* If only logged in users may join and you're not one, you can't speak. */
if (member->channel->mode.mode & MODE_REGONLY && !IsAccount(member->user))
return 0;
/* If only logged in users may join and you're not one, you can't speak. */
if (member->channel->mode.mode & MODE_REGONLY && !IsAccount(member->user))
return 0;
- /*
- * If you're banned then you can't speak either.
- * but because of the amount of CPU time that is_banned chews
- * we only check it for our clients.
- */
- if (MyUser(member->user) && is_banned(member))
+
+ /* If you're banned then you can't speak either. */
+ if (is_banned(member))
return 0;
if (IsDelayedJoin(member) && reveal)
return 0;
if (IsDelayedJoin(member) && reveal)