Skip to content
Snippets Groups Projects
transfer.c 71 KiB
Newer Older
  • Learn to ignore specific revisions
  •        * Important: 'conn' cannot be used here, since it may have been closed
           * in 'Curl_done' or other functions.
           */
    
          if((res == CURLE_OK) && newurl) {
    
            res = Curl_follow(data, newurl);
            if(CURLE_OK == res) {
              newurl = NULL;
              continue;
    
          }
        }
        break; /* it only reaches here when this shouldn't loop */
    
      } while(1); /* loop if Location: */
    
    
      /* run post-transfer uncondionally, but don't clobber the return code if
         we already have an error code recorder */
      res2 = Curl_posttransfer(data);
      if(!res && res2)
        res = res2;
    
    CURLcode 
    Curl_Transfer(struct connectdata *c_conn, /* connection data */
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                  int sockfd,       /* socket to read from or -1 */
                  int size,         /* -1 if unknown at this point */
                  bool getheader,   /* TRUE if header parsing is wanted */
                  long *bytecountp, /* return number of bytes read or NULL */
    
                  int writesockfd,  /* socket to write to, it may very well be
                                       the same we read from. -1 disables */
                  long *writebytecountp /* return number of bytes written or
                                           NULL */
                  )
    {
      struct connectdata *conn = (struct connectdata *)c_conn;
      if(!conn)
        return CURLE_BAD_FUNCTION_ARGUMENT;
    
      /* now copy all input parameters */
      conn->sockfd = sockfd;
      conn->size = size;
    
      conn->bits.getheader = getheader;
    
      conn->bytecountp = bytecountp;
      conn->writesockfd = writesockfd;
      conn->writebytecountp = writebytecountp;
    
      return CURLE_OK;
    
    }