[PKG-IRC-Maintainers] Bug#519910: Bug#519910: inspircd: weird and undocumented syntax required for links, accessign clsoed fd's

Giacomo A. Catenazzi cate at debian.org
Tue Mar 17 08:35:23 UTC 2009


Marc Lehmann wrote:
  > when having two servers with the following link lines (without passwords
> etc.):
> 
>    <link name="server2" ipaddr="1.0.0.2"
> 
>    <link name="server1" ipaddr="1.0.0.1"

I assume you intend to use 10.0.0.x. The address space 1.x.x.x is yet unallocated,
but not for local use.

> then despite trying to connect,t he other server will instantly close the
> conenction, without logging a message:
> 
>    accept(11, {sa_family=AF_INET6, sin6_port=htons(41545), inet_pton(AF_INET6, "::ffff:1.0.0.1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 23
>    close(23)                               = 0
>    fcntl(23, F_GETFL)                      = -1 EBADF (Bad file descriptor)
>    fcntl(23, F_SETFL, O_ACCMODE|O_CREAT|O_EXCL|O_NOCTTY|O_TRUNC|O_APPEND|O_NONBLOCK|O_SYNC|O_ASYNC|O_DIRECT|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW|O_NOATIME|O_CLOEXEC|0xfff0003c) = -1 EBADF (Bad file descriptor)
>    setsockopt(23, SOL_SOCKET, SO_SNDBUF, [32768], 4) = -1 EBADF (Bad file descriptor)
> 
> The first problem here is that the socket gets close()ed first, and then
> inspircd tries to access it - when any multithreadeds modules are in use,
> this will poentially damage unrelated file descriptions under the same
> file descriptor.

Yes. Could you provide the log of inspircd? It would be interesting to
understand why inspircd closed the connection.
Anyway I agree: it should not access a closes connection.


> The second problem is that ipv4 addresses are not matched correctly -
> inspircd will try to connect to the correct address, but the receiving
> server requires specification of ::ffff:1.0.0.1 instead of just 1.0.0.1
> for the ip address to match.

Note: One bug report per problem, so that it is easier to track.

Anyway, I think it is correct to have "::ffff:1.0.0.1": it use the
IPv6 notation. The libc and the kernel will handle such address correctly.
The advantage: we can use one API for both protocols (IPv6 and IPv4).

ciao
	cate





More information about the Pkg-irc-maintainers mailing list