Commit 5fd096da authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Stefan Krause pointed out a compiler warning with a picky MSCV compiler when

passing a curl_off_t argument to the Curl_read_rewind() function which takes
an size_t argument. Curl_read_rewind() also had debug code left in it and it
was put in a different source file with no good reason when only used from
one single spot.
parent eb29c5c2
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -7,6 +7,12 @@
                                  Changelog

Daniel (5 December 2006)
- Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
  passing a curl_off_t argument to the Curl_read_rewind() function which takes
  an size_t argument. Curl_read_rewind() also had debug code left in it and it
  was put in a different source file with no good reason when only used from
  one single spot.

- Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
  no code present in the library that receives the option. Since it was not
  possible to use, we know that no current users exist and thus we simply
+2 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ advice from friends like these:

 James Housley, Olaf Stueben, Yang Tse, Gisle Vanem, Bradford Bruce,
 Ciprian Badescu, Dmitriy Sergeyev, Nir Soffer, Venkat Akella, Toon Verwaest,
 Matt Witherspoon, Alexey Simak, Martin Skinner, Sh Diao, Jared Lundell
 Matt Witherspoon, Alexey Simak, Martin Skinner, Sh Diao, Jared Lundell,
 Stefan Krause

        Thanks! (and sorry if I forgot to mention someone)
+0 −18
Original line number Diff line number Diff line
@@ -455,24 +455,6 @@ CURLcode Curl_client_write(struct connectdata *conn,

#define MIN(a,b) (a < b ? a : b)

void Curl_read_rewind(struct connectdata *conn,
                      size_t extraBytesRead)
{
    char buf[512 + 1];
    size_t bytesToShow;

    conn->read_pos -= extraBytesRead;
    conn->bits.stream_was_rewound = TRUE;

    bytesToShow = MIN(conn->buf_len - conn->read_pos, sizeof(buf)-1);
    memcpy(buf, conn->master_buffer + conn->read_pos, bytesToShow);
    buf[bytesToShow] = '\0';

    DEBUGF(infof(conn->data,
                 "Buffer after stream rewind (read_pos = %d): [%s]",
                 conn->read_pos, buf));
}

/*
 * Internal read-from-socket function. This is meant to deal with plain
 * sockets, SSL sockets and kerberos sockets.
+30 −3
Original line number Diff line number Diff line
@@ -266,6 +266,32 @@ static int data_pending(struct connectdata *conn)
#define data_pending(x) 0
#endif

#ifndef MIN
#define MIN(a,b) (a < b ? a : b)
#endif

static void read_rewind(struct connectdata *conn,
                        size_t thismuch)
{
  conn->read_pos -= thismuch;
  conn->bits.stream_was_rewound = TRUE;

#ifdef CURLDEBUG
  {
    char buf[512 + 1];
    size_t show;

    show = MIN(conn->buf_len - conn->read_pos, sizeof(buf)-1);
    memcpy(buf, conn->master_buffer + conn->read_pos, show);
    buf[show] = '\0';

    DEBUGF(infof(conn->data,
                 "Buffer after stream rewind (read_pos = %d): [%s]",
                 conn->read_pos, buf));
  }
#endif
}

/*
 * Curl_readwrite() is the low-level function to be called when data is to
 * be read and written to/from the connection.
@@ -1145,8 +1171,9 @@ CURLcode Curl_readwrite(struct connectdata *conn,

          if((-1 != k->maxdownload) &&
             (k->bytecount + nread >= k->maxdownload)) {
            curl_off_t excess = k->bytecount +
              ((curl_off_t) nread) - k->maxdownload;
            /* The 'excess' amount below can't be more than BUFSIZE which
               always will fit in a size_t */
            size_t excess = k->bytecount + nread - k->maxdownload;
            if (excess > 0 && !k->ignorebody) {
              infof(data,
                    "Rewinding stream by : %" FORMAT_OFF_T
@@ -1155,7 +1182,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
                    ", bytecount = %" FORMAT_OFF_T ", nread = %d)\n",
                    excess, conn->data->reqdata.path,
                    k->size, k->maxdownload, k->bytecount, nread);
              Curl_read_rewind(conn, excess);
              read_rewind(conn, excess);
            }

            nread = (ssize_t) (k->maxdownload - k->bytecount);