Package: ircd-ircu
Version: 2.10.12.10.dfsg1-1

ircd-ircu in the apt repository appears to have been compiled with a value
for MAXCONNECTIONS that's larger than what the default Debian configuration
will allow:

  Processing triggers for man-db ...
  Setting up ircd-ircu (2.10.12.10.dfsg1-1) ...
  Starting irc server daemon: ircd-ircuircd fd table too big
  Hard Limit: 1024 IRC max: 1048572
  set MAXCONNECTIONS to a smaller value.

It looks like MAXCONNECTIONS can only be set during compile-time.

>From irc/s_bsd.c:
int init_connection_limits(void)
{
  int limit = os_set_fdlimit(MAXCONNECTIONS);
  if (0 == limit)
    return 1;
  if (limit < 0) {
    fprintf(stderr, "error setting max fd's to %d\n", limit);
  }
  else if (limit > 0) {
    fprintf(stderr, "ircd fd table too big\nHard Limit: %d IRC max: %d\n",
            limit, MAXCONNECTIONS);
    fprintf(stderr, "set MAXCONNECTIONS to a smaller value");
  }
  return 0;
}

Then from ircd/os_generic.c:
int os_set_fdlimit(unsigned int max_descriptors)
{
#if defined(HAVE_SETRLIMIT) && defined(RLIMIT_FD_MAX)
  struct rlimit limit;

  if (!getrlimit(RLIMIT_FD_MAX, &limit)) {
    if (limit.rlim_max < max_descriptors)
      return limit.rlim_max;
    limit.rlim_cur = limit.rlim_max;    /* make soft limit the max */
    return setrlimit(RLIMIT_FD_MAX, &limit);
  }
#endif /* defined(HAVE_SETRLIMIT) && defined(RLIMIT_FD_MAX) */
  return 0;
}

When rebuilding from source via debuild, the value for MAXCONNECTIONS gets
set to 1020 on all systems I have access to.

Also tried setting the ulimit to 1048572 in the init script via:
  ulimit -H -n 1048572

However that causes the system to lag horribly while ircd starts up, apparetly
eating a ton of memory, then it exits.  The tail end of the 74MiB output from
strace -f /etc/init.d/ircd-ircu start is:

bind(6, {sa_family=AF_INET, sin_port=htons(6667), 
sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(6, 128)                          = 0

<snipped for berevity>

bind(8, {sa_family=AF_INET6, sin6_port=htons(7007), inet_pton(AF_INET6, "::", 
&sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
epoll_ctl(0, EPOLL_CTL_ADD, 8, {EPOLLIN, {u32=8199648, u64=8199648}}) = 0
write(2, "MAXCLIENTS (or MAXCONNECTIONS) is"..., 92) = 92
exit_group(-1)                          = ?
Process 12438 detached

So it appears to start up, starts listening to the network, then exits.

The system is Debian/lenny on amd64.

-- DN
Daniel



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to