From 274381f5cee4b92de17bee1d4283638219e11bc5 Mon Sep 17 00:00:00 2001 From: Rom Walton Date: Tue, 3 Mar 2009 17:04:30 +0000 Subject: [PATCH] - Update to LibCurl 7.19.4 for Win32 and Win64 curl/ svn path=/trunk/boinc/; revision=17448 --- checkin_notes | 6 ++ curl/include/curl/curl.h | 73 +++++++++++++++-- curl/include/curl/curlver.h | 8 +- curl/include/curl/typecheck-gcc.h | 5 +- .../{7.19.2.Sync => 7.19.4.Sync}/hostip.h | 79 +++++++------------ 5 files changed, 110 insertions(+), 61 deletions(-) rename curl/patches/{7.19.2.Sync => 7.19.4.Sync}/hostip.h (80%) diff --git a/checkin_notes b/checkin_notes index 0c6f2a52c1..0d2c2ad847 100644 --- a/checkin_notes +++ b/checkin_notes @@ -2551,3 +2551,9 @@ David 3 Mar 2009 sched/ sched_send.cpp + +Rom 2 Mar 2009 + - Update to LibCurl 7.19.4 for Win32 and Win64 + + curl/ + diff --git a/curl/include/curl/curl.h b/curl/include/curl/curl.h index e94ff5f9d1..8d952caabf 100644 --- a/curl/include/curl/curl.h +++ b/curl/include/curl/curl.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -459,7 +459,10 @@ typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */ void *userptr); typedef enum { - CURLPROXY_HTTP = 0, /* added in 7.10 */ + CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use + CONNECT HTTP/1.1 */ + CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT + HTTP/1.0 */ CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already in 7.10 */ CURLPROXY_SOCKS5 = 5, /* added in 7.10 */ @@ -527,6 +530,17 @@ typedef enum { CURLFTPAUTH_LAST /* not an option, never use */ } curl_ftpauth; +/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */ +typedef enum { + CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */ + CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD + again if MKD succeeded, for SFTP this does + similar magic */ + CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD + again even if MKD failed! */ + CURLFTP_CREATE_DIR_LAST /* not an option, never use */ +} curl_ftpcreatedir; + /* parameter for the CURLOPT_FTP_FILEMETHOD option */ typedef enum { CURLFTPMETHOD_DEFAULT, /* let libcurl pick */ @@ -536,6 +550,21 @@ typedef enum { CURLFTPMETHOD_LAST /* not an option, never use */ } curl_ftpmethod; +/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */ +#define CURLPROTO_HTTP (1<<0) +#define CURLPROTO_HTTPS (1<<1) +#define CURLPROTO_FTP (1<<2) +#define CURLPROTO_FTPS (1<<3) +#define CURLPROTO_SCP (1<<4) +#define CURLPROTO_SFTP (1<<5) +#define CURLPROTO_TELNET (1<<6) +#define CURLPROTO_LDAP (1<<7) +#define CURLPROTO_LDAPS (1<<8) +#define CURLPROTO_DICT (1<<9) +#define CURLPROTO_FILE (1<<10) +#define CURLPROTO_TFTP (1<<11) +#define CURLPROTO_ALL (~0) /* enable everything */ + /* long may be 32 or 64 bits, but we should never depend on anything else but 32 */ #define CURLOPTTYPE_LONG 0 @@ -868,7 +897,7 @@ typedef enum { /* DNS cache timeout */ CINIT(DNS_CACHE_TIMEOUT, LONG, 92), - /* send linked-list of pre-transfer QUOTE commands (Wesley Laxton)*/ + /* send linked-list of pre-transfer QUOTE commands */ CINIT(PREQUOTE, OBJECTPOINT, 93), /* set the debug function */ @@ -933,7 +962,10 @@ typedef enum { argument */ CINIT(SSL_CTX_DATA, OBJECTPOINT, 109), - /* FTP Option that causes missing dirs to be created on the remote server */ + /* FTP Option that causes missing dirs to be created on the remote server. + In 7.19.4 we introduced the convenience enums for this option using the + CURLFTP_CREATE_DIR prefix. + */ CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110), /* Set this to a bitmask value to enable the particular authentications @@ -1150,6 +1182,36 @@ typedef enum { CINIT(PROXYUSERNAME, OBJECTPOINT, 175), CINIT(PROXYPASSWORD, OBJECTPOINT, 176), + /* Comma separated list of hostnames defining no-proxy zones. These should + match both hostnames directly, and hostnames within a domain. For + example, local.com will match local.com and www.local.com, but NOT + notlocal.com or www.notlocal.com. For compatibility with other + implementations of this, .local.com will be considered to be the same as + local.com. A single * is the only valid wildcard, and effectively + disables the use of proxy. */ + CINIT(NOPROXY, OBJECTPOINT, 177), + + /* block size for TFTP transfers */ + CINIT(TFTP_BLKSIZE, LONG, 178), + + /* Socks Service */ + CINIT(SOCKS5_GSSAPI_SERVICE, LONG, 179), + + /* Socks Service */ + CINIT(SOCKS5_GSSAPI_NEC, LONG, 180), + + /* set the bitmask for the protocols that are allowed to be used for the + transfer, which thus helps the app which takes URLs from users or other + external inputs and want to restrict what protocol(s) to deal + with. Defaults to CURLPROTO_ALL. */ + CINIT(PROTOCOLS, LONG, 181), + + /* set the bitmask for the protocols that libcurl is allowed to follow to, + as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs + to be set in both bitmasks to be allowed to get redirected to. Defaults + to all protocols except FILE and SCP. */ + CINIT(REDIR_PROTOCOLS, LONG, 182), + CURLOPT_LASTENTRY /* the last unused */ } CURLoption; @@ -1571,9 +1633,10 @@ typedef enum { CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32, CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33, CURLINFO_CERTINFO = CURLINFO_SLIST + 34, + CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35, /* Fill in new entries below here! */ - CURLINFO_LASTONE = 34 + CURLINFO_LASTONE = 35 } CURLINFO; /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as diff --git a/curl/include/curl/curlver.h b/curl/include/curl/curlver.h index b6d9d99736..17a19227ed 100644 --- a/curl/include/curl/curlver.h +++ b/curl/include/curl/curlver.h @@ -31,13 +31,13 @@ /* This is the version number of the libcurl package from which this header file origins: */ -#define LIBCURL_VERSION "7.19.3" +#define LIBCURL_VERSION "7.19.4" /* The numeric version number is also available "in parts" by using these defines: */ #define LIBCURL_VERSION_MAJOR 7 #define LIBCURL_VERSION_MINOR 19 -#define LIBCURL_VERSION_PATCH 3 +#define LIBCURL_VERSION_PATCH 4 /* This is the numeric version of the libcurl version number, meant for easier parsing and comparions by programs. The LIBCURL_VERSION_NUM define will @@ -54,7 +54,7 @@ and it is always a greater number in a more recent release. It makes comparisons with greater than and less than work. */ -#define LIBCURL_VERSION_NUM 0x071303 +#define LIBCURL_VERSION_NUM 0x071304 /* * This is the date and time when the full source package was created. The @@ -65,6 +65,6 @@ * * "Mon Feb 12 11:35:33 UTC 2007" */ -#define LIBCURL_TIMESTAMP "Mon Jan 19 09:59:36 UTC 2009" +#define LIBCURL_TIMESTAMP "Mon Mar 2 23:06:35 UTC 2009" #endif /* __CURL_CURLVER_H */ diff --git a/curl/include/curl/typecheck-gcc.h b/curl/include/curl/typecheck-gcc.h index feb7a702f1..9788305819 100644 --- a/curl/include/curl/typecheck-gcc.h +++ b/curl/include/curl/typecheck-gcc.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -20,7 +20,7 @@ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * - * $Id: typecheck-gcc.h,v 1.8 2008-10-17 03:59:02 yangtse Exp $ + * $Id: typecheck-gcc.h,v 1.9 2009-01-25 23:26:31 bagder Exp $ ***************************************************************************/ /* wraps curl_easy_setopt() with typechecking */ @@ -201,6 +201,7 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist, (option) == CURLOPT_PROXYUSERPWD || \ (option) == CURLOPT_PROXYUSERNAME || \ (option) == CURLOPT_PROXYPASSWORD || \ + (option) == CURLOPT_NOPROXY || \ (option) == CURLOPT_ENCODING || \ (option) == CURLOPT_REFERER || \ (option) == CURLOPT_USERAGENT || \ diff --git a/curl/patches/7.19.2.Sync/hostip.h b/curl/patches/7.19.4.Sync/hostip.h similarity index 80% rename from curl/patches/7.19.2.Sync/hostip.h rename to curl/patches/7.19.4.Sync/hostip.h index dfac792153..b782d2b26d 100644 --- a/curl/patches/7.19.2.Sync/hostip.h +++ b/curl/patches/7.19.4.Sync/hostip.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -20,11 +20,16 @@ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * - * $Id: hostip.h,v 1.59 2007-09-28 21:48:28 bagder Exp $ + * $Id: hostip.h,v 1.69 2008-11-06 17:19:57 yangtse Exp $ ***************************************************************************/ #include "setup.h" #include "hash.h" +#include "curl_addrinfo.h" + +#ifdef HAVE_SETJMP_H +#include +#endif #ifdef NETWARE #undef in_addr_t @@ -80,37 +85,20 @@ #define ares_destroy(x) do {} while(0) #endif -/* - * Curl_addrinfo MUST be used for all name resolved info. - */ -#ifdef CURLRES_IPV6 -typedef struct addrinfo Curl_addrinfo; -#else -/* OK, so some ipv4-only include tree probably have the addrinfo struct, but - to work even on those that don't, we provide our own look-alike! */ -struct Curl_addrinfo { - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */ - char *ai_canonname; - struct sockaddr *ai_addr; - struct Curl_addrinfo *ai_next; -}; -typedef struct Curl_addrinfo Curl_addrinfo; -#endif - struct addrinfo; struct hostent; struct SessionHandle; struct connectdata; -void Curl_global_host_cache_init(void); +/* + * Curl_global_host_cache_init() initializes and sets up a global DNS cache. + * Global DNS cache is general badness. Do not use. This will be removed in + * a future version. Use the share interface instead! + * + * Returns a struct curl_hash pointer on success, NULL on failure. + */ +struct curl_hash *Curl_global_host_cache_init(void); void Curl_global_host_cache_dtor(void); -struct curl_hash *Curl_global_host_cache_get(void); - -#define Curl_global_host_cache_use(__p) ((__p)->set.global_dns_cache) struct Curl_dns_entry { Curl_addrinfo *addr; @@ -127,11 +115,15 @@ struct Curl_dns_entry { * use, or we'll leak memory! */ /* return codes */ +#define CURLRESOLV_TIMEDOUT -2 #define CURLRESOLV_ERROR -1 #define CURLRESOLV_RESOLVED 0 #define CURLRESOLV_PENDING 1 int Curl_resolv(struct connectdata *conn, const char *hostname, int port, struct Curl_dns_entry **dnsentry); +int Curl_resolv_timeout(struct connectdata *conn, const char *hostname, + int port, struct Curl_dns_entry **dnsentry, + long timeoutms); /* * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've @@ -172,9 +164,6 @@ void Curl_resolv_unlock(struct SessionHandle *data, /* for debugging purposes only: */ void Curl_scan_cache_used(void *user, void *ptr); -/* free name info */ -void Curl_freeaddrinfo(Curl_addrinfo *freeaddr); - /* make a new dns cache and return the handle */ struct curl_hash *Curl_mk_dnscache(void); @@ -184,14 +173,7 @@ void Curl_hostcache_prune(struct SessionHandle *data); /* Return # of adresses in a Curl_addrinfo struct */ int Curl_num_addresses (const Curl_addrinfo *addr); -#ifdef CURLDEBUG -void curl_dofreeaddrinfo(struct addrinfo *freethis, - int line, const char *source); -int curl_dogetaddrinfo(const char *hostname, const char *service, - struct addrinfo *hints, - struct addrinfo **result, - int line, const char *source); -#ifdef HAVE_GETNAMEINFO +#if defined(CURLDEBUG) && defined(HAVE_GETNAMEINFO) int curl_dogetnameinfo(GETNAMEINFO_QUAL_ARG1 GETNAMEINFO_TYPE_ARG1 sa, GETNAMEINFO_TYPE_ARG2 salen, char *host, GETNAMEINFO_TYPE_ARG46 hostlen, @@ -199,7 +181,6 @@ int curl_dogetnameinfo(GETNAMEINFO_QUAL_ARG1 GETNAMEINFO_TYPE_ARG1 sa, GETNAMEINFO_TYPE_ARG7 flags, int line, const char *source); #endif -#endif /* This is the callback function that is used when we build with asynch resolve, ipv4 */ @@ -216,17 +197,9 @@ CURLcode Curl_addrinfo6_callback(void *arg, #ifdef HAVE_CARES_CALLBACK_TIMEOUTS int timeouts, #endif - struct addrinfo *ai); + Curl_addrinfo *ai); -/* [ipv4/ares only] Creates a Curl_addrinfo struct from a numerical-only IP - address */ -Curl_addrinfo *Curl_ip2addr(in_addr_t num, const char *hostname, int port); - -/* [ipv4/ares only] Curl_he2ai() converts a struct hostent to a Curl_addrinfo chain - and returns it */ -Curl_addrinfo *Curl_he2ai(const struct hostent *, int port); - /* Clone a Curl_addrinfo struct, works protocol independently */ Curl_addrinfo *Curl_addrinfo_copy(const void *orig, int port); @@ -260,7 +233,13 @@ void Curl_destroy_thread_data(struct Curl_async *async); #define CURL_INADDR_NONE INADDR_NONE #endif - - +#ifdef HAVE_SIGSETJMP +/* Forward-declaration of variable defined in hostip.c. Beware this + * is a global and unique instance. This is used to store the return + * address that we can jump back to from inside a signal handler. + * This is not thread-safe stuff. + */ +extern sigjmp_buf curl_jmpenv; +#endif #endif