Ben Copsey

Fix cookies values being re-encoded

@@ -830,18 +830,25 @@ static NSError *ASIUnableToCreateRequestError; @@ -830,18 +830,25 @@ static NSError *ASIUnableToCreateRequestError;
830 830
831 // Handle cookies 831 // Handle cookies
832 NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:responseHeaders forURL:url]; 832 NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:responseHeaders forURL:url];
833 - [self setResponseCookies:cookies]; 833 + NSMutableArray *newCookies = [[[NSMutableArray alloc] init] autorelease];
  834 + for (NSHTTPCookie *cookie in cookies) {
  835 + NSMutableDictionary *properties = [[[NSMutableDictionary alloc] initWithDictionary:[cookie properties]] autorelease];
  836 + [properties setValue:[cookie decodedValue] forKey:NSHTTPCookieValue];
  837 + [newCookies addObject:[NSHTTPCookie cookieWithProperties:properties]];
  838 + }
  839 +
  840 + [self setResponseCookies:newCookies];
834 841
835 if (useCookiePersistance) { 842 if (useCookiePersistance) {
836 843
837 // Store cookies in global persistent store 844 // Store cookies in global persistent store
838 - [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:url mainDocumentURL:nil]; 845 + [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:newCookies forURL:url mainDocumentURL:nil];
839 846
840 // We also keep any cookies in the sessionCookies array, so that we have a reference to them if we need to remove them later 847 // We also keep any cookies in the sessionCookies array, so that we have a reference to them if we need to remove them later
841 if (!sessionCookies) { 848 if (!sessionCookies) {
842 [ASIHTTPRequest setSessionCookies:[[[NSMutableArray alloc] init] autorelease]]; 849 [ASIHTTPRequest setSessionCookies:[[[NSMutableArray alloc] init] autorelease]];
843 NSHTTPCookie *cookie; 850 NSHTTPCookie *cookie;
844 - for (cookie in cookies) { 851 + for (cookie in newCookies) {
845 [[ASIHTTPRequest sessionCookies] addObject:cookie]; 852 [[ASIHTTPRequest sessionCookies] addObject:cookie];
846 } 853 }
847 } 854 }
@@ -302,7 +302,6 @@ @@ -302,7 +302,6 @@
302 success = [html isEqualToString:@"I have 'Test Value' as the value of 'ASIHTTPRequestTestCookie'"]; 302 success = [html isEqualToString:@"I have 'Test Value' as the value of 'ASIHTTPRequestTestCookie'"];
303 GHAssertTrue(success,@"Custom cookie not presented to the server with cookie persistance OFF"); 303 GHAssertTrue(success,@"Custom cookie not presented to the server with cookie persistance OFF");
304 304
305 -  
306 305
307 // Test removing all cookies works 306 // Test removing all cookies works
308 [ASIHTTPRequest clearSession]; 307 [ASIHTTPRequest clearSession];
@@ -534,4 +533,5 @@ @@ -534,4 +533,5 @@
534 GHAssertTrue(success,@"Failed to correctly display increment progress for a partial download"); 533 GHAssertTrue(success,@"Failed to correctly display increment progress for a partial download");
535 } 534 }
536 535
  536 +
537 @end 537 @end