diff --git a/knotdns.js b/knotdns.js
index 849ebddf5086bfcd8c6609ac4f3f622fd9483cf1..b50f8627819fb21d08d959ac4ede448a1db37358 100644
--- a/knotdns.js
+++ b/knotdns.js
@@ -4,14 +4,23 @@ const exec = util.promisify(require('child_process').exec);
 const config = require('./config');
 
 async function updateRecord(domain, ip) {
-	await exec("/usr/sbin/knotc zone-begin " + config.config().higherLevelDomain);
 	try {
-		await exec("/usr/sbin/knotc zone-unset " + config.config().higherLevelDomain + " " + domain);
+		await exec("/usr/sbin/knotc zone-begin " + config.config().higherLevelDomain);
+		try {
+			await exec("/usr/sbin/knotc zone-unset " + config.config().higherLevelDomain + " " + domain);
+		} catch {
+			console.log("Could not unset domain " + domain);
+		}
+		await exec("/usr/sbin/knotc zone-set " + config.config().higherLevelDomain + " " + domain + " 60 A " + ip);
+		await exec("/usr/sbin/knotc zone-commit " + config.config().higherLevelDomain);
 	} catch {
-		console.log("Could not unset domain " + domain);
+		try {
+			await exec("/usr/sbin/knotc zone-abort " + config.config().higherLevelDomain);
+			console.log("Problem with manipulating DNS zone " + config.config().higherLevelDomain + ". Aborted transaction.");
+		} catch {
+			console.log("Problem with manipulating DNS zone " + config.config().higherLevelDomain + ". Could not even abort transaction.");
+		}
 	}
-	await exec("/usr/sbin/knotc zone-set " + config.config().higherLevelDomain + " " + domain + " 60 A " + ip);
-	await exec("/usr/sbin/knotc zone-commit " + config.config().higherLevelDomain);
 }
 
 module.exports = {