File tree Expand file tree Collapse file tree 4 files changed +17
-7
lines changed
modules/Core.module/submodules Expand file tree Collapse file tree 4 files changed +17
-7
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 1- 6.98
1+ 6.99
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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.
You can’t perform that action at this time.
0 commit comments