The code for check_pop() and check_pops() is almost identical, besides
a USESSL => 0/1.  So, factor it out.

Signed-off-by: Hannes Eder <[email protected]>

diff --git a/ldirectord/ldirectord.in b/ldirectord/ldirectord.in
--- a/ldirectord/ldirectord.in
+++ b/ldirectord/ldirectord.in
@@ -2581,9 +2581,9 @@
                if (grep $$v{service} eq $_, ("http", "https", "http_proxy")) {
                        $$r{num_connects} = 0 if (check_http($v, $r) == 
$SERVICE_UP);
                } elsif ($$v{service} eq "pop") {
-                       $$r{num_connects} = 0 if (check_pop($v, $r) == 
$SERVICE_UP);
+                       $$r{num_connects} = 0 if (check_pop($v, $r, 0) == 
$SERVICE_UP);
                } elsif ($$v{service} eq "pops") {
-                       $$r{num_connects} = 0 if (check_pops($v, $r) == 
$SERVICE_UP);
+                       $$r{num_connects} = 0 if (check_pop($v, $r, 1) == 
$SERVICE_UP);
                } elsif ($$v{service} eq "imap") {
                        $$r{num_connects} = 0 if (check_imap($v, $r) == 
$SERVICE_UP);
                } elsif ($$v{service} eq "imaps") {
@@ -2781,15 +2781,15 @@
 sub check_pop
 {
        require Mail::POP3Client;
-       my ($v, $r) = @_;
+       my ($v, $r, $ssl) = @_;
        my $port = ld_checkport($v, $r);
 
-       &ld_debug(2, "Checking pop server=$$r{server} port=$port");
+       &ld_debug(2, "Checking pop server=$$r{server} port=$port ssl=$ssl");
 
        my $pop = new Mail::POP3Client(USER => $$v{login},
                                        PASSWORD => $$v{passwd},
                                        HOST => $$r{server},
-                                       USESSL => 0,
+                                       USESSL => $ssl,
                                        PORT => $port,
                                        DEBUG => 0,
                                        TIMEOUT => $$v{negotiatetimeout});
@@ -2813,41 +2813,6 @@
        return $SERVICE_UP;
 }
 
-sub check_pops
-{
-       require Mail::POP3Client;
-       my ($v, $r) = @_;
-       my $port = ld_checkport($v, $r);
-
-       &ld_debug(2, "Checking pops server=$$r{server} port=$port");
-
-       my $pops = new Mail::POP3Client(USER => $$v{login},
-                                       PASSWORD => $$v{passwd},
-                                       HOST => $$r{server},
-                                       USESSL => 1,
-                                       PORT => $port,
-                                       DEBUG => 0,
-                                       TIMEOUT => $$v{negotiatetimeout});
-       if (!$pops) {
-               service_set($v, $r, "down", {do_log => 1});
-               return $SERVICE_DOWN;
-       }
-
-       if($$v{login} ne "") {
-               my $authres = $pops->login();
-               $pops->close();
-               if (!$authres) {
-                       service_set($v, $r, "down", {do_log => 1});
-                       return $SERVICE_DOWN;
-               }
-       }
-
-
-       $pops->close();
-       service_set($v, $r, "up", {do_log => 1});
-       return $SERVICE_UP;
-}
-
 sub check_imap
 {
        require Net::IMAP::Simple;
_______________________________________________________
Linux-HA-Dev: [email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/

Reply via email to