X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=tests%2Ftest-driver.pl;h=16c09bbf487edfcecd9d357d3e9b62a3c4fd6cc9;hb=80d9ed728be4b02ac483f3339cbb184f6602d15b;hp=669623555d032bccfaeff984e2890da6ff94fcc4;hpb=222e1b0003536cf7b47858961d4b56d45c6d6606;p=srvx.git diff --git a/tests/test-driver.pl b/tests/test-driver.pl index 6696235..16c09bb 100755 --- a/tests/test-driver.pl +++ b/tests/test-driver.pl @@ -86,6 +86,7 @@ POE::Session->create(inline_states => irc_topic => sub {}, irc_error => \&irc_error, irc_disconnected => \&irc_disconnected, + irc_socketerr => \&irc_socketerr, }, args => [@ARGV]); @@ -135,7 +136,7 @@ sub drv_heartbeat { $line = delete $heap->{line}; } elsif (defined($line = <$script>)) { $heap->{lineno} = $.; - print "."; + print "." unless $heap->{irc_debug}; } else { # close all connections foreach my $client (values %{$heap->{clients}}) { @@ -420,6 +421,26 @@ sub irc_disconnected { } } +sub irc_socketerr { + my ($kernel, $session, $heap, $sender, $msg) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0]; + my $client = $heap->{sessions}->{$sender}; + print "Client $client->{name} (re-)connect error: $_[ARG0]\n"; + if ($client->{quitting}) { + $kernel->call($sender, 'unregister', 'all'); + delete $heap->{sessions}->{$sender}; + delete $heap->{clients}->{$client->{name}}; + } else { + if ($client->{disconnect_expected}) { + delete $client->{disconnect_expected}; + } else { + print "Got unexpected disconnect for $client->{name} (nick $client->{nick})\n"; + } + $kernel->call($session, 'disable_client', $client); + $kernel->delay_set('reconnect', $client->{throttled} ? THROTTLED_TIMEOUT : RECONNECT_TIMEOUT, $client); + delete $client->{throttled}; + } +} + sub irc_notice { my ($kernel, $session, $heap, $sender, $from, $to, $text) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0, ARG1, ARG2]; my $client = $heap->{sessions}->{$sender};