Changeset 33290 for lang/perl/tiarra/trunk
- Timestamp:
- 05/14/09 03:10:09 (4 years ago)
- Files:
-
- 1 modified
-
lang/perl/tiarra/trunk/module/Channel/Rejoin.pm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/tiarra/trunk/module/Channel/Rejoin.pm
r11365 r33290 38 38 if ($cmd eq 'PART') { 39 39 foreach my $ch_fullname (split /,/,$msg->param(0)) { 40 $this->check_ channel(40 $this->check_and_rejoin_channel( 41 41 scalar Multicast::detatch($ch_fullname), 42 42 $sender); … … 46 46 # RFC2812によると、複数のチャンネルを持つKICKメッセージが 47 47 # クライアントに届く事は無い。 48 $this->check_ channel(48 $this->check_and_rejoin_channel( 49 49 scalar Multicast::detatch($msg->param(0)), 50 50 $sender); … … 53 53 # 註釈affected-channelsに影響のあったチャンネルのリストが入っているはず。 54 54 foreach (@{$msg->remark('affected-channels')}) { 55 $this->check_ channel($_,$sender);55 $this->check_and_rejoin_channel($_,$sender); 56 56 } 57 57 } … … 60 60 } 61 61 $msg; 62 } 63 64 sub check_and_rejoin_channel { 65 my ($this,$ch_name,$server) = @_; 66 if ($this->check_channel($ch_name,$server)) { 67 $this->rejoin($ch_name,$server); 68 } 62 69 } 63 70 … … 87 94 return; 88 95 } 89 $this->rejoin($ch_name,$server);96 return 1; 90 97 } 91 98 … … 185 192 my ($this,$session) = @_; 186 193 $session->{got_oper} = 1; 194 if (!$this->check_channel($session->{ch_shortname}, $session->{server})) { 195 # 情報を取得している間に状況が変化した 196 RunLoop->shared->notify_msg( 197 "Channel::Rejoin is cancelled to rejoin to $session->{ch_fullname}."); 198 # part/join をやめたので発行すべきコマンドはない。 199 $session->{cmd_buf} = []; 200 # フラグ類のクリーンアップを行う 201 $this->revive($session); 202 return; 203 } 187 204 foreach (qw/PART JOIN/) { 188 205 $session->{server}->send_message(
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)