[1167] in Athena Bugs

home help back first fref pref prev next nref lref last post

this affects us too

daemon@ATHENA.MIT.EDU (jtkohl@ATHENA.MIT.EDU)
Thu Oct 13 14:36:03 1988

From: <jtkohl@ATHENA.MIT.EDU>
Date: Thu, 13 Oct 88 14:35:46 EDT
To: bugs@ATHENA.MIT.EDU
Path: bloom-beacon!athena.mit.edu!jtkohl
From: jtkohl@athena.mit.edu (John T Kohl)
Newsgroups: comp.bugs.4bsd
Subject: 4.3BSD: /etc/syslogd doesn't close consoles or UDP ports + FIX
Message-ID: <7457@bloom-beacon.MIT.EDU>
Date: 13 Oct 88 18:34:10 GMT
Sender: daemon@bloom-beacon.MIT.EDU
Reply-To: jtkohl@athena.mit.edu (John T Kohl)
Organization: Massachusetts Institute of Technology
Lines: 54

Index:  etc/syslogd.c 4.3BSD

Description:
	when syslogd is configured to log messages to /dev/console or to
other hosts via the @hostname forwarding conventions, and it is
reconfigured by SIGHUP, it fails to close the file descriptors it uses,
and eventually syslogd will run out of file descriptors.

Repeat-By:
	Put a line in your crontab to hangup syslogd every once in a while.
	Then put a forwarding host line in your /etc/syslog.conf.
	After a lot of hangups, watch syslog complain about a lack of
	file descriptors.  Examining with netstat shows lots of udp *.* ports.

Fix:

This patch closes the appropriate type of file descriptors:

*** syslogd.c   Tue May 27 01:03:20 1986
--- /tmp/syslogd.c      Thu Oct 13 14:24:53 1988
***************
*** 795,804 ****
  
        /*
         *  Close all open log files.
         */
        for (f = Files; f < &Files[NLOGS]; f++) {
!               if (f->f_type == F_FILE || f->f_type == F_TTY)
                        (void) close(f->f_file);
                f->f_type = F_UNUSED;
        }
  
--- 795,811 ----
  
        /*
         *  Close all open log files.
+        *  This includes files, consoles, ttys, and forwarding sockets.
         */
        for (f = Files; f < &Files[NLOGS]; f++) {
!               switch (f->f_type) {
!                   case F_FILE:
!                   case F_TTY:
!                   case F_CONSOLE:
!                   case F_FORW:
                        (void) close(f->f_file);
+                       break;
+               }
                f->f_type = F_UNUSED;
        }
  
John Kohl <jtkohl@ATHENA.MIT.EDU>
Digital Equipment Corporation/MIT Project Athena
(As usual, the opinions expressed above do not necessarily reflect the
opinions of my employer. :-)

home help back first fref pref prev next nref lref last post