* Source/NSHTTPCookieStorage.m (_updateFromCookieStore): Eliminate cookies that we are aready aware of. --- Source/NSHTTPCookie.m | 12 +++++++++++- Source/NSHTTPCookieStorage.m | 7 +++++-- 2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/Source/NSHTTPCookie.m b/Source/NSHTTPCookie.m index e8cd6bc..bbab3b1 100644 --- a/Source/NSHTTPCookie.m +++ b/Source/NSHTTPCookie.m @@ -299,7 +299,13 @@ static NSRange GSRangeOfCookie(NSString *string); rawProps = [[properties mutableCopy] autorelease]; if ([rawProps objectForKey: @"Created"] == nil) - [rawProps setObject: [NSDate date] forKey: @"Created"]; + { + /* Round to whole seconds, so that it stays same ofter serialization + * into plist and deserialization and thus can be used to eliminate duplicates. + */ + NSInteger seconds = [[NSDate date] timeIntervalSinceReferenceDate]; + [rawProps setObject: [NSDate dateWithTimeIntervalSinceReferenceDate:seconds] forKey: @"Created"]; + } if ([rawProps objectForKey: NSHTTPCookieExpires] == nil || [[rawProps objectForKey: NSHTTPCookieExpires] isKindOfClass: [NSDate class]] == NO) @@ -357,6 +363,10 @@ static NSRange GSRangeOfCookie(NSString *string); [self name], [self value]]; } +- (BOOL) isEqual: (id)other +{ + return [[other properties] isEqual: [self properties]]; +} @end diff --git a/Source/NSHTTPCookieStorage.m b/Source/NSHTTPCookieStorage.m index 5ac2762..2867282 100644 --- a/Source/NSHTTPCookieStorage.m +++ b/Source/NSHTTPCookieStorage.m @@ -176,8 +176,11 @@ static NSHTTPCookieStorage *storage = nil; if (properties == nil) return; for (i = 0; i < [properties count]; i++) - [this->_cookies addObject: - [NSHTTPCookie cookieWithProperties: [properties objectAtIndex: i]]]; + { + NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties: [properties objectAtIndex: i]]; + if (![this->_cookies containsObject:cookie]) + [this->_cookies addObject:cookie]; + } } - (void) _updateToCookieStore -- 1.7.1 _______________________________________________ Bug-gnustep mailing list Bug-gnustep@gnu.org https://lists.gnu.org/mailman/listinfo/bug-gnustep