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.
This commit is contained in:
Daniel Stenberg 2006-12-05 21:40:14 +00:00
parent eb29c5c285
commit 5fd096da8d
4 changed files with 38 additions and 22 deletions

View File

@ -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

View File

@ -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)

View File

@ -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.

View File

@ -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);