Changeset 33535

Show
Ignore:
Timestamp:
05/24/09 02:28:58 (6 years ago)
Author:
topia
Message:

Support rejoin with a channel can't get +b/+e/+I list without operator
privilege, but requires r33534's change.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/tiarra/trunk/module/Channel/Rejoin.pm

    r33290 r33535  
    2828    # got_oper => 既にPART->JOINしているかどうか。 
    2929    # cmd_buf => ARRAY<Tiarra::IRC::Message> 
     30    # num_got_errors => このチャンネルのエラーをみた回数 
    3031    $this; 
    3132} 
     
    134135        server => $server, 
    135136        cmd_buf => [], 
     137        num_got_errors => 0, 
    136138    }; 
    137139     
     
    174176                    Params => [$ch_name,$_])); 
    175177        } 
     178        $session->{got_elist} = 
     179            $session->{got_blist} = 
     180            $session->{got_Ilist} = 0; 
    176181    } 
    177182    else { 
     
    249254        } 
    250255    }; 
    251      
     256 
    252257    if ($msg->command eq RPL_CHANNELMODEIS) { 
    253258        # MODEリプライ 
     
    289294        } 
    290295    } 
     296    elsif ($msg->command eq ERR_CHANOPRIVSNEEDED) { 
     297        $session = $this->{sessions}->{$msg->param(1)}; 
     298        if (defined $session) { 
     299            $session->{num_got_errors}++; 
     300        } 
     301    } 
    291302 
    292303    # $sessionが空でなければ、必要な情報が全て揃った可能性がある。 
    293304    if (defined $session && !$session->{got_oper} && 
    294         $session->{got_mode} && $session->{got_blist} && 
    295         $session->{got_elist} && $session->{got_Ilist}) { 
     305        $session->{got_mode} && ($session->{got_blist} + 
     306        $session->{got_elist} + $session->{got_Ilist} + 
     307        $session->{num_got_errors}) >= 3) { 
    296308        $this->part_and_join($session); 
    297309    }