57 lines
1.7 KiB
Diff
57 lines
1.7 KiB
Diff
Index: zone.c
|
|
===================================================================
|
|
--- zone.c (revision 2480)
|
|
+++ zone.c (revision 2482)
|
|
@@ -181,7 +181,8 @@
|
|
/* also set the prev */
|
|
my_prev = ldns_rdf_clone(origin);
|
|
} else {
|
|
- my_origin = ldns_dname_new_frm_str(".");
|
|
+ my_origin = NULL;
|
|
+ /*my_origin = ldns_dname_new_frm_str(".");*/
|
|
my_prev = NULL;
|
|
}
|
|
|
|
@@ -198,6 +199,10 @@
|
|
}
|
|
soa_seen = true;
|
|
ldns_zone_set_soa(newzone, rr);
|
|
+ /* set origin to soa if not specified */
|
|
+ if (!my_origin) {
|
|
+ my_origin = ldns_rdf_clone(ldns_rr_owner(rr));
|
|
+ }
|
|
continue;
|
|
}
|
|
|
|
Index: rr.c
|
|
===================================================================
|
|
--- rr.c (revision 2480)
|
|
+++ rr.c (revision 2482)
|
|
@@ -417,11 +417,22 @@
|
|
ldns_rr_descriptor_field_type(desc, r_cnt),
|
|
rd);
|
|
|
|
- /* check if the origin should be concatenated */
|
|
- if (rd_strlen > 1 && !ldns_dname_str_absolute(rd) && origin) {
|
|
+ /* check if the origin should be used or concatenated */
|
|
+ if (rd_strlen == 1 && ldns_rdf_data(r)[1] == '@') {
|
|
+ ldns_rdf_deep_free(r);
|
|
+ if (origin) {
|
|
+ r = ldns_rdf_clone(origin);
|
|
+ } else {
|
|
+ /* if this is the SOA, use its own owner name */
|
|
+ if (rr_type == LDNS_RR_TYPE_SOA) {
|
|
+ r = ldns_rdf_clone(ldns_rr_owner(new));
|
|
+ } else {
|
|
+ r = ldns_rdf_new_frm_str(LDNS_RDF_TYPE_DNAME, ".");
|
|
+ }
|
|
+ }
|
|
+ } else if (rd_strlen > 1 && !ldns_dname_str_absolute(rd) && origin) {
|
|
if (!ldns_dname_cat(r, origin)) {
|
|
- /* don't change this (yet MIEK */
|
|
- /* return LDNS_STATUS_SYNTAX_ERR; */
|
|
+ return LDNS_STATUS_ERR;
|
|
}
|
|
}
|
|
break;
|