Skip to content

Commit 4fec4b5

Browse files
committed
6.99: fixed a few bugs in server burst.
1 parent 0f8e351 commit 4fec4b5

File tree

4 files changed

+17
-7
lines changed

4 files changed

+17
-7
lines changed

INDEV

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1922,5 +1922,11 @@ CHANGES:
19221922
added ->do_mode_string_local() which is the same as ->do_mode_string() except it doesn't tell other servers about the change.
19231923

19241924
98. not sure why but topic information was sent awkwardly between names list and RPL_ENDOF_NAMES.
1925+
1926+
99. fixed a few bugs in server burst.
1927+
1928+
1929+
1930+
19251931

19261932

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.98
1+
6.99

lib/server/mine.pm

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,20 @@ sub send_burst {
8484
# first, send modes of this server.
8585
fire_command($server, aum => v('SERVER'));
8686
fire_command($server, acm => v('SERVER'));
87-
88-
$done{$server} = 1;
89-
$done{v('SERVER')} = 1;
87+
88+
# don't send info for this server or the server we're sending to.
89+
$done{$server} = 1;
90+
$done{ v('SERVER') } = 1;
9091

9192
$do = sub {
9293
my $serv = shift;
9394

9495
# already did this one.
9596
return if $done{$serv};
9697

98+
# we learned about this server from the server we're sending to.
99+
return if defined $serv->{source} && $serv->{source} == $server;
100+
97101
# we need to do the parent first.
98102
if (!$done{$serv->{parent}} && $serv->{parent} != $serv) {
99103
$do->($serv->{parent});
@@ -114,7 +118,7 @@ sub send_burst {
114118
foreach my $user ($main::pool->users) {
115119

116120
# ignore users the server already knows!
117-
next if $user->{server} == $server || $server->{sid} == $user->{source};
121+
next if $user->{server} == $server || $user->{source} == $server;
118122

119123
fire_command($server, uid => $user);
120124

modules/Core.module/submodules/ServerCommands.pm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ sub sid {
168168

169169
my $ref = {};
170170
$ref->{$_} = shift @args foreach qw[parent sid time name proto ircd desc];
171-
$ref->{source} = $server->{sid}; # source = SID we learned about the server from
171+
$ref->{source} = $server; # source = server we learned about the server from
172172

173173
# do not allow SID or server name collisions
174174
if ($main::pool->lookup_server($ref->{sid}) || $main::pool->lookup_server_name($ref->{name})) {
@@ -189,7 +189,7 @@ sub uid {
189189

190190
my $ref = {};
191191
$ref->{$_} = shift @args foreach qw[server uid time modes nick ident host cloak ip real];
192-
$ref->{source} = $server->{sid}; # source = SID we learned about the user from
192+
$ref->{source} = $server; # source = server we learned about the user from
193193
$ref->{location} = $server;
194194
my $modestr = delete $ref->{modes};
195195
# location = the server through which this server can access the user.

0 commit comments

Comments
 (0)