@@ -78,11 +78,10 @@ @throw [OFInvalidFormatException exception]; } @implementation OFHTTPRequest @synthesize URL = _URL, method = _method, headers = _headers; -@synthesize remoteAddress = _remoteAddress; + (instancetype)request { return [[[self alloc] init] autorelease]; } @@ -119,14 +118,23 @@ - (void)dealloc { [_URL release]; [_headers release]; - [_remoteAddress release]; [super dealloc]; } + +- (void)setRemoteAddress: (const of_socket_address_t *)remoteAddress +{ + _remoteAddress = *remoteAddress; +} + +- (const of_socket_address_t *)remoteAddress +{ + return &_remoteAddress; +} - (id)copy { OFHTTPRequest *copy = [[OFHTTPRequest alloc] init]; @@ -133,11 +141,11 @@ @try { copy->_method = _method; copy->_protocolVersion = _protocolVersion; [copy setURL: _URL]; [copy setHeaders: _headers]; - [copy setRemoteAddress: _remoteAddress]; + [copy setRemoteAddress: &_remoteAddress]; } @catch (id e) { [copy release]; @throw e; } @@ -159,11 +167,11 @@ if (request->_method != _method || request->_protocolVersion.major != _protocolVersion.major || request->_protocolVersion.minor != _protocolVersion.minor || ![request->_URL isEqual: _URL] || ![request->_headers isEqual: _headers] || - ![request->_remoteAddress isEqual: _remoteAddress]) + !of_socket_address_equal(&request->_remoteAddress, &_remoteAddress)) return false; return true; } @@ -176,11 +184,11 @@ OF_HASH_ADD(hash, _method); OF_HASH_ADD(hash, _protocolVersion.major); OF_HASH_ADD(hash, _protocolVersion.minor); OF_HASH_ADD_HASH(hash, [_URL hash]); OF_HASH_ADD_HASH(hash, [_headers hash]); - OF_HASH_ADD_HASH(hash, [_remoteAddress hash]); + OF_HASH_ADD_HASH(hash, of_socket_address_hash(&_remoteAddress)); OF_HASH_FINALIZE(hash); return hash; } @@ -246,12 +254,13 @@ @"<%@:\n\tURL = %@\n" @"\tMethod = %s\n" @"\tHeaders = %@\n" @"\tRemote address = %@\n" @">", - [self class], _URL, method, indentedHeaders, _remoteAddress]; + [self class], _URL, method, indentedHeaders, + of_socket_address_ip_string(&_remoteAddress, NULL)]; objc_autoreleasePoolPop(pool); return [ret autorelease]; } @end