'failed setting up socket' error with BIND9 on Solaris 2.5

Mark Andrews Mark_Andrews at isc.org
Mon Nov 21 13:21:42 UTC 2005


> Hi all,
> 
> I wonder if anyone has experience with BIND9 (9.2.5 or 9.3.1 in this case) on
> a SunOS 5.5.1 (Solaris 2.5) Ultra-2 Box.
> 
> I tried to set up a BIND9 on this machine and everything seems to be ok,
> compiling, installation, resolving - no problems.
> 
> But I did not manage to configure the BIND as a slave for several domains.
> There is not one zonetransfer that did it successfully. Any  attempt of an
> axfr from the slave  to the master fails with the following error:
> 
> --
>  Nov 20 04:20:58 moebius named[5278]: transfer of 'xxxx.de/IN' from
> 192.168.10.12#53: failed setting up socket: socket already bound
> --
> 
> Although I tried out several versions of BIND 9 this error always comes up.
> The socket is definitively NOT used by any other process than the named on
> this machine. As masters there are several versions of BIND, from 4.9 through
> 8.x to 9.2.4 without any other behaviors. 
> 
> At this moment there is unfortunately no way to upgrade to newer solaris on
> the described machine.
> 
> Are there any ideas out there ?
> 
> Any help would be appreciated.
> 
> Thanks in advance !
> 
> Udo 

	Looks like you are dealing with a kernel bug in SunOS 5.5.1.

	My bet is that connect() is complaining that bind() has already
	been called on the socket.  This is done to get the correct
	source address for the packets.

	You should be able to remove the isc_socket_bind() call but
	transfer-source will nolonger be effective for the TCP connection.

	Mark

lib/dns/xfrin.c:
static isc_result_t
xfrin_start(dns_xfrin_ctx_t *xfr) {
        isc_result_t result;
        CHECK(isc_socket_create(xfr->socketmgr,
                                isc_sockaddr_pf(&xfr->sourceaddr),
                                isc_sockettype_tcp,
                                &xfr->socket));
        CHECK(isc_socket_bind(xfr->socket, &xfr->sourceaddr));
        CHECK(isc_socket_connect(xfr->socket, &xfr->masteraddr, xfr->task,
                                 xfrin_connect_done, xfr));
        xfr->connects++;
        return (ISC_R_SUCCESS);
 failure:
        xfrin_fail(xfr, result, "failed setting up socket");
        return (result);
}


--
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742                 INTERNET: Mark_Andrews at isc.org



More information about the bind-users mailing list