diff options
| -rw-r--r-- | lib/http.c | 36 | 
1 files changed, 21 insertions, 15 deletions
diff --git a/lib/http.c b/lib/http.c index d86b34fa3..308f9efc3 100644 --- a/lib/http.c +++ b/lib/http.c @@ -230,21 +230,27 @@ static CURLcode perhapsrewind(struct connectdata *conn)    bytessent = http->writebytecount; -  /* 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; -    break; -  case HTTPREQ_PUT: -    if(data->set.infilesize != -1) -      expectsend = data->set.infilesize; -    break; -  case HTTPREQ_POST_FORM: -    expectsend = http->postsize; -    break; -  default: -    break; +  if(conn->bits.authneg) +    /* This is a state where we are known to be negotiating and we don't send +       any data then. */ +    expectsend = 0; +  else { +    /* 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; +      break; +    case HTTPREQ_PUT: +      if(data->set.infilesize != -1) +        expectsend = data->set.infilesize; +      break; +    case HTTPREQ_POST_FORM: +      expectsend = http->postsize; +      break; +    default: +      break; +    }    }    conn->bits.rewindaftersend = FALSE; /* default */  | 
