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

- If the Expect: 100-continue header has been set by the application through

  curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set
  data->state.expect100header accordingly - the current code (in 7.19.7 at
  least) doesn't handle this properly. Martin Storsjo provided the fix!
parent d61690ef
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -7,6 +7,12 @@
                                  Changelog


Daniel Stenberg (1 Dec 2009)
- If the Expect: 100-continue header has been set by the application through
  curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set
  data->state.expect100header accordingly - the current code (in 7.19.7 at
  least) doesn't handle this properly. Martin Storsjo provided the fix!

Yang Tse (28 Nov 2009)
- Added Diffie-Hellman parameters to several test harness certificate files in
  PEM format. Required by several stunnel versions used by our test harness.
+2 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ This release includes the following bugfixes:
 o SSL lib post-close write
 o curl failed to report write errors for tiny failed downloads
 o TFTP BLKSIZE
 o Expect: 100-continue handling when set by the application

This release includes the following known bugs:

@@ -39,6 +40,6 @@ advice from friends like these:
 Yang Tse, Kamil Dudka, Christian Schmitz, Constantine Sapuntzakis,
 Marco Maggi, Camille Moncelier, Claes Jakobsson, Kevin Baughman,
 Marc Kleine-Budde, Jad Chamcham, Bjorn Augustsson, David Byron,
 Markus Koetter, Chad Monroe
 Markus Koetter, Chad Monroe, Martin Storsjo

        Thanks! (and sorry if I forgot to mention someone)
+21 −9
Original line number Diff line number Diff line
@@ -1981,18 +1981,25 @@ static CURLcode expect100(struct SessionHandle *data,
                          send_buffer *req_buffer)
{
  CURLcode result = CURLE_OK;
  const char *ptr;
  data->state.expect100header = FALSE; /* default to false unless it is set
                                          to TRUE below */
  if(use_http_1_1(data, conn) && !checkheaders(data, "Expect:")) {
  if(use_http_1_1(data, conn)) {
    /* if not doing HTTP 1.0 or disabled explicitly, we add a Expect:
       100-continue to the headers which actually speeds up post
       operations (as there is one packet coming back from the web
       server) */
       100-continue to the headers which actually speeds up post operations
       (as there is one packet coming back from the web server) */
    ptr = checkheaders(data, "Expect:");
    if (ptr) {
      data->state.expect100header =
        Curl_compareheader(ptr, "Expect:", "100-continue");
    }
    else {
      result = add_bufferf(req_buffer,
                           "Expect: 100-continue\r\n");
      if(result == CURLE_OK)
        data->state.expect100header = TRUE;
    }
  }
  return result;
}

@@ -2837,7 +2844,12 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
       the somewhat bigger ones we allow the app to disable it. Just make
       sure that the expect100header is always set to the preferred value
       here. */
    if(postsize > TINY_INITIAL_POST_SIZE) {
    ptr = checkheaders(data, "Expect:");
    if(ptr) {
      data->state.expect100header =
        Curl_compareheader(ptr, "Expect:", "100-continue");
    }
    else if(postsize > TINY_INITIAL_POST_SIZE) {
      result = expect100(data, conn, req_buffer);
      if(result)
        return result;