… | |
… | |
34 | use Digest::HMAC_MD6 (); |
34 | use Digest::HMAC_MD6 (); |
35 | |
35 | |
36 | use AE (); |
36 | use AE (); |
37 | use AnyEvent::Socket (); |
37 | use AnyEvent::Socket (); |
38 | use AnyEvent::Handle 4.92 (); |
38 | use AnyEvent::Handle 4.92 (); |
39 | |
|
|
40 | use base Exporter::; |
|
|
41 | |
39 | |
42 | our $PROTOCOL_VERSION = 0; |
40 | our $PROTOCOL_VERSION = 0; |
43 | |
41 | |
44 | =item $listener = mp_listener $host, $port, <constructor-args>, $cb->($transport) |
42 | =item $listener = mp_listener $host, $port, <constructor-args>, $cb->($transport) |
45 | |
43 | |
… | |
… | |
182 | . ";$self->{local_node}" |
180 | . ";$self->{local_node}" |
183 | . ";" . (join ",", @AUTH_RCV) |
181 | . ";" . (join ",", @AUTH_RCV) |
184 | . ";" . (join ",", @FRAMINGS) |
182 | . ";" . (join ",", @FRAMINGS) |
185 | . (join "", map ";$_=$greeting_kv->{$_}", keys %$greeting_kv); |
183 | . (join "", map ";$_=$greeting_kv->{$_}", keys %$greeting_kv); |
186 | |
184 | |
187 | my $lgreeting2 = MIME::Base64::encode_base64 AnyEvent::MP::Base::nonce (33), ""; |
185 | my $lgreeting2 = MIME::Base64::encode_base64 AnyEvent::MP::Base::nonce (66), ""; |
188 | |
186 | |
189 | $self->{hdl}->push_write ("$lgreeting1\012$lgreeting2\012"); |
187 | $self->{hdl}->push_write ("$lgreeting1\012$lgreeting2\012"); |
190 | |
188 | |
191 | # expect greeting |
189 | # expect greeting |
192 | $self->{hdl}->rbuf_max (4 * 1024); |
190 | $self->{hdl}->rbuf_max (4 * 1024); |
… | |
… | |
322 | # first connect with a master node |
320 | # first connect with a master node |
323 | my $via = $self->{remote_node}; |
321 | my $via = $self->{remote_node}; |
324 | $via =~ s/,/!/g; |
322 | $via =~ s/,/!/g; |
325 | $AnyEvent::MP::Base::NODE .= "\@$via"; |
323 | $AnyEvent::MP::Base::NODE .= "\@$via"; |
326 | $AnyEvent::MP::Base::NODE{$AnyEvent::MP::Base::NODE} = $AnyEvent::MP::Base::NODE{""}; |
324 | $AnyEvent::MP::Base::NODE{$AnyEvent::MP::Base::NODE} = $AnyEvent::MP::Base::NODE{""}; |
327 | $AnyEvent::MP::Base::SLAVE->(); |
325 | $AnyEvent::MP::Base::SLAVE->(1); |
328 | } |
326 | } |
329 | |
327 | |
330 | if ($self->{local_node} ne $AnyEvent::MP::Base::NODE) { |
328 | if ($self->{local_node} ne $AnyEvent::MP::Base::NODE) { |
331 | # node changed its name since first greeting |
329 | # node changed its name since first greeting |
332 | $self->send (["", iam => $AnyEvent::MP::Base::NODE]); |
330 | $self->send (["", iam => $AnyEvent::MP::Base::NODE]); |
… | |
… | |
568 | < hmac_md6_64_256;0298d6ba2240faabb2b2e881cf86b97d70a113ca74a87dc006f9f1e9d3010f90;json |
566 | < hmac_md6_64_256;0298d6ba2240faabb2b2e881cf86b97d70a113ca74a87dc006f9f1e9d3010f90;json |
569 | > ["","lookup","pinger","10.0.0.1:4040#nndKd+gn.a","resolved"] |
567 | > ["","lookup","pinger","10.0.0.1:4040#nndKd+gn.a","resolved"] |
570 | |
568 | |
571 | =head1 SEE ALSO |
569 | =head1 SEE ALSO |
572 | |
570 | |
573 | L<AnyEvent>. |
571 | L<AnyEvent::MP>. |
574 | |
572 | |
575 | =head1 AUTHOR |
573 | =head1 AUTHOR |
576 | |
574 | |
577 | Marc Lehmann <schmorp@schmorp.de> |
575 | Marc Lehmann <schmorp@schmorp.de> |
578 | http://home.schmorp.de/ |
576 | http://home.schmorp.de/ |