]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2400. [bug] Log if kqueue()/epoll_create()/opne(devpoll) fails.
authorTatuya JINMEI 神明達哉 <jinmei@isc.org>
Thu, 24 Jul 2008 05:19:15 +0000 (05:19 +0000)
committerTatuya JINMEI 神明達哉 <jinmei@isc.org>
Thu, 24 Jul 2008 05:19:15 +0000 (05:19 +0000)
[RT #18297]

CHANGES
lib/isc/unix/socket.c

diff --git a/CHANGES b/CHANGES
index 725b51975fd1b992379630559c88003a172c3fbb..e248d9c6d71c21a52d5f8c81c0dc35525c055721 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2400.  [bug]           Log if kqueue()/epoll_create()/opne(devpoll) fails.
+                       [RT #18297]
+
 2399.  [placeholder]
 
 2398.  [placeholder]
index 5a25f4dcf90aedff8f6e21af7fdd14cbe9d34a8d..33425ce809dddb6eb799bc251f28642d8e15f7a5 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: socket.c,v 1.292 2008/07/23 23:47:07 tbox Exp $ */
+/* $Id: socket.c,v 1.293 2008/07/24 05:19:15 jinmei Exp $ */
 
 /*! \file */
 
@@ -3188,6 +3188,9 @@ watcher(void *uap) {
 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;
@@ -3198,6 +3201,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);
@@ -3221,6 +3230,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);
@@ -3259,6 +3274,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,