diff --git a/ipaacalib/cpp/src/ipaaca-buffers.cc b/ipaacalib/cpp/src/ipaaca-buffers.cc
index 63f52f234fbd264fa8b5e49f3f60ecfe45a2d07b..b1993773c45a47c535b6d01952aa169b8e9f58cc 100644
--- a/ipaacalib/cpp/src/ipaaca-buffers.cc
+++ b/ipaacalib/cpp/src/ipaaca-buffers.cc
@@ -183,6 +183,12 @@ IPAACA_EXPORT boost::shared_ptr<int> CallbackIUPayloadUpdate::call(const std::st
 	} else if (iu->retracted()) {
 		iu->_revision_lock.unlock();
 		return boost::shared_ptr<int>(new int(0));
+	} else if (iu->committed()) {
+		iu->_revision_lock.unlock();
+		return boost::shared_ptr<int>(new int(0));
+	} else if (iu->retracted()) {
+		iu->_revision_lock.unlock();
+		return boost::shared_ptr<int>(new int(0));
 	}
 	if (update->is_delta) {
 		// FIXME TODO this is an unsolved problem atm: deletions in a delta update are
@@ -220,6 +226,12 @@ IPAACA_EXPORT boost::shared_ptr<int> CallbackIULinkUpdate::call(const std::strin
 	} else if (iu->retracted()) {
 		iu->_revision_lock.unlock();
 		return boost::shared_ptr<int>(new int(0));
+	} else if (iu->committed()) {
+		iu->_revision_lock.unlock();
+		return boost::shared_ptr<int>(new int(0));
+	} else if (iu->retracted()) {
+		iu->_revision_lock.unlock();
+		return boost::shared_ptr<int>(new int(0));
 	}
 	if (update->is_delta) {
 		iu->modify_links(update->new_links, update->links_to_remove, update->writer_name);