diff options
| author | Doug Barton <dougb@FreeBSD.org> | 2010-03-02 19:49:55 +0000 | 
|---|---|---|
| committer | Doug Barton <dougb@FreeBSD.org> | 2010-03-02 19:49:55 +0000 | 
| commit | 841024d54f1f0a07feccf84d8938b00bc1f362b5 (patch) | |
| tree | c470abc978aa6ca4f6b0033d7e09c8b7b09cd629 /lib/isc/unix | |
| parent | 51917575cfd35d6a201b010726ea7404a0f9bb7e (diff) | |
Diffstat (limited to 'lib/isc/unix')
| -rw-r--r-- | lib/isc/unix/ifiter_getifaddrs.c | 6 | ||||
| -rw-r--r-- | lib/isc/unix/socket.c | 31 | 
2 files changed, 25 insertions, 12 deletions
| diff --git a/lib/isc/unix/ifiter_getifaddrs.c b/lib/isc/unix/ifiter_getifaddrs.c index b576d4632fbb..87ef9ba7f500 100644 --- a/lib/isc/unix/ifiter_getifaddrs.c +++ b/lib/isc/unix/ifiter_getifaddrs.c @@ -1,5 +1,5 @@  /* - * Copyright (C) 2004, 2005, 2007, 2008  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009  Internet Systems Consortium, Inc. ("ISC")   * Copyright (C) 2003  Internet Software Consortium.   *   * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@   * PERFORMANCE OF THIS SOFTWARE.   */ -/* $Id: ifiter_getifaddrs.c,v 1.11 2008/03/20 23:47:00 tbox Exp $ */ +/* $Id: ifiter_getifaddrs.c,v 1.11.120.2 2009/09/24 23:47:34 tbox Exp $ */  /*! \file   * \brief @@ -181,7 +181,7 @@ internal_current(isc_interfaceiter_t *iter) {  			 ifa->ifa_name);  	if (ifa->ifa_dstaddr != NULL && -	    (iter->current.flags & IFF_POINTOPOINT) != 0) +	    (iter->current.flags & INTERFACE_F_POINTTOPOINT) != 0)  		get_addr(family, &iter->current.dstaddress, ifa->ifa_dstaddr,  			 ifa->ifa_name); diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index d09fe51ab57c..004a038a3a88 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -1,5 +1,5 @@  /* - * Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010  Internet Systems Consortium, Inc. ("ISC")   * Copyright (C) 1998-2003  Internet Software Consortium.   *   * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@   * PERFORMANCE OF THIS SOFTWARE.   */ -/* $Id: socket.c,v 1.308.12.8 2009/04/18 01:29:26 jinmei Exp $ */ +/* $Id: socket.c,v 1.308.12.12 2010/01/31 23:47:31 tbox Exp $ */  /*! \file */ @@ -1520,12 +1520,22 @@ doio_recv(isc_socket_t *sock, isc_socketevent_t *dev) {  	}  	/* -	 * On TCP, zero length reads indicate EOF, while on -	 * UDP, zero length reads are perfectly valid, although -	 * strange. +	 * On TCP and UNIX sockets, zero length reads indicate EOF, +	 * while on UDP sockets, zero length reads are perfectly valid, +	 * although strange.  	 */ -	if ((sock->type == isc_sockettype_tcp) && (cc == 0)) -		return (DOIO_EOF); +	switch (sock->type) { +	case isc_sockettype_tcp: +	case isc_sockettype_unix: +		if (cc == 0) +			return (DOIO_EOF); +		break; +	case isc_sockettype_udp: +		break; +	case isc_sockettype_fdwatch: +	default: +		INSIST(0); +	}  	if (sock->type == isc_sockettype_udp) {  		dev->address.length = msghdr.msg_namelen; @@ -3645,7 +3655,7 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {  					  manager->maxsocks);  	if (manager->fdpollinfo == NULL) {  		isc_mem_put(mctx, manager->events, -			    sizeof(pollinfo_t) * manager->maxsocks); +			    sizeof(struct pollfd) * manager->nevents);  		return (ISC_R_NOMEMORY);  	}  	memset(manager->fdpollinfo, 0, sizeof(pollinfo_t) * manager->maxsocks); @@ -4851,6 +4861,7 @@ isc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr,  	isc_socketmgr_t *manager;  	int cc;  	char strbuf[ISC_STRERRORSIZE]; +	char addrbuf[ISC_SOCKADDR_FORMATSIZE];  	REQUIRE(VALID_SOCKET(sock));  	REQUIRE(addr != NULL); @@ -4919,7 +4930,9 @@ isc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr,  		sock->connected = 0;  		isc__strerror(errno, strbuf, sizeof(strbuf)); -		UNEXPECTED_ERROR(__FILE__, __LINE__, "%d/%s", errno, strbuf); +		isc_sockaddr_format(addr, addrbuf, sizeof(addrbuf)); +		UNEXPECTED_ERROR(__FILE__, __LINE__, "connect(%s) %d/%s", +				 addrbuf, errno, strbuf);  		UNLOCK(&sock->lock);  		inc_stats(sock->manager->stats, | 
