diff options
-rw-r--r-- | rpkid/rpki/left_right.py | 10 | ||||
-rw-r--r-- | rpkid/rpki/xml_utils.py | 14 |
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): """ |