… | |
… | |
183 | $self->{hdl}->push_read (line => sub { |
183 | $self->{hdl}->push_read (line => sub { |
184 | my $rgreeting1 = $_[1]; |
184 | my $rgreeting1 = $_[1]; |
185 | |
185 | |
186 | my ($aemp, $version, $rnode, $auths, $framings, @kv) = split /;/, $rgreeting1; |
186 | my ($aemp, $version, $rnode, $auths, $framings, @kv) = split /;/, $rgreeting1; |
187 | |
187 | |
|
|
188 | $self->{remote_node} = $rnode; |
|
|
189 | |
|
|
190 | $self->{remote_greeting} = { |
|
|
191 | map /^([^=]+)(?:=(.*))?/ ? ($1 => $2) : (), |
|
|
192 | @kv |
|
|
193 | }; |
|
|
194 | |
188 | if ($aemp ne "aemp") { |
195 | if ($aemp ne "aemp") { |
189 | return $self->error ("unparsable greeting"); |
196 | return $self->error ("unparsable greeting"); |
190 | } elsif ($version != $PROTOCOL_VERSION) { |
197 | } elsif ($version != $PROTOCOL_VERSION) { |
191 | return $self->error ("version mismatch (we: $PROTOCOL_VERSION, they: $version)"); |
198 | return $self->error ("version mismatch (we: $PROTOCOL_VERSION, they: $version)"); |
192 | } elsif ($rnode eq $self->{local_node}) { |
199 | } elsif ($rnode eq $AnyEvent::MP::Kernel::NODE) { |
193 | AnyEvent::MP::Global::avoid_seed ($self->{seed}) |
|
|
194 | if exists $self->{seed}; |
|
|
195 | |
|
|
196 | return $self->error ("I refuse to talk to myself"); |
200 | return $self->error ("I refuse to talk to myself"); |
197 | } elsif ($AnyEvent::MP::Kernel::NODE{$rnode} && $AnyEvent::MP::Kernel::NODE{$rnode}{transport}) { |
201 | } elsif ($AnyEvent::MP::Kernel::NODE{$rnode} && $AnyEvent::MP::Kernel::NODE{$rnode}{transport}) { |
198 | return $self->error ("$rnode already connected, not connecting again."); |
202 | return $self->error ("$rnode already connected, not connecting again."); |
199 | } |
203 | } |
200 | |
|
|
201 | $self->{remote_node} = $rnode; |
|
|
202 | |
|
|
203 | $self->{remote_greeting} = { |
|
|
204 | map /^([^=]+)(?:=(.*))?/ ? ($1 => $2) : (), |
|
|
205 | @kv |
|
|
206 | }; |
|
|
207 | |
204 | |
208 | # read nonce |
205 | # read nonce |
209 | $self->{hdl}->push_read (line => sub { |
206 | $self->{hdl}->push_read (line => sub { |
210 | my $rgreeting2 = $_[1]; |
207 | my $rgreeting2 = $_[1]; |
211 | |
208 | |