uint32_t schemaversion;
- int rc;
MDB_env* tmpEnv = nullptr;
- if ((rc = mdb_env_create(&tmpEnv)) != 0) {
+ if (mdb_env_create(&tmpEnv) != 0) {
throw std::runtime_error("mdb_env_create failed");
}
std::unique_ptr<MDB_env, decltype(&mdb_env_close)> env{tmpEnv, mdb_env_close};
- if ((rc = mdb_env_set_mapsize(tmpEnv, 0)) != 0) {
+ if (mdb_env_set_mapsize(tmpEnv, 0) != 0) {
throw std::runtime_error("mdb_env_set_mapsize failed");
}
- if ((rc = mdb_env_set_maxdbs(tmpEnv, 20)) != 0) { // we need 17: 1 {"pdns"} + 4 {"domains", "keydata", "tsig", "metadata"} * 2 {v4, v5} * 2 {main, index in _0}
+ if (mdb_env_set_maxdbs(tmpEnv, 20) != 0) { // we need 17: 1 {"pdns"} + 4 {"domains", "keydata", "tsig", "metadata"} * 2 {v4, v5} * 2 {main, index in _0}
throw std::runtime_error("mdb_env_set_maxdbs failed");
}
- if ((rc = mdb_env_open(tmpEnv, filename.c_str(), MDB_NOSUBDIR | MDB_RDONLY, 0600)) != 0) {
- if (rc == ENOENT) {
- // we don't have a database yet! report schema 0, with 0 shards
- return {0u, 0u};
+ {
+ int rc = mdb_env_open(tmpEnv, filename.c_str(), MDB_NOSUBDIR | MDB_RDONLY, 0600);
+ if (rc != 0) {
+ if (rc == ENOENT) {
+ // we don't have a database yet! report schema 0, with 0 shards
+ return {0u, 0u};
+ }
+ throw std::runtime_error("mdb_env_open failed");
}
- throw std::runtime_error("mdb_env_open failed");
}
+
MDB_txn* txn = nullptr;
- if ((rc = mdb_txn_begin(tmpEnv, NULL, MDB_RDONLY, &txn)) != 0) {
+ if (mdb_txn_begin(tmpEnv, nullptr, MDB_RDONLY, &txn) != 0) {
throw std::runtime_error("mdb_txn_begin failed");
}
MDB_dbi dbi;
- if ((rc = mdb_dbi_open(txn, "pdns", 0, &dbi)) != 0) {
- if (rc == MDB_NOTFOUND) {
- // this means nothing has been inited yet
- // we pretend this means 5
+ {
+ int rc = mdb_dbi_open(txn, "pdns", 0, &dbi);
+ if (rc != 0) {
+ if (rc == MDB_NOTFOUND) {
+ // this means nothing has been inited yet
+ // we pretend this means 5
+ mdb_txn_abort(txn);
+ return {5u, 0u};
+ }
mdb_txn_abort(txn);
- return {5u, 0u};
+ throw std::runtime_error("mdb_dbi_open failed");
}
- mdb_txn_abort(txn);
- throw std::runtime_error("mdb_dbi_open failed");
}
MDB_val key, data;
key.mv_data = (char*)"schemaversion";
key.mv_size = strlen((char*)key.mv_data);
- if ((rc = mdb_get(txn, dbi, &key, &data)) != 0) {
- if (rc == MDB_NOTFOUND) {
- // this means nothing has been inited yet
- // we pretend this means 5
- mdb_txn_abort(txn);
- return {5u, 0u};
- }
+ {
+ int rc = mdb_get(txn, dbi, &key, &data);
+ if (rc != 0) {
+ if (rc == MDB_NOTFOUND) {
+ // this means nothing has been inited yet we pretend this means 5
+ mdb_txn_abort(txn);
+ return {5u, 0u};
+ }
- throw std::runtime_error("mdb_get pdns.schemaversion failed");
+ throw std::runtime_error("mdb_get pdns.schemaversion failed");
+ }
}
if (data.mv_size == 4) {
key.mv_data = (char*)"shards";
key.mv_size = strlen((char*)key.mv_data);
- if ((rc = mdb_get(txn, dbi, &key, &data)) != 0) {
- if (rc == MDB_NOTFOUND) {
- cerr << "schemaversion was set, but shards was not. Dazed and confused, trying to exit." << endl;
- mdb_txn_abort(txn);
- exit(1);
- }
+ {
+ int rc = mdb_get(txn, dbi, &key, &data);
+ if (rc != 0) {
+ if (rc == MDB_NOTFOUND) {
+ cerr << "schemaversion was set, but shards was not. Dazed and confused, trying to exit." << endl;
+ mdb_txn_abort(txn);
+ exit(1);
+ }
- throw std::runtime_error("mdb_get pdns.shards failed");
+ throw std::runtime_error("mdb_get pdns.shards failed");
+ }
}
if (data.mv_size == 4) {