Changeset 5636

Show
Ignore:
Timestamp:
01/27/08 17:52:28 (5 years ago)
Author:
topia
Message:

lang/perl/tiarra/trunk: * BUGFIX: do not global/local nick convertion for TOPIC content.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/tiarra/trunk/main/Multicast.pm

    r3004 r5636  
    165165} 
    166166 
     167sub _TOPIC_from_server { 
     168    my ($message,$sender) = @_; 
     169    $message->nick(global_to_local($message->nick,$sender)); 
     170 
     171    my $target = $message->params->[0]; 
     172    if (channel_p($target)) { 
     173        # nick(つまり自分)の場合はそのままクライアントに配布。 
     174        # この場合はチャンネルなので、ネットワーク名を付加。 
     175        $message->params->[0] = attach($target,$sender->network_name); 
     176    } 
     177    return $message; 
     178} 
     179 
     180sub _TOPIC_from_client { 
     181    my ($message,$sender) = @_; 
     182    my $to; 
     183    ($message->params->[0],$to) = detach($message->params->[0]); 
     184 
     185    forward_to_server($message,$to); 
     186} 
     187 
    167188sub _NICK_from_client { 
    168189    # ネットワーク名が指定されていたら、その鯖にのみNICKを送信。 
     
    349370    'QUIT' => undef, # QUITしたのが自分だったら捨てる、といった処理はIrcIO::Serverが行なう。 
    350371    'SQUERY' => \&_MODE_from_server, # 多分これは鯖からも来るだろうが、良く分からない。 
    351     'TOPIC' => \&_MODE_from_server, 
     372    'TOPIC' => \&_TOPIC_from_server, 
    352373    'NJOIN' => \&_NJOIN_from_server, 
    353374    (RPL_UNIQOPIS) => \&_RPL_INVITING, # UNIQOPIS (INVITINGと同じ処理) 
     
    413434    'SUMMON' => \&_MODE_from_client, 
    414435    'TIME' => \&_MODE_from_client, 
    415     'TOPIC' => \&_MODE_from_client, 
     436    'TOPIC' => \&_TOPIC_from_client, 
    416437    'TRACE' => \&_MODE_from_client, 
    417438    'UMODE' => \&_MODE_from_client,