]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3730] Method to open sockets closes sockets before configuring IfaceMgr.
authorMarcin Siodelski <marcin@isc.org>
Thu, 26 Feb 2015 16:29:05 +0000 (17:29 +0100)
committerMarcin Siodelski <marcin@isc.org>
Thu, 26 Feb 2015 16:29:05 +0000 (17:29 +0100)
Previously, the sockets were closed just before opening a new set of
sockets, rather than before reconfiguring the IfaceMgr. Some steps of the
IfaceMgr reconfiguration failed when sockets were still open, which
effectively led to inability to reconfigure the running server.

src/lib/dhcpsrv/cfg_iface.cc

index 0a6926f40a07d44f73027d5913bd3a52ab58202c..77f23629f9a5010bc835e2fe8bc8737892bcb26f 100644 (file)
@@ -65,6 +65,9 @@ CfgIface::openSockets(const uint16_t family, const uint16_t port,
     // inactive.
     setState(family, !wildcard_used_, true);
     IfaceMgr& iface_mgr = IfaceMgr::instance();
+    // Close any open sockets because we're going to modify some properties
+    // of the IfaceMgr. Those modifications require that sockets are closed.
+    closeSockets();
     // Remove selection of unicast addresses from all interfaces.
     iface_mgr.clearUnicasts();
     // For the DHCPv4 server, if the user has selected that raw sockets
@@ -127,9 +130,6 @@ CfgIface::openSockets(const uint16_t family, const uint16_t port,
         }
     }
 
-    // Before opening any sockets, close existing ones.
-    closeSockets();
-
     // Set the callback which is called when the socket fails to open
     // for some specific interface. This callback will simply log a
     // warning message.