title: Is there any document size limit per "POST" asynchronous request?
body: <p>I'm setting a asynchronous post request with a document, containing hundreds of location points. I want to save this document in my couchdb.</p>
  
  <p>For small documents, the request response returns in very short time, storing the document. When the document grows a bit more (still &lt; ~200k) the response takes ages and then it returns with a timeout. I set the timeout for 120 seconds.</p>
  
  <p>Am I missing some setting or doing an coding error?</p>
  
  <pre><code>- (void)post:(NSData*) requestBody {
      startTime = [NSDate date];
      NSURL* serverURL = [NSURL URLWithString: @"https://myUser:myPassword@myAcc.cloudant.com/myDB"];
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:serverURL];
      [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
      [request setHTTPMethod:@"POST"];
      [request setTimeoutInterval:120.0];
  
      [request setHTTPBody:requestBody];
  
  
      [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
      {
          if (response != nil) {
              if ([response respondsToSelector:@selector(statusCode)])
              {
                  int statusCode = [((NSHTTPURLResponse *)response) statusCode];
                  NSLog(@"StatusCode returned was %i", statusCode);
              }
              NSLog(@"Response: %@",response);
          }
  
           if ([data length] &gt;0 &amp;&amp; error == nil)
           {
               NSLog(@"data: %@", data);
               // DO YOUR WORK HERE
  
           }
           else if ([data length] == 0 &amp;&amp; error == nil)
           {
               NSLog(@"Nothing was downloaded.");
           }
           else if (error != nil){
               NSLog(@"Error = %@", error);
           }
  
       }];
  </code></pre>
  
  <p>EDIT: the problem with the timeout still remains. I logged in the progress in the didSendBodyData: and recognized, that bytes were sent. Not all, then the timeout occurs. With curl, the upload works just fine.</p>
  
  <p>Additionally I recognized one thing in the log: When the request was successful, total and expected bytes were the same:</p>
  
  <pre><code>Total Bytes written: 161120
  Expected Bytes to write: 161120
  
  When the request failed:
  Total Bytes written: 163840
  Expected Bytes to write: 166839
  </code></pre>
  
  <p>Any other ideas?</p>
  
  <pre><code>- (void)post:(NSData*) requestBody {
      NSURL* serverURL = [NSURL URLWithString: @"https://mySpace.cloudant.com/myDb"];
  
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:serverURL
                                               cachePolicy:NSURLRequestUseProtocolCachePolicy
                                           timeoutInterval:30.0];
      [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
      [request setHTTPMethod:@"POST"];
      [request setHTTPBody:requestBody];
  
      NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
      [connection start];
  }
  
  #pragma mark -
  #pragma mark Connection Delegates
  - (void) connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
  {
      if ([challenge previousFailureCount] == 0) {
          NSLog(@"received authentication challenge");
          NSURLCredential *newCredential = [NSURLCredential credentialWithUser:@"myUser"
                                                                      password:@"myPwd"
                                                                   persistence:NSURLCredentialPersistenceForSession];
          NSLog(@"credential created");
          [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
          NSLog(@"responded to authentication challenge");
      }
      else {
          NSLog(@"previous authentication failure");
      }
  }
  </code></pre>