@@ -171,44 +171,35 @@ of_dns_resource_record_type_to_string(_recordType), _TTL]; } @end @implementation OFADNSResourceRecord -@synthesize address = _address; - - (instancetype)initWithName: (OFString *)name recordClass: (of_dns_resource_record_class_t)recordClass recordType: (of_dns_resource_record_type_t)recordType TTL: (uint32_t)TTL { OF_INVALID_INIT_METHOD } - (instancetype)initWithName: (OFString *)name - address: (OFString *)address + address: (const of_socket_address_t *)address TTL: (uint32_t)TTL { self = [super initWithName: name recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN recordType: OF_DNS_RESOURCE_RECORD_TYPE_A TTL: TTL]; - @try { - _address = [address copy]; - } @catch (id e) { - [self release]; - @throw e; - } + _address = *address; return self; } -- (void)dealloc +- (const of_socket_address_t *)address { - [_address release]; - - [super dealloc]; + return &_address; } - (bool)isEqual: (id)otherObject { OFADNSResourceRecord *otherRecord; @@ -225,12 +216,11 @@ return false; if (otherRecord->_recordType != _recordType) return false; - if (otherRecord->_address != _address && - ![otherRecord->_address isEqual: _address]) + if (!of_socket_address_equal(&otherRecord->_address, &_address)) return false; return true; } @@ -243,11 +233,11 @@ OF_HASH_ADD_HASH(hash, [_name hash]); OF_HASH_ADD(hash, _recordClass >> 8); OF_HASH_ADD(hash, _recordClass); OF_HASH_ADD(hash, _recordType >> 8); OF_HASH_ADD(hash, _recordType); - OF_HASH_ADD_HASH(hash, [_address hash]); + OF_HASH_ADD_HASH(hash, of_socket_address_hash(&_address)); OF_HASH_FINALIZE(hash); return hash; } @@ -258,49 +248,41 @@ @"<%@:\n" @"\tName = %@\n" @"\tAddress = %@\n" @"\tTTL = %" PRIu32 "\n" @">", - [self className], _name, _address, _TTL]; + [self className], _name, + of_socket_address_ip_string(&_address, NULL), _TTL]; } @end @implementation OFAAAADNSResourceRecord -@synthesize address = _address; - - (instancetype)initWithName: (OFString *)name recordClass: (of_dns_resource_record_class_t)recordClass recordType: (of_dns_resource_record_type_t)recordType TTL: (uint32_t)TTL { OF_INVALID_INIT_METHOD } - (instancetype)initWithName: (OFString *)name - address: (OFString *)address + address: (const of_socket_address_t *)address TTL: (uint32_t)TTL { self = [super initWithName: name recordClass: OF_DNS_RESOURCE_RECORD_CLASS_IN recordType: OF_DNS_RESOURCE_RECORD_TYPE_AAAA TTL: TTL]; - @try { - _address = [address copy]; - } @catch (id e) { - [self release]; - @throw e; - } + _address = *address; return self; } -- (void)dealloc +- (const of_socket_address_t *)address { - [_address release]; - - [super dealloc]; + return &_address; } - (bool)isEqual: (id)otherObject { OFAAAADNSResourceRecord *otherRecord; @@ -317,12 +299,11 @@ return false; if (otherRecord->_recordType != _recordType) return false; - if (otherRecord->_address != _address && - ![otherRecord->_address isEqual: _address]) + if (!of_socket_address_equal(&otherRecord->_address, &_address)) return false; return true; } @@ -335,11 +316,11 @@ OF_HASH_ADD_HASH(hash, [_name hash]); OF_HASH_ADD(hash, _recordClass >> 8); OF_HASH_ADD(hash, _recordClass); OF_HASH_ADD(hash, _recordType >> 8); OF_HASH_ADD(hash, _recordType); - OF_HASH_ADD_HASH(hash, [_address hash]); + OF_HASH_ADD_HASH(hash, of_socket_address_hash(&_address)); OF_HASH_FINALIZE(hash); return hash; } @@ -350,11 +331,12 @@ @"<%@:\n" @"\tName = %@\n" @"\tAddress = %@\n" @"\tTTL = %" PRIu32 "\n" @">", - [self className], _name, _address, _TTL]; + [self className], _name, + of_socket_address_ip_string(&_address, NULL), _TTL]; } @end @implementation OFCNAMEDNSResourceRecord @synthesize alias = _alias;