extern StatBag S;
-static void patchZone(HttpRequest* req, HttpResponse* resp);
+static void patchZone(UeberBackend& B, HttpRequest* req, HttpResponse* resp);
static void storeChangedPTRs(UeberBackend& B, vector<DNSResourceRecord>& new_ptrs);
static void makePtr(const DNSResourceRecord& rr, DNSResourceRecord* ptr);
throw ApiException("'rrsets' request parameter value '"+req->getvars["rrsets"]+"' is not supported");
}
-static void fillZone(const DNSName& zonename, HttpResponse* resp, bool doRRSets) {
- UeberBackend B;
+static void fillZone(UeberBackend& B, const DNSName& zonename, HttpResponse* resp, bool doRRSets) {
DomainInfo di;
if(!B.getDomainInfo(zonename, di)) {
throw HttpNotFoundException();
}
}
-static void gatherRecords(const string& logprefix, const Json container, const DNSName& qname, const QType qtype, const int ttl, vector<DNSResourceRecord>& new_records, vector<DNSResourceRecord>& new_ptrs) {
- UeberBackend B;
+static void gatherRecords(UeberBackend& B, const string& logprefix, const Json container, const DNSName& qname, const QType qtype, const int ttl, vector<DNSResourceRecord>& new_records, vector<DNSResourceRecord>& new_ptrs) {
DNSResourceRecord rr;
rr.qname = qname;
rr.qtype = qtype;
}
if (rrset["records"].is_array()) {
int ttl = intFromJson(rrset, "ttl");
- gatherRecords(req->logprefix, rrset, qname, qtype, ttl, new_records, new_ptrs);
+ gatherRecords(B, req->logprefix, rrset, qname, qtype, ttl, new_records, new_ptrs);
}
if (rrset["comments"].is_array()) {
gatherComments(rrset, qname, qtype, new_comments);
storeChangedPTRs(B, new_ptrs);
- fillZone(zonename, resp, shouldDoRRSets(req));
+ fillZone(B, zonename, resp, shouldDoRRSets(req));
resp->status = 201;
return;
}
resp->status = 204; // No Content: declare that the zone is gone now
return;
} else if (req->method == "PATCH") {
- patchZone(req, resp);
+ patchZone(B, req, resp);
return;
} else if (req->method == "GET") {
- fillZone(zonename, resp, shouldDoRRSets(req));
+ fillZone(B, zonename, resp, shouldDoRRSets(req));
return;
}
throw HttpMethodNotAllowedException();
}
}
-static void patchZone(HttpRequest* req, HttpResponse* resp) {
- UeberBackend B;
+static void patchZone(UeberBackend& B, HttpRequest* req, HttpResponse* resp) {
DomainInfo di;
DNSName zonename = apiZoneIdToName(req->parameters["id"]);
if (!B.getDomainInfo(zonename, di)) {
// ttl shouldn't be part of DELETE, and it shouldn't be required if we don't get new records.
int ttl = intFromJson(rrset, "ttl");
// new_ptrs is merged.
- gatherRecords(req->logprefix, rrset, qname, qtype, ttl, new_records, new_ptrs);
+ gatherRecords(B, req->logprefix, rrset, qname, qtype, ttl, new_records, new_ptrs);
for(DNSResourceRecord& rr : new_records) {
rr.domain_id = di.id;