]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Handle empty DB scenario and avoid error on Reset Query PDU received
authorpcarana <pc.moreno2099@gmail.com>
Tue, 15 Oct 2019 22:21:09 +0000 (17:21 -0500)
committerpcarana <pc.moreno2099@gmail.com>
Fri, 25 Oct 2019 22:36:22 +0000 (17:36 -0500)
src/rtr/db/vrps.c
src/rtr/pdu_handler.c

index 4279f14d38ef65d82857ff34f1aaacdb26c4dfa6..9d5dd0b1cc9d94219fcd6b9fe1bf7f29d0f15e98 100644 (file)
@@ -321,6 +321,12 @@ vrps_update(bool *changed)
                        goto revert_base;
                }
        } else {
+               /* There's also an empty base, don't alter state */
+               if (db_table_roa_count(new_base) +
+                   db_table_router_key_count(new_base) == 0) {
+                       rwlock_unlock(&state_lock);
+                       return 0;
+               }
                error = create_empty_delta(&deltas);
                if (error) {
                        rwlock_unlock(&state_lock);
index 5e3d4b6c046d1ca531c38526c244c9fed0612822..f83504653b5ae774ee8c6f94cc9c029a999d6495 100644 (file)
@@ -174,6 +174,12 @@ handle_reset_query_pdu(int fd, struct rtr_request const *request)
        /* See handle_serial_query_pdu() for some comments. */
        switch (error) {
        case 0:
+               /* Assure that cache response is (or was) sent */
+               if (args.started)
+                       break;
+               error = send_cache_response_pdu(fd, args.version);
+               if (error)
+                       return error;
                break;
        case -EAGAIN:
                return err_pdu_send_no_data_available(fd, args.version);