#15 _event_rpl_whoreply is Invalid for *

MAIN (11)

Ok, basically what happens is A WHO reply is meant to
return with a channel. As i understand it many servers
return the last one you joined. Some servers however
always return *. Gennerally * only should be returned
when the user IS NOT in a channel.

The bug is this, if a user has OP in a channel, and
then the bot recives a WHO reply with * for the
channels, the WHO reply will only show H (and possibly
o for IRCOP) in the WHO reply. The Bot will then take
this * and its Mode String and apply it to ALL the
channels the user is in, thus the bot will belive the
user no longer has OP. The affecting code is in
messagehandler.php around line 321. I have coded my way
around this, not in the nicest way, however if it helps.

if ($ircdata->channel == '*') {
// we got who info without channel
info, so we need to search the user
// on all channels and update him
foreach ($this->_channels as $channel) {
if ($this->isJoined($channel->name,
$nick)) {
$ircdata->channel = $channel->name;

// if we do this, it means we
dont have WHO info (on ops and such)
// for the channel so set the
// flag to true

$this->_event_rpl_whoreply($ircdata, TRUE);

then slightly lower
$user->op = false;
$user->voice = false;

and also

function _event_rpl_whoreply(&$ircdata,
$noChannelSpecificInfo = FALSE)

in the function definition.


  • Mirco Bauer

    Mirco Bauer - 2004-09-24

    Logged In: YES

    indeed this is a bug, problem though your code doesnt fix
    the situation if something is an op on channel a but not on
    b and then the WHO reply with * tells he is op, it would set
    the op to true also on channel b. I will work on this.
    thanks for your bugreport

  • Mirco Bauer

    Mirco Bauer - 2004-09-24
    • labels: --> MAIN
    • priority: 5 --> 6
    • assigned_to: nobody --> meebey

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks