}
static void patchZone(UeberBackend& B, HttpRequest* req, HttpResponse* resp) {
+ bool zone_disabled;
+ SOAData sd;
DomainInfo di;
DNSName zonename = apiZoneIdToName(req->parameters["id"]);
if (!B.getDomainInfo(zonename, di)) {
throw ApiException("Changetype not understood");
}
- // edit SOA (if needed)
- if (!soa_edit_api_kind.empty() && !soa_edit_done) {
- SOAData sd;
- if (!B.getSOAUncached(zonename, sd))
- throw ApiException("No SOA found for domain '"+zonename.toString()+"'");
+ zone_disabled = (!B.getSOAUncached(zonename, sd));
+ // edit SOA (if needed)
+ if (!zone_disabled && !soa_edit_api_kind.empty() && !soa_edit_done) {
DNSResourceRecord rr;
if (makeIncreasedSOARecord(sd, soa_edit_api_kind, soa_edit_kind, rr)) {
if (!di.backend->replaceRRSet(di.id, rr.qname, rr.qtype, vector<DNSResourceRecord>(1, rr))) {
// Rectify
DNSSECKeeper dk(&B);
- if (!dk.isPresigned(zonename)) {
+ if (!zone_disabled && !dk.isPresigned(zonename)) {
string api_rectify;
if (!di.backend->getDomainMetadataOne(zonename, "API-RECTIFY", api_rectify) && ::arg().mustDo("default-api-rectify")) {
api_rectify = "1";