aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/rpki/left_right.py10
-rw-r--r--rpkid/rpki/xml_utils.py14
2 files changed, 20 insertions, 4 deletions
diff --git a/rpkid/rpki/left_right.py b/rpkid/rpki/left_right.py
index 77336b60..3308d7e6 100644
--- a/rpkid/rpki/left_right.py
+++ b/rpkid/rpki/left_right.py
@@ -762,6 +762,14 @@ class child_elt(data_elt):
self.clear_https_ta_cache = False
cb()
+ def serve_destroy_hook(self, cb, eb):
+ """
+ Extra server actions when destroying a child_elt.
+ """
+ def loop(iterator, child_cert):
+ child_cert.revoke(iterator, eb)
+ rpki.async.iterator(self.child_certs(), loop, cb)
+
def endElement(self, stack, name, text):
"""
Handle subelements of <child/> element. These require special
@@ -926,7 +934,7 @@ class msg(rpki.xml_utils.msg, left_right_namespace):
def done():
cb(r_msg)
- rpki.async.iterator(self, loop, done, unwind_stack = True)
+ rpki.async.iterator(self, loop, done)
class sax_handler(rpki.xml_utils.sax_handler):
"""
diff --git a/rpkid/rpki/xml_utils.py b/rpkid/rpki/xml_utils.py
index 86459bac..86b51c2e 100644
--- a/rpkid/rpki/xml_utils.py
+++ b/rpkid/rpki/xml_utils.py
@@ -351,14 +351,22 @@ class data_elt(base_elt):
r_msg.append(r_pdu)
cb()
+ def serve_destoy_hook(self, cb, eb):
+ """
+ Overridable hook.
+ """
+ cb()
+
def serve_destroy(self, r_msg, cb, eb):
"""
Handle a destroy action.
"""
+ def done():
+ db_pdu.sql_delete()
+ r_msg.append(self.make_reply())
+ cb()
db_pdu = self.serve_fetch_one()
- db_pdu.sql_delete()
- r_msg.append(self.make_reply())
- cb()
+ db_pdu.serve_destroy_hook(done, eb)
def serve_dispatch(self, r_msg, cb, eb):
"""