diff --git a/ChangeLog b/ChangeLog index af071112b..1c54e24ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-10-15 Richard Frith-Macdonald + + * Source/GSHTTPURLHandle.m: Don't expect a baody where status is 204 + or 304 + 2004-10-13 Adam Fedor * Source/NSBundle.m (_bundle_name_first_match): Remove path diff --git a/Source/GSHTTPURLHandle.m b/Source/GSHTTPURLHandle.m index 7782b786b..eac37c4d9 100644 --- a/Source/GSHTTPURLHandle.m +++ b/Source/GSHTTPURLHandle.m @@ -426,11 +426,15 @@ static void debugWrite(GSHTTPURLHandle *handle, NSData *data) if (complete == NO && [parser isInHeaders] == NO) { + GSMimeHeader *info; NSString *enc; NSString *len; + NSString *status; float ver; - ver = [[[document headerNamed: @"http"] value] floatValue]; + info = [document headerNamed: @"http"]; + ver = [[info value] floatValue]; + status = [info objectForKey: NSHTTPPropertyStatusCodeKey]; len = [[document headerNamed: @"content-length"] value]; enc = [[document headerNamed: @"content-transfer-encoding"] value]; if (enc == nil) @@ -438,7 +442,11 @@ static void debugWrite(GSHTTPURLHandle *handle, NSData *data) enc = [[document headerNamed: @"transfer-encoding"] value]; } - if ([enc isEqualToString: @"chunked"] == YES) + if ([status isEqual: @"204"] || [status isEqual: @"304"]) + { + complete = YES; // No body expected. + } + else if ([enc isEqualToString: @"chunked"] == YES) { complete = NO; // Read chunked body data }