4164. [bug] Don't rename slave files and journals on out of memory.

[RT #40033]

4163.   [bug]           Address compiler warnings. [RT #40024]

(cherry picked from commit 3a49d0ff10)
This commit is contained in:
Mark Andrews 2015-07-13 09:46:59 +10:00
parent e0fd534cdd
commit 82b6caf613
5 changed files with 25 additions and 14 deletions

View file

@ -1,3 +1,8 @@
4164. [bug] Don't rename slave files and journals on out of memory.
[RT #40033]
4163. [bug] Address compiler warnings. [RT #40024]
4162. [bug] httpdmgr->flags was not being initialized. [RT #40017]
4159. [cleanup] Alphabetize dig's help output. [RT #39966]

View file

@ -90,16 +90,17 @@ typedef enum {
*/
#define DNS_RRL_MAX_PREFIX 64
typedef union dns_rrl_key dns_rrl_key_t;
struct dns__rrl_key {
isc_uint32_t ip[DNS_RRL_MAX_PREFIX/32];
isc_uint32_t qname_hash;
dns_rdatatype_t qtype;
isc_uint8_t qclass;
dns_rrl_rtype_t rtype :4; /* 3 bits + sign bit */
isc_boolean_t ipv6 :1;
};
union dns_rrl_key {
struct {
isc_uint32_t ip[DNS_RRL_MAX_PREFIX/32];
isc_uint32_t qname_hash;
dns_rdatatype_t qtype;
isc_uint8_t qclass;
dns_rrl_rtype_t rtype :4; /* 3 bits + sign bit */
isc_boolean_t ipv6 :1;
} s;
isc_uint16_t w[1];
struct dns__rrl_key s;
isc_uint16_t w[sizeof(struct dns__rrl_key)/sizeof(isc_uint16_t)];
};
/*

View file

@ -376,7 +376,7 @@ hash_key(const dns_rrl_key_t *key) {
int i;
hval = key->w[0];
for (i = sizeof(*key) / sizeof(key->w[0]) - 1; i >= 0; --i) {
for (i = sizeof(key->w) / sizeof(key->w[0]) - 1; i >= 0; --i) {
hval = key->w[i] + (hval<<1);
}
return (hval);

View file

@ -568,6 +568,7 @@ rrset_visible(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
result = ISC_R_SUCCESS;
break;
default:
*visible = ISC_FALSE; /* silence false compiler warning */
break;
}
return (result);

View file

@ -4370,10 +4370,14 @@ zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime,
zone->type == dns_zone_stub ||
zone->type == dns_zone_key ||
(zone->type == dns_zone_redirect && zone->masters != NULL)) {
if (zone->journal != NULL)
zone_saveunique(zone, zone->journal, "jn-XXXXXXXX");
if (zone->masterfile != NULL)
zone_saveunique(zone, zone->masterfile, "db-XXXXXXXX");
if (result != ISC_R_NOMEMORY) {
if (zone->journal != NULL)
zone_saveunique(zone, zone->journal,
"jn-XXXXXXXX");
if (zone->masterfile != NULL)
zone_saveunique(zone, zone->masterfile,
"db-XXXXXXXX");
}
/* Mark the zone for immediate refresh. */
zone->refreshtime = now;