aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKnut Auvor Grythe <knut@auvor.no>2015-04-04 08:12:36 +0200
committerroot <root@einstein.tg15.gathering.org>2015-04-04 08:12:36 +0200
commitb62cd617019e31c689eb4326591a07e9d58d31af (patch)
treee022796068d73549c1cf1f3dc502289c63af0b40
parentfc1b728836d79156655672c7d625ae5b24434cde (diff)
Proper disconnect handling for smanagrun
-rwxr-xr-xclients/smanagrun.pl5
-rwxr-xr-xinclude/nms.pm10
2 files changed, 9 insertions, 6 deletions
diff --git a/clients/smanagrun.pl b/clients/smanagrun.pl
index 0e2302e..9df4b96 100755
--- a/clients/smanagrun.pl
+++ b/clients/smanagrun.pl
@@ -104,7 +104,7 @@ while (1) {
$error = $sgetallpoll->execute($switch->{sysname});
if (!$error) {
print "Could not execute sgetallpoll\n".$dbh->errstr();
- $conn->close;
+ switch_disconnect($ssh);
next;
}
while (my $row = $sgetallpoll->fetchrow_hashref()) {
@@ -142,8 +142,7 @@ while (1) {
my $result = join("\n", @data);
$sresult->execute($result, $row->{id});
}
- $conn->close();
- waitpid($ssh->{pid}, 0);
+ switch_disconnect($ssh);
$sunlock->execute($switch->{sysname});
};
if ($@) {
diff --git a/include/nms.pm b/include/nms.pm
index e6f4d6c..c61cec7 100755
--- a/include/nms.pm
+++ b/include/nms.pm
@@ -148,9 +148,13 @@ sub switch_timeout {
return ('Set timeout to ' . $timeout);
}
-sub switch_disconnect {
- my ($conn) = @_;
- $conn->close;
+sub switch_disconnect($) {
+ my ($struct) = @_;
+ my $conn = $struct->{telnet};
+ $conn->close();
+ if ($struct->{pid}) {
+ waitpid($struct->{pid}, 0);
+ }
}
sub snmp_open_session {