… | |
… | |
163 | $greeting_kv->{"tls"} = "1.0" |
163 | $greeting_kv->{"tls"} = "1.0" |
164 | if $arg{tls_ctx}; |
164 | if $arg{tls_ctx}; |
165 | $greeting_kv->{provider} = "AE-$VERSION"; |
165 | $greeting_kv->{provider} = "AE-$VERSION"; |
166 | $greeting_kv->{peeraddr} = AnyEvent::Socket::format_hostport $self->{peerhost}, $self->{peerport}; |
166 | $greeting_kv->{peeraddr} = AnyEvent::Socket::format_hostport $self->{peerhost}, $self->{peerport}; |
167 | |
167 | |
|
|
168 | $self->{local_node} = $AnyEvent::MP::Base::NODE; |
|
|
169 | |
168 | # send greeting |
170 | # send greeting |
169 | my $lgreeting1 = "aemp;$PROTOCOL_VERSION" |
171 | my $lgreeting1 = "aemp;$PROTOCOL_VERSION" |
170 | . ";$AnyEvent::MP::Base::UNIQ" |
172 | . ";$AnyEvent::MP::Base::UNIQ" |
171 | . ";$AnyEvent::MP::Base::NODE" |
173 | . ";$AnyEvent::MP::Base::NODE" |
172 | . ";" . (join ",", @AUTH_RCV) |
174 | . ";" . (join ",", @AUTH_RCV) |
… | |
… | |
267 | |
269 | |
268 | $self->connected; |
270 | $self->connected; |
269 | |
271 | |
270 | my $src_node = $self->{node}; |
272 | my $src_node = $self->{node}; |
271 | |
273 | |
272 | $hdl->push_write ($self->{s_framing} => $_) |
274 | $self->send ($_) |
273 | for @$queue; |
275 | for @$queue; |
274 | |
276 | |
275 | my $rmsg; $rmsg = sub { |
277 | my $rmsg; $rmsg = sub { |
276 | $_[0]->push_read ($r_framing => $rmsg); |
278 | $_[0]->push_read ($r_framing => $rmsg); |
277 | |
279 | |
… | |
… | |
300 | } |
302 | } |
301 | |
303 | |
302 | sub connected { |
304 | sub connected { |
303 | my ($self) = @_; |
305 | my ($self) = @_; |
304 | |
306 | |
|
|
307 | if (ref $AnyEvent::MP::Base::SLAVE) { |
|
|
308 | # first connect with a master node |
|
|
309 | $AnyEvent::MP::Base::NODE .= "\@$self->{remote_node}"; |
|
|
310 | $AnyEvent::MP::Base::NODE{$AnyEvent::MP::Base::NODE} = $AnyEvent::MP::Base::NODE{""}; |
|
|
311 | $AnyEvent::MP::Base::SLAVE->(); |
|
|
312 | } |
|
|
313 | |
|
|
314 | if ($self->{local_node} ne $AnyEvent::MP::Base::NODE) { |
|
|
315 | # node changed its name since first greeting |
|
|
316 | $self->send (["", iam => $AnyEvent::MP::Base::NODE]); |
|
|
317 | } |
|
|
318 | |
305 | my $node = AnyEvent::MP::Base::add_node ($self->{remote_node}); |
319 | my $node = AnyEvent::MP::Base::add_node ($self->{remote_node}); |
306 | Scalar::Util::weaken ($self->{node} = $node); |
320 | Scalar::Util::weaken ($self->{node} = $node); |
307 | $node->set_transport ($self); |
321 | $node->set_transport ($self); |
308 | } |
322 | } |
309 | |
323 | |