ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/MP/Global.pm
(Generate patch)

Comparing AnyEvent-MP/MP/Global.pm (file contents):
Revision 1.26 by root, Wed Sep 9 01:47:01 2009 UTC vs.
Revision 1.27 by root, Wed Sep 9 21:05:15 2009 UTC

73 my $peer = $_[0]{local_greeting}{peeraddr}; 73 my $peer = $_[0]{local_greeting}{peeraddr};
74 return unless exists $SEEDS{$peer}; 74 return unless exists $SEEDS{$peer};
75 $SEED_CONNECT{$peer} = 2; 75 $SEED_CONNECT{$peer} = 2;
76}; 76};
77 77
78push @AnyEvent::MP::Transport::HOOK_GREETING, sub {
79 # we rely on untrusted data here (the remote node name)
80 # this is hopefully ok, as we override it on successful
81 # connects, and this can at most be used for DOSing,
82 # which is easy when you can do MITM.
83 my $peer = $_[0]{local_greeting}{peeraddr};
84 return unless exists $SEEDS{$peer};
85 $SEEDS{$peer} ||= $_[0]{remote_node};
86};
87
78push @AnyEvent::MP::Transport::HOOK_CONNECTED, sub { 88push @AnyEvent::MP::Transport::HOOK_CONNECTED, sub {
79 my $peer = $_[0]{local_greeting}{peeraddr}; 89 my $peer = $_[0]{local_greeting}{peeraddr};
80 return unless exists $SEEDS{$peer}; 90 return unless exists $SEEDS{$peer};
81 $SEEDS{$peer} = $_[0]{remote_node}; 91 $SEEDS{$peer} = $_[0]{remote_node};
82}; 92};
96 106
97 my ($host, $port) = AnyEvent::Socket::parse_hostport $seed 107 my ($host, $port) = AnyEvent::Socket::parse_hostport $seed
98 or Carp::croak "$seed: unparsable seed address"; 108 or Carp::croak "$seed: unparsable seed address";
99 109
100 return if $SEED_CONNECT{$seed}; 110 return if $SEED_CONNECT{$seed};
111 return if defined $SEEDS{$seed} && node_is_up $SEEDS{$seed};
101 112
102 $AnyEvent::MP::Kernel::WARN->(9, "trying connect to seed node $seed."); 113 $AnyEvent::MP::Kernel::WARN->(9, "trying connect to seed node $seed.");
103 114
104 # ughhh 115 # ughhh
105 $SEED_CONNECT{$seed} ||= AnyEvent::MP::Transport::mp_connect $host, $port, 116 $SEED_CONNECT{$seed} ||= AnyEvent::MP::Transport::mp_connect $host, $port,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines