bug-inetutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-inetutils] nowait.%d is not supported?


From: Sergey Poznyakoff
Subject: Re: [bug-inetutils] nowait.%d is not supported?
Date: Sat, 19 Jul 2008 12:32:55 +0300

Maurizio Marini <address@hidden> ha escrit:

> using man inted i see:
>  wait/nowait[.massimo]

Probably you were reading a manpage that came with your system, not the
one from mailutils (see inetd/inetd.8 in the inetutils distribution).
Current version of inetd does not implement the `.max' syntax.  To fix this,
apply the attached patch.

Let me know if it works for you.

Regards,
Sergey

Index: inetd/inetd.c
===================================================================
RCS file: /cvsroot/inetutils/inetutils/inetd/inetd.c,v
retrieving revision 1.41
diff -p -u -r1.41 inetd.c
--- inetd/inetd.c       21 May 2008 04:48:57 -0000      1.41
+++ inetd/inetd.c       19 Jul 2008 09:30:29 -0000
@@ -232,6 +232,7 @@ struct servtab
   int se_socktype;             /* type of socket to use */
   char *se_proto;              /* protocol used */
   pid_t se_wait;               /* single threaded server */
+  unsigned se_max;             /* Maximum number of instances per 60 sec. */
   short se_checked;            /* looked at during merge */
   char *se_user;               /* user name to run as */
   struct biltin *se_bi;                /* if built-in, description */
@@ -528,7 +529,8 @@ main (int argc, char *argv[], char *envp
              {
                if (sep->se_count++ == 0)
                  gettimeofday (&sep->se_time, NULL);
-               else if (sep->se_count >= toomany)
+               else if ((sep->se_max && sep->se_count > sep->se_max)
+                        || sep->se_count >= toomany)
                  {
                    struct timeval now;
 
@@ -1202,24 +1204,37 @@ getconfigent (FILE * fconfig, const char
       if ((strncmp (sep->se_proto, "tcp6", 4) == 0)
          || (strncmp (sep->se_proto, "udp6", 4) == 0))
        {
-         syslog (LOG_ERR, "%s:%lu: %s: IPv6 support isn't eneabled",
+         syslog (LOG_ERR, "%s:%lu: %s: IPv6 support isn't enabled",
                  file, (unsigned long) *line, sep->se_proto);
          continue;
        }
 
       sep->se_family = AF_INET;
 #endif
-
-      if (strcmp (argv[INETD_WAIT], "wait") == 0)
-       sep->se_wait = 1;
-      else if (strcmp (argv[INETD_WAIT], "nowait") == 0)
-       sep->se_wait = 0;
-      else
-       {
-         syslog (LOG_WARNING, "%s:%lu: bad wait type",
-                 file, (unsigned long) *line);
-       }
-
+      {
+       char *p, *q;
+       
+       p = strchr(argv[INETD_WAIT], '.');
+       if (p)
+         *p++ = 0;
+       if (strcmp (argv[INETD_WAIT], "wait") == 0)
+         sep->se_wait = 1;
+       else if (strcmp (argv[INETD_WAIT], "nowait") == 0)
+         sep->se_wait = 0;
+       else
+         {
+           syslog (LOG_WARNING, "%s:%lu: bad wait type",
+                   file, (unsigned long) *line);
+         }
+       if (p)
+         {
+           sep->se_max = strtoul(p, &q, 10);
+           if (*q)
+             syslog (LOG_WARNING, "%s:%lu: invalid number (%s)",
+                     file, (unsigned long) *line, p);
+         }
+      }
+      
       if (ISMUX (sep))
        {
          /*

reply via email to

[Prev in Thread] Current Thread [Next in Thread]