diff -r 5e2059b35bc2 -r 6124cc35494e components/ntp/patches/85-getif-eintr.patch --- a/components/ntp/patches/85-getif-eintr.patch Wed Dec 17 23:57:29 2014 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -If getifaddrs blocks on a lock and a SIGALRM happens to fire while it -is block, it will return with EINTR. WE need to detect that and just -try again. - -This is NTP bug 2565. Remove this patch when upgrading to a version that -has bug 2565 fixed in it. - ---- lib/isc/unix/ifiter_getifaddrs.c -+++ lib/isc/unix/ifiter_getifaddrs.c -@@ -55,6 +55,8 @@ isc_interfaceiter_create(isc_mem_t *mctx - isc_interfaceiter_t *iter; - isc_result_t result; - char strbuf[ISC_STRERRORSIZE]; -+ int trys; -+ int ret; - - REQUIRE(mctx != NULL); - REQUIRE(iterp != NULL); -@@ -86,15 +88,21 @@ isc_interfaceiter_create(isc_mem_t *mctx - iter->valid = ISC_R_FAILURE; - #endif - -- if (getifaddrs(&iter->ifaddrs) < 0) { -+ for (trys = 0; trys < 3; trys++) { -+ if ((ret = getifaddrs(&iter->ifaddrs)) >= 0) -+ break; -+ if (errno != EINTR) -+ break; -+ } -+ if (ret < 0) { - isc__strerror(errno, strbuf, sizeof(strbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, -- isc_msgcat_get(isc_msgcat, -- ISC_MSGSET_IFITERGETIFADDRS, -- ISC_MSG_GETIFADDRS, -- "getting interface " -- "addresses: getifaddrs: %s"), -- strbuf); -+ isc_msgcat_get(isc_msgcat, -+ ISC_MSGSET_IFITERGETIFADDRS, -+ ISC_MSG_GETIFADDRS, -+ "getting interface " -+ "addresses: getifaddrs: %s"), -+ strbuf); - result = ISC_R_UNEXPECTED; - goto failure; - }