فهرست منبع

Enforce Content-Type and Content-Length consistency on requests

Pierre-Olivier Latour 11 سال پیش
والد
کامیت
8bebee94ec
1فایلهای تغییر یافته به همراه10 افزوده شده و 6 حذف شده
  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];