From: Marcin Siodelski Date: Thu, 14 Jun 2018 07:17:19 +0000 (+0200) Subject: Revert "[5649] IfaceMgr's select reacts on sending data over control channel." X-Git-Tag: Kea-1.4.0~1^2~3^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44d01581ce40fe80a8294e97670aafc1c6e40353;p=thirdparty%2Fkea.git Revert "[5649] IfaceMgr's select reacts on sending data over control channel." This reverts commit 83f252d8cd26066e181fe3842f3db20e87001a48. --- diff --git a/src/hooks/dhcp/high_availability/ha_service.cc b/src/hooks/dhcp/high_availability/ha_service.cc index cfef610f16..84cbf1511d 100644 --- a/src/hooks/dhcp/high_availability/ha_service.cc +++ b/src/hooks/dhcp/high_availability/ha_service.cc @@ -33,18 +33,6 @@ using namespace isc::http; using namespace isc::log; using namespace isc::util; -namespace { - -/// @brief Timeout for synchronization of leases with partner. -/// -/// This timeout is very high because in some cases the number of -/// gathered leases is huge. Syncing should not really take that -/// long, but if the partner doesn't respond we can't do anything -/// useful anyway. So, it doesn't really matter. -const long HA_SYNC_TIMEOUT = 60000; - -} - namespace isc { namespace ha { @@ -1227,7 +1215,7 @@ HAService::asyncSyncLeases(http::HttpClient& http_client, post_sync_action(error_message.empty(), error_message); } - }, HttpClient::RequestTimeout(HA_SYNC_TIMEOUT)); + }); } ConstElementPtr diff --git a/src/hooks/dhcp/high_availability/ha_service.h b/src/hooks/dhcp/high_availability/ha_service.h index 5d6325a120..bff04ca006 100644 --- a/src/hooks/dhcp/high_availability/ha_service.h +++ b/src/hooks/dhcp/high_availability/ha_service.h @@ -540,7 +540,7 @@ protected: /// /// If there is an error while inserting or updating any of the leases /// a warning message is logged and the process continues for the - /// remaining leases. The timeout for synchronization is set to 1 minute. + /// remaining leases. /// /// @param http_client reference to the client to be used to communicate /// with the other server. diff --git a/src/lib/dhcp/iface_mgr.cc b/src/lib/dhcp/iface_mgr.cc index 1a7e5b0b5d..c82300cd3b 100644 --- a/src/lib/dhcp/iface_mgr.cc +++ b/src/lib/dhcp/iface_mgr.cc @@ -896,11 +896,9 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ boost::scoped_ptr candidate; IfacePtr iface; fd_set sockets; - fd_set write_sockets; int maxfd = 0; FD_ZERO(&sockets); - FD_ZERO(&write_sockets); /// @todo: marginal performance optimization. We could create the set once /// and then use its copy for select(). Please note that select() modifies @@ -924,17 +922,6 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ if (!callbacks_.empty()) { BOOST_FOREACH(SocketCallbackInfo s, callbacks_) { FD_SET(s.socket_, &sockets); - - // Sometimes we want to react to socket writes, not only to reads. - // However, current use cases are limited to CommandMgr which - // doesn't trigger any callbacks. For all use cases that install - // callbacks we don't react to socket reads being afraid what we - // can break. - /// @todo This whole solution is temporary and implemented for - /// #5649. - if (!s.callback_) { - FD_SET(s.socket_, &write_sockets); - } if (maxfd < s.socket_) { maxfd = s.socket_; } @@ -948,7 +935,7 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ // zero out the errno to be safe errno = 0; - int result = select(maxfd + 1, &sockets, &write_sockets, NULL, &select_timeout); + int result = select(maxfd + 1, &sockets, NULL, NULL, &select_timeout); if (result == 0) { // nothing received and timeout has been reached @@ -1019,11 +1006,9 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ boost::scoped_ptr candidate; fd_set sockets; - fd_set write_sockets; int maxfd = 0; FD_ZERO(&sockets); - FD_ZERO(&write_sockets); /// @todo: marginal performance optimization. We could create the set once /// and then use its copy for select(). Please note that select() modifies @@ -1048,17 +1033,6 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ BOOST_FOREACH(SocketCallbackInfo s, callbacks_) { // Add it to the set as well FD_SET(s.socket_, &sockets); - - // Sometimes we want to react to socket writes, not only to reads. - // However, current use cases are limited to CommandMgr which - // doesn't trigger any callbacks. For all use cases that install - // callbacks we don't react to socket reads being afraid what we - // can break. - /// @todo This whole solution is temporary and implemented for - /// #5649. - if (!s.callback_) { - FD_SET(s.socket_, &write_sockets); - } if (maxfd < s.socket_) { maxfd = s.socket_; } @@ -1072,7 +1046,7 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ // zero out the errno to be safe errno = 0; - int result = select(maxfd + 1, &sockets, &write_sockets, NULL, &select_timeout); + int result = select(maxfd + 1, &sockets, NULL, NULL, &select_timeout); if (result == 0) { // nothing received and timeout has been reached