request-zoneversion false;\n\
resolver-query-timeout 10;\n\
# responselog <boolean>;\n\
- rrset-order { order cyclic; };\n\
+# rrset-order { order cyclic; };\n\
secroots-file \"named.secroots\";\n\
send-cookie true;\n\
serial-query-rate 20;\n\
* Configure the views rrset-order.
*/
{
- const cfg_obj_t *rrsetorder = NULL;
-
- (void)named_config_get(maps, "rrset-order", &rrsetorder);
- dns_order_create(mctx, &order);
- CFG_LIST_FOREACH(rrsetorder, element) {
- const cfg_obj_t *ent = cfg_listelt_value(element);
-
- CHECK(configure_order(order, ent));
- }
+ /*
+ * Detach the old order
+ */
if (view->order != NULL) {
dns_order_detach(&view->order);
}
- dns_order_attach(order, &view->order);
- dns_order_detach(&order);
+
+ const cfg_obj_t *rrsetorder = NULL;
+ if (ISC_R_SUCCESS ==
+ named_config_get(maps, "rrset-order", &rrsetorder))
+ {
+ dns_order_create(mctx, &order);
+ CFG_LIST_FOREACH(rrsetorder, element) {
+ const cfg_obj_t *ent =
+ cfg_listelt_value(element);
+
+ CHECK(configure_order(order, ent));
+ }
+ dns_order_attach(order, &view->order);
+ dns_order_detach(&order);
+ }
}
/*
* Copy the aclenv object.
if (order != NULL) {
rdataset->attributes.order = dns_order_find(
order, name, rdataset->type, rdataset->rdclass);
+ } else {
+ /*
+ * For backward compatibility reasons, we need to behave as if
+ * rrset-order: cyclic was set when no order is configured.
+ *
+ * This was done through the default config, but it came at a
+ * speed penalty.
+ */
+ rdataset->attributes.order = dns_order_cyclic;
}
}