]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2400. [bug] Log if kqueue()/epoll_create()/open(/dev/poll) fails.
authorMark Andrews <marka@isc.org>
Wed, 18 Feb 2009 00:54:25 +0000 (00:54 +0000)
committerMark Andrews <marka@isc.org>
Wed, 18 Feb 2009 00:54:25 +0000 (00:54 +0000)
                        [RT #18297]

CHANGES
lib/isc/unix/socket.c

diff --git a/CHANGES b/CHANGES
index cd071448c43fdf98760f893127de99e52c5ef0f2..5f2d9dce66183162cce432ea712caf979f167db3 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 2476.  [doc]           ARM: improve documentation for max-journal-size and
                        ixfr-from-differences. [RT #15909] [RT #18541]
 
+2400.  [bug]           Log if kqueue()/epoll_create()/open(/dev/poll) fails.
+                       [RT #18297]
+
        --- 9.4.3 released ---
 
 2490.  [port]          aix: work around a kernel bug where IPV6_RECVPKTINFO
index e54ee033c49d0a30455a50cc6b740655c2a360f4..f49b14e8bb747091769d1aa636d249ba86b75581 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: socket.c,v 1.237.18.65 2009/01/22 23:46:01 tbox Exp $ */
+/* $Id: socket.c,v 1.237.18.66 2009/02/18 00:54:25 marka Exp $ */
 
 /*! \file */
 
@@ -3215,6 +3215,9 @@ isc__socketmgr_setreserved(isc_socketmgr_t *manager, isc_uint32_t reserved) {
 static isc_result_t
 setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
        isc_result_t result;
+#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL)
+       char strbuf[ISC_STRERRORSIZE];
+#endif
 
 #ifdef USE_KQUEUE
        manager->nevents = ISC_SOCKET_MAXEVENTS;
@@ -3225,6 +3228,12 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
        manager->kqueue_fd = kqueue();
        if (manager->kqueue_fd == -1) {
                result = isc__errno2result(errno);
+               isc__strerror(errno, strbuf, sizeof(strbuf));
+               UNEXPECTED_ERROR(__FILE__, __LINE__,
+                                "kqueue %s: %s",
+                                isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
+                                               ISC_MSG_FAILED, "failed"),
+                                strbuf);
                isc_mem_put(mctx, manager->events,
                            sizeof(struct kevent) * manager->nevents);
                return (result);
@@ -3248,6 +3257,12 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
        manager->epoll_fd = epoll_create(manager->nevents);
        if (manager->epoll_fd == -1) {
                result = isc__errno2result(errno);
+               isc__strerror(errno, strbuf, sizeof(strbuf));
+               UNEXPECTED_ERROR(__FILE__, __LINE__,
+                                "epoll_create %s: %s",
+                                isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
+                                               ISC_MSG_FAILED, "failed"),
+                                strbuf);
                isc_mem_put(mctx, manager->events,
                            sizeof(struct epoll_event) * manager->nevents);
                return (result);
@@ -3286,6 +3301,12 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
        manager->devpoll_fd = open("/dev/poll", O_RDWR);
        if (manager->devpoll_fd == -1) {
                result = isc__errno2result(errno);
+               isc__strerror(errno, strbuf, sizeof(strbuf));
+               UNEXPECTED_ERROR(__FILE__, __LINE__,
+                                "open(/dev/poll) %s: %s",
+                                isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
+                                               ISC_MSG_FAILED, "failed"),
+                                strbuf);
                isc_mem_put(mctx, manager->events,
                            sizeof(struct pollfd) * manager->nevents);
                isc_mem_put(mctx, manager->fdpollinfo,