… | |
… | |
196 | $self->{remote_greeting} = { |
196 | $self->{remote_greeting} = { |
197 | map /^([^=]+)(?:=(.*))?/ ? ($1 => $2) : (), |
197 | map /^([^=]+)(?:=(.*))?/ ? ($1 => $2) : (), |
198 | @kv |
198 | @kv |
199 | }; |
199 | }; |
200 | |
200 | |
|
|
201 | # maybe upgrade the protocol |
|
|
202 | if ($protocol eq "aemp" and $aemp =~ /^aemp-\w+$/) { |
|
|
203 | # maybe check for existence of the protocol handler? |
|
|
204 | $self->{protocol} = $protocol = $aemp; |
|
|
205 | } |
|
|
206 | |
201 | $_->($self) for $protocol eq "aemp" ? @HOOK_GREETING : (); |
207 | $_->($self) for $protocol eq "aemp" ? @HOOK_GREETING : (); |
202 | |
208 | |
203 | if ($aemp ne $protocol) { |
209 | if ($aemp ne $protocol and $aemp ne "aemp") { |
204 | return $self->error ("unparsable greeting, expected '$protocol', got '$aemp'"); |
210 | return $self->error ("unparsable greeting, expected '$protocol', got '$aemp'"); |
205 | } elsif ($version != $PROTOCOL_VERSION) { |
211 | } elsif ($version != $PROTOCOL_VERSION) { |
206 | return $self->error ("version mismatch (we: $PROTOCOL_VERSION, they: $version)"); |
212 | return $self->error ("version mismatch (we: $PROTOCOL_VERSION, they: $version)"); |
|
|
213 | } elsif ($protocol eq "aemp") { |
207 | } elsif ($rnode eq $AnyEvent::MP::Kernel::NODE) { |
214 | if ($rnode eq $AnyEvent::MP::Kernel::NODE) { |
208 | return $self->error ("I refuse to talk to myself"); |
215 | return $self->error ("I refuse to talk to myself"); |
209 | } elsif ($AnyEvent::MP::Kernel::NODE{$rnode} && $AnyEvent::MP::Kernel::NODE{$rnode}{transport}) { |
216 | } elsif ($AnyEvent::MP::Kernel::NODE{$rnode} && $AnyEvent::MP::Kernel::NODE{$rnode}{transport}) { |
210 | return $self->error ("$rnode already connected, not connecting again."); |
217 | return $self->error ("$rnode already connected, not connecting again."); |
|
|
218 | } |
211 | } |
219 | } |
212 | |
220 | |
213 | # read nonce |
221 | # read nonce |
214 | $self->{hdl}->push_read (line => sub { |
222 | $self->{hdl}->push_read (line => sub { |
215 | my $rgreeting2 = $_[1]; |
223 | my $rgreeting2 = $_[1]; |