Don't loop forever on authentication failure. If the first attempt to
[sgt/utils] / nntpid / nntpid
index d9b47c0..f1544bb 100755 (executable)
@@ -99,6 +99,7 @@ if ($all) {
 $ns=$ENV{'NNTPSERVER'};
 if (!defined $ns or !length $ns) {
   $ns = `cat /etc/nntpserver`;
+  chomp $ns;
 }
 $port = (getservbyname("nntp", "tcp"))[2];
 $ns = inet_aton($ns);
@@ -173,7 +174,12 @@ sub getline {
 
 sub docmd {
   my ($cmd) = @_;
-  while (1) {
+  # We go at most twice round the following loop. If the first attempt
+  # to fetch the article fails with a 480 response, we try again
+  # having authenticated first; but if the second attempt also fails
+  # with 480, then the authentication didn't work, so we should give
+  # up rather than try it pointlessly again.
+  for my $n (0,1) {
     &putline($cmd);
     $line = &getline;
     if ($code eq "480") { &auth; } else { last; }