Compare commits
10 Commits
curl-7_6_1
...
curl-7_6_1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3b44a3df76 | ||
|
|
572c29a4a3 | ||
|
|
9464c5430d | ||
|
|
a14aaaf23f | ||
|
|
c41c5a0ef2 | ||
|
|
c0c0283356 | ||
|
|
1bcd3e601a | ||
|
|
e721f85c83 | ||
|
|
7015c61b86 | ||
|
|
30ec0af109 |
23
CHANGES
23
CHANGES
@@ -7,8 +7,29 @@
|
||||
History of Changes
|
||||
|
||||
|
||||
Daniel (31 January 2001)
|
||||
- Curl_read() and curl_read() now return a ssize_t for the size, as it had to
|
||||
be able to return -1. The telnet support crashed due to this and there was
|
||||
a possibility to weird behaviour all over.
|
||||
|
||||
- Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
|
||||
I also made the configure script feature --enable-debug which sets a couple
|
||||
of compiler options when used. It assumes gcc.
|
||||
|
||||
Daniel (30 January 2001)
|
||||
- I finally took a stab at the long-term FIXME item I've had on myself, and
|
||||
now libcurl will properly work when doing a HTTP range-request that follows
|
||||
a Location:. Previously that would make libcurl fail saying that the server
|
||||
doesn't seem to support range requests.
|
||||
|
||||
Daniel (29 January 2001)
|
||||
- Yet another Content-Range change. Ok now? Bob Schader checks from his end.
|
||||
- I added a test case for the HTTP PUT resume thing (test case 33).
|
||||
|
||||
Version 7.6.1-pre1
|
||||
|
||||
Daniel (29 January 2001)
|
||||
- Yet another Content-Range change. Ok now? Bob Schader checks from his end
|
||||
and it works for him.
|
||||
|
||||
Daniel (27 January 2001)
|
||||
- So the HTTP PUT resume fix wasn't good. There should appearantly be a
|
||||
|
||||
73
configure.in
73
configure.in
@@ -26,6 +26,72 @@ dnl The install stuff has already been taken care of by the automake stuff
|
||||
dnl AC_PROG_INSTALL
|
||||
AC_PROG_MAKE_SET
|
||||
|
||||
dnl ************************************************************
|
||||
dnl lame option to switch on debug options
|
||||
dnl
|
||||
AC_MSG_CHECKING([whether to enable debug options])
|
||||
AC_ARG_ENABLE(debug,
|
||||
[ --enable-debug Enable pedantic debug options
|
||||
--disable-debug Disable debug options],
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
|
||||
CPPFLAGS="$CPPFLAGS -DMALLOCDEBUG"
|
||||
CFLAGS="-Wall -pedantic -g"
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
|
||||
dnl
|
||||
dnl check for working getaddrinfo()
|
||||
dnl
|
||||
AC_DEFUN(CURL_CHECK_WORKING_GETADDRINFO,[
|
||||
AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,[
|
||||
AC_TRY_RUN( [
|
||||
#ifdef HAVE_NETDB_H
|
||||
#include <netdb.h>
|
||||
#endif
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
void main(void) {
|
||||
struct addrinfo hints, *ai;
|
||||
int error;
|
||||
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_family = AF_UNSPEC;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
|
||||
if (error) {
|
||||
exit(1);
|
||||
}
|
||||
else {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
],[
|
||||
ac_cv_working_getaddrinfo="yes"
|
||||
],[
|
||||
ac_cv_working_getaddrinfo="no"
|
||||
],[
|
||||
ac_cv_working_getaddrinfo="yes"
|
||||
])])
|
||||
if test "$ac_cv_working_getaddrinfo" = "yes"; then
|
||||
AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if getaddrinfo exists and works])
|
||||
AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
AC_DEFUN(CURL_CHECK_LOCALTIME_R,
|
||||
[
|
||||
dnl check for a few thread-safe functions
|
||||
@@ -251,7 +317,6 @@ AC_ARG_ENABLE(ipv6,
|
||||
ipv6=no
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(ENABLE_IPV6)
|
||||
ipv6=yes
|
||||
;;
|
||||
esac ],
|
||||
@@ -268,7 +333,6 @@ main()
|
||||
}
|
||||
],
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(ENABLE_IPV6)
|
||||
ipv6=yes,
|
||||
AC_MSG_RESULT(no)
|
||||
ipv6=no,
|
||||
@@ -276,6 +340,11 @@ main()
|
||||
ipv6=no
|
||||
))
|
||||
|
||||
if test "$ipv6" = "yes"; then
|
||||
CURL_CHECK_WORKING_GETADDRINFO
|
||||
fi
|
||||
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Checks for libraries.
|
||||
dnl **********************************************************************
|
||||
|
||||
@@ -452,7 +452,7 @@ char *curl_getenv(char *variable);
|
||||
char *curl_version(void);
|
||||
|
||||
/* This is the version number */
|
||||
#define LIBCURL_VERSION "7.6.1-pre1"
|
||||
#define LIBCURL_VERSION "7.6.1-pre2"
|
||||
#define LIBCURL_VERSION_NUM 0x070601
|
||||
|
||||
/* linked-list structure for the CURLOPT_QUOTE option (and other) */
|
||||
@@ -554,7 +554,7 @@ CURLcode curl_setopt(CURL *handle, CURLoption option, ...);
|
||||
CURLcode curl_close(CURL *curl); /* the opposite of curl_open() */
|
||||
|
||||
CURLcode curl_read(CURLconnect *c_conn, char *buf, size_t buffersize,
|
||||
size_t *n);
|
||||
ssize_t *n);
|
||||
CURLcode curl_write(CURLconnect *c_conn, char *buf, size_t amount,
|
||||
size_t *n);
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ int Curl_GetFTPResponse(int sockfd, char *buf,
|
||||
int *ftpcode)
|
||||
{
|
||||
int nread;
|
||||
size_t keepon=TRUE;
|
||||
ssize_t keepon=TRUE;
|
||||
char *ptr;
|
||||
int timeout = 3600; /* in seconds */
|
||||
struct timeval interval;
|
||||
|
||||
@@ -214,7 +214,7 @@ CURLcode add_buffer(send_buffer *in, void *inptr, size_t size)
|
||||
static
|
||||
int GetLine(int sockfd, char *buf, struct connectdata *conn)
|
||||
{
|
||||
size_t nread;
|
||||
ssize_t nread;
|
||||
int read_rc=1;
|
||||
char *ptr;
|
||||
struct UrlData *data=conn->data;
|
||||
|
||||
@@ -198,10 +198,10 @@ CURLcode Curl_client_write(struct UrlData *data,
|
||||
*/
|
||||
CURLcode Curl_read(struct connectdata *conn, int sockfd,
|
||||
char *buf, size_t buffersize,
|
||||
size_t *n)
|
||||
ssize_t *n)
|
||||
{
|
||||
struct UrlData *data = conn->data;
|
||||
size_t nread;
|
||||
ssize_t nread;
|
||||
|
||||
#ifdef USE_SSLEAY
|
||||
if (data->ssl.use) {
|
||||
@@ -234,7 +234,7 @@ CURLcode Curl_read(struct connectdata *conn, int sockfd,
|
||||
*/
|
||||
|
||||
CURLcode curl_read(CURLconnect *c_conn, char *buf, size_t buffersize,
|
||||
size_t *n)
|
||||
ssize_t *n)
|
||||
{
|
||||
struct connectdata *conn = (struct connectdata *)c_conn;
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ CURLcode Curl_client_write(struct UrlData *data, int type, char *ptr,
|
||||
/* internal read-function, does plain socket, SSL and krb4 */
|
||||
CURLcode Curl_read(struct connectdata *conn, int sockfd,
|
||||
char *buf, size_t buffersize,
|
||||
size_t *n);
|
||||
ssize_t *n);
|
||||
/* internal write-function, does plain socket, SSL and krb4 */
|
||||
CURLcode Curl_write(struct connectdata *conn, int sockfd,
|
||||
void *mem, size_t len,
|
||||
|
||||
22
lib/telnet.c
22
lib/telnet.c
@@ -833,7 +833,7 @@ CURLcode Curl_telnet(struct connectdata *conn)
|
||||
|
||||
bool keepon = TRUE;
|
||||
char *buf = data->buffer;
|
||||
size_t nread;
|
||||
ssize_t nread;
|
||||
|
||||
init_telnet(data);
|
||||
|
||||
@@ -872,20 +872,22 @@ CURLcode Curl_telnet(struct connectdata *conn)
|
||||
}
|
||||
}
|
||||
|
||||
if(FD_ISSET(sockfd, &readfd))
|
||||
if(FD_ISSET(sockfd, &readfd)) {
|
||||
Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
|
||||
|
||||
/* if we receive 0 or less here, the server closed the connection and
|
||||
we bail out from this! */
|
||||
if (nread <= 0) {
|
||||
keepon = FALSE;
|
||||
break;
|
||||
}
|
||||
/* if we receive 0 or less here, the server closed the connection and
|
||||
we bail out from this! */
|
||||
if (nread <= 0) {
|
||||
keepon = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
telrcv(data, (unsigned char *)buf, nread);
|
||||
telrcv(data, (unsigned char *)buf, nread);
|
||||
}
|
||||
}
|
||||
}
|
||||
return CURLE_OK;
|
||||
/* mark this as "no further transfer wanted" */
|
||||
return Curl_Transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
CURLcode static
|
||||
_Transfer(struct connectdata *c_conn)
|
||||
{
|
||||
size_t nread; /* number of bytes read */
|
||||
ssize_t nread; /* number of bytes read */
|
||||
int bytecount = 0; /* total number of bytes read */
|
||||
int writebytecount = 0; /* number of bytes written */
|
||||
long contentlength=0; /* size of incoming data */
|
||||
@@ -161,6 +161,12 @@ _Transfer(struct connectdata *c_conn)
|
||||
Curl_pgrsTime(data, TIMER_PRETRANSFER);
|
||||
Curl_speedinit(data);
|
||||
|
||||
if((conn->sockfd == -1) &&
|
||||
(conn->writesockfd == -1)) {
|
||||
/* nothing to read, nothing to write, we're already OK! */
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
if (!conn->getheader) {
|
||||
header = FALSE;
|
||||
if(conn->size > 0)
|
||||
@@ -444,9 +450,14 @@ _Transfer(struct connectdata *c_conn)
|
||||
write a chunk of the body */
|
||||
if(conn->protocol&PROT_HTTP) {
|
||||
/* HTTP-only checks */
|
||||
if (data->resume_from &&
|
||||
!content_range &&
|
||||
(data->httpreq==HTTPREQ_GET)) {
|
||||
if (data->newurl) {
|
||||
/* abort after the headers if "follow Location" is set */
|
||||
infof (data, "Follow to new URL: %s\n", data->newurl);
|
||||
return CURLE_OK;
|
||||
}
|
||||
else if (data->resume_from &&
|
||||
!content_range &&
|
||||
(data->httpreq==HTTPREQ_GET)) {
|
||||
/* we wanted to resume a download, although the server
|
||||
doesn't seem to support this and we did this with a GET
|
||||
(if it wasn't a GET we did a POST or PUT resume) */
|
||||
@@ -454,11 +465,6 @@ _Transfer(struct connectdata *c_conn)
|
||||
"byte ranges. Cannot resume.");
|
||||
return CURLE_HTTP_RANGE_ERROR;
|
||||
}
|
||||
else if (data->newurl) {
|
||||
/* abort after the headers if "follow Location" is set */
|
||||
infof (data, "Follow to new URL: %s\n", data->newurl);
|
||||
return CURLE_OK;
|
||||
}
|
||||
else if(data->timecondition && !data->range) {
|
||||
/* A time condition has been set AND no ranges have been
|
||||
requested. This seems to be what chapter 13.3.4 of
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#define CURL_NAME "curl"
|
||||
#define CURL_VERSION "7.6.1-pre1"
|
||||
#define CURL_VERSION "7.6.1-pre2"
|
||||
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "
|
||||
|
||||
@@ -61,4 +61,5 @@ command29.txt error30.txt name30.txt prot30.txt reply30.txt \
|
||||
command30.txt name29.txt prot29.txt reply29.txt \
|
||||
command31.txt name32.txt reply31.txt reply32.txt \
|
||||
command32.txt prot31.txt reply310001.txt reply320001.txt \
|
||||
name31.txt prot32.txt reply310002.txt reply320002.txt
|
||||
name31.txt prot32.txt reply310002.txt reply320002.txt \
|
||||
command33.txt extra33.txt name33.txt prot33.txt reply33.txt
|
||||
|
||||
3
tests/data/command33.txt
Normal file
3
tests/data/command33.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
http://%HOSTIP:%HOSTPORT/33 -Tdata/extra33.txt -C 50
|
||||
|
||||
|
||||
15
tests/data/extra33.txt
Normal file
15
tests/data/extra33.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
1
tests/data/name33.txt
Normal file
1
tests/data/name33.txt
Normal file
@@ -0,0 +1 @@
|
||||
HTTP PUT resume
|
||||
18
tests/data/prot33.txt
Normal file
18
tests/data/prot33.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
PUT /33 HTTP/1.0
|
||||
Content-Range: bytes 50-149/150
|
||||
User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled)
|
||||
Host: 127.0.0.1:8999
|
||||
Pragma: no-cache
|
||||
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
|
||||
Content-Length: 100
|
||||
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
012345678
|
||||
7
tests/data/reply33.txt
Normal file
7
tests/data/reply33.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
HTTP/1.1 303 See Other
|
||||
Server: fake
|
||||
Location: /moo/moo/moo/320002
|
||||
|
||||
This Location should be fetched with a GET!
|
||||
|
||||
|
||||
@@ -507,6 +507,7 @@ sub singletest {
|
||||
unlink($STDOUT);
|
||||
unlink($STDERR);
|
||||
|
||||
unlink("$LOGDIR/upload.$NUMBER"); # remove upload leftovers
|
||||
unlink($CURLOUT); # remove the downloaded results
|
||||
unlink($FTPDCMD); # remove the instructions for this test
|
||||
|
||||
|
||||
Reference in New Issue
Block a user