Explorar o código

Enforce Content-Type and Content-Length consistency on requests

Pierre-Olivier Latour %!s(int64=11) %!d(string=hai) anos
pai
achega
8bebee94ec
Modificáronse 1 ficheiros con 10 adicións e 6 borrados
  1. 10 6
      CGDWebServer/GCDWebServerRequest.m

+ 10 - 6
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];