Commit ff7097f7 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

urldata: store POST size in state.infilesize too

... to simplify checking when PUT _or_ POST have completed.

Reported-by: Frank Meier
Bug: http://curl.haxx.se/mail/lib-2015-06/0019.html
parent 55fc47a4
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -424,8 +424,8 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
    /* figure out how much data we are expected to send */
    switch(data->set.httpreq) {
    case HTTPREQ_POST:
      if(data->set.postfieldsize != -1)
        expectsend = data->set.postfieldsize;
      if(data->state.infilesize != -1)
        expectsend = data->state.infilesize;
      else if(data->set.postfields)
        expectsend = (curl_off_t)strlen(data->set.postfields);
      break;
@@ -2572,8 +2572,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
      postsize = 0;
    else {
      /* figure out the size of the postfields */
      postsize = (data->set.postfieldsize != -1)?
        data->set.postfieldsize:
      postsize = (data->state.infilesize != -1)?
        data->state.infilesize:
        (data->set.postfields? (curl_off_t)strlen(data->set.postfields):-1);
    }

@@ -2696,7 +2696,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
          return result;
      }

      else if(data->set.postfieldsize) {
      else if(data->state.infilesize) {
        /* set the upload size to the progress meter */
        Curl_pgrsSetUploadSize(data, postsize?postsize:-1);

+4 −1
Original line number Diff line number Diff line
@@ -402,7 +402,10 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
  /* Point to the multi's connection cache */
  data->state.conn_cache = &multi->conn_cache;

  if(data->set.httpreq == HTTPREQ_PUT)
    data->state.infilesize = data->set.filesize;
  else
    data->state.infilesize = data->set.postfieldsize;

  /* This adds the new entry at the 'end' of the doubly-linked circular
     list of SessionHandle structs to try and maintain a FIFO queue so
+2 −2
Original line number Diff line number Diff line
@@ -495,8 +495,8 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)

    }
    else {
      postsize = (data->set.postfieldsize != -1)?
        data->set.postfieldsize:
      postsize = (data->state.infilesize != -1)?
        data->state.infilesize:
        (data->set.postfields? (curl_off_t)strlen(data->set.postfields):0);
      data->set.httpreq = HTTPREQ_POST;
    }