diff --git a/CGDWebServer/GCDWebServerRequest.m b/CGDWebServer/GCDWebServerRequest.m index 39bf771..df77c55 100644 --- a/CGDWebServer/GCDWebServerRequest.m +++ b/CGDWebServer/GCDWebServerRequest.m @@ -151,16 +151,20 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) { _query = ARC_RETAIN(query); _type = ARC_RETAIN([_headers objectForKey:@"Content-Type"]); - NSInteger length = [[_headers objectForKey:@"Content-Length"] integerValue]; - if (length < 0) { + NSString* lengthHeader = [_headers objectForKey:@"Content-Length"]; + if (_type) { + NSInteger length = [lengthHeader integerValue]; + if ((lengthHeader == nil) || (length < 0)) { + DNOT_REACHED(); + ARC_RELEASE(self); + return nil; + } + _length = length; + } else if (lengthHeader) { DNOT_REACHED(); ARC_RELEASE(self); return nil; } - _length = length; - if ((_length > 0) && (_type == nil)) { - _type = [kGCDWebServerDefaultMimeType copy]; - } _range = NSMakeRange(NSNotFound, 0); NSString* rangeHeader = [[_headers objectForKey:@"Range"] lowercaseString];