]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#93,!51] Enclose option creation in transactions.
authorMarcin Siodelski <marcin@isc.org>
Sun, 7 Oct 2018 16:56:52 +0000 (18:56 +0200)
committerMarcin Siodelski <marcin@isc.org>
Mon, 8 Oct 2018 18:09:51 +0000 (20:09 +0200)
src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc

index 9dc62c071068ef4aa3f8db81c0171f2ed12b0d8d..c3c2713732a8ba4f04f783fe2c60d9892195b082 100644 (file)
@@ -878,6 +878,8 @@ public:
             MySqlBinding::createTimestamp(option->getModificationTime())
         };
 
+        MySqlTransaction transaction(conn_);
+
         OptionDescriptorPtr existing_option = getOption4(selector,
                                                          option->option_->getType(),
                                                          option->space_name_);
@@ -891,6 +893,8 @@ public:
             conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4,
                               in_bindings);
         }
+
+        transaction.commit();
     }
 
     /// @brief Sends query to insert or update DHCP option in a subnet.
@@ -917,6 +921,9 @@ public:
             MySqlBinding::createTimestamp(option->getModificationTime())
         };
 
+
+        MySqlTransaction transaction(conn_);
+
         OptionDescriptorPtr existing_option = getOption4(selector, subnet_id,
                                                          option->option_->getType(),
                                                          option->space_name_);
@@ -931,6 +938,8 @@ public:
             conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4,
                               in_bindings);
         }
+
+        transaction.commit();
     }
 
     void createUpdateOption4(const ServerSelector& selector,
@@ -974,6 +983,8 @@ public:
             MySqlBinding::createTimestamp(option->getModificationTime())
         };
 
+        MySqlTransaction transaction(conn_);
+
         OptionDescriptorPtr existing_option = getOption4(selector, pool_id,
                                                          option->option_->getType(),
                                                          option->space_name_);
@@ -988,6 +999,8 @@ public:
             conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4,
                               in_bindings);
         }
+
+        transaction.commit();
     }
 
     /// @brief Sends query to insert or update DHCP option in a shared network.
@@ -1014,6 +1027,8 @@ public:
             MySqlBinding::createTimestamp(option->getModificationTime())
         };
 
+        MySqlTransaction transaction(conn_);
+
         OptionDescriptorPtr existing_option = getOption4(selector, shared_network_name,
                                                          option->option_->getType(),
                                                          option->space_name_);
@@ -1027,6 +1042,8 @@ public:
         } else {
             conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4, in_bindings);
         }
+
+        transaction.commit();
     }
 
     /// @brief Sends query to retrieve single option definition by code and