diff options
Diffstat (limited to 'plugins/FTPFileYM/curl/CHANGES')
-rw-r--r-- | plugins/FTPFileYM/curl/CHANGES | 8008 |
1 files changed, 3916 insertions, 4092 deletions
diff --git a/plugins/FTPFileYM/curl/CHANGES b/plugins/FTPFileYM/curl/CHANGES index 08f0a8f60d..a384fadba8 100644 --- a/plugins/FTPFileYM/curl/CHANGES +++ b/plugins/FTPFileYM/curl/CHANGES @@ -6,5746 +6,5570 @@ Changelog -Version 7.29.0 (6 Feb 2013) +Version 7.33.0 (13 Oct 2013) -Daniel Stenberg (6 Feb 2013) -- vms: config-vms.h is removed, no use trying to distribute it +Daniel Stenberg (13 Oct 2013) +- RELEASE-NOTES: synced with 92cf6141ed0de -- RELEASE-NOTES: mention the SASL buffer overflow - -- [Eldar Zaitov brought this change] - - Curl_sasl_create_digest_md5_message: fix buffer overflow - - When negotiating SASL DIGEST-MD5 authentication, the function - Curl_sasl_create_digest_md5_message() uses the data provided from the - server without doing the proper length checks and that data is then - appended to a local fixed-size buffer on the stack. - - This vulnerability can be exploited by someone who is in control of a - server that a libcurl based program is accessing with POP3, SMTP or - IMAP. For applications that accept user provided URLs, it is also - thinkable that a malicious user would feed an application with a URL to - a server hosting code targetting this flaw. +- curl: fix --oauth2-bearer in the --help output - Bug: http://curl.haxx.se/docs/adv_20130206.html + After the option rename in 5df04bfafd1 -Steve Holme (6 Feb 2013) -- FEATURES: Removed erroneous whitespace +- OpenSSL: improve the grammar of the language in 39beaa5ffbcc - Removed whitespace introduced in commit 5f8f20f5e65b that caused - formatting issues when generating the website docs. + Reported-by: Petr Pisar -Yang Tse (6 Feb 2013) -- setup-vms.h: post VMS patch cleanup - III - - - rename post-config-vms.h to setup-vms.h - - move its inclusion into proper location in curl_setup.h +- [Andrej E Baranov brought this change] -- vms_show: post VMS patch cleanup - II + OpenSSL: use failf() when subjectAltName mismatches - - remove multiple declarations of vms_show and add comments - -- tool_main.c: post VMS patch cleanup - I + Write to CURLOPT_ERRORBUFFER information about mismatch alternative + certificate subject names. - - remove header inclusion already done in curl_setup_once.h + Signed-off-by: Andrej E Baranov <admin@andrej-andb.ru> -Steve Holme (6 Feb 2013) -- FEATURES: Added SSPI to list of NTLM libraries +- curl: rename --bearer to --oauth2-bearer + + The option '--bearer' might be slightly ambiguous in name. It doesn't + create any conflict that I am aware of at the moment, however, OAUTH v2 + is not the only authentication mechanism which uses "bearer" tokens. + + Reported-by: Kyle L. Huff + URL: http://curl.haxx.se/mail/lib-2013-10/0064.html -- FEATURES: Added Secure Transport and qssl to list of SSL libraries +- [Kamil Dudka brought this change] -- FEATURES: Added email feature set + ssh: improve the logic for detecting blocking direction - Added SMTP, SMTPS, POP3, POP3S, IMAP and IMAPS features. + This fixes a regression introduced by commit 0feeab78 limiting the speed + of SCP upload to 16384 B/s on a fast connection (such as localhost). -- imap.h: Corrected incorrect comment clarification - - Corrected comment clarification made in commit 167717b8069a. +Dan Fandrich (12 Oct 2013) +- Fixed typo in Makefile.inc that left http2.h out of the tar ball -- COPYING: Updated copyright year to include 2013 +Daniel Stenberg (11 Oct 2013) +- [Heinrich Schaefer brought this change] -Daniel Stenberg (5 Feb 2013) -- RELEASE-NOTES: synced with 25f351424b3538 - - 8 more bug fixes mentioned + minor fix in doc -- [John E. Malmberg brought this change] +- [Gisle Vanem brought this change] - VMS: fix and generate the VMS build config - - config_h.com is a new file that generates a config.h file based on the - curl_config.h.in file and a quick scan of the configure script. This is - actually a generic procedure that is shared with other VMS packages. - - The existing pre-built config-vms.h had over 100 entries that were not - correct and in some cases conflicted with the build options available in - the build_vms.com. - - generate_config_vms_h_curl.com is a helper procedure to the - config_h.com. It covers the cases that the generic config_h.com is not - able to figure out, and accepts input from the build_vms.com procedure. + curl_setup_once: fix errno access for lwip on Windows - build_curlbuild_h.com is a new file to generate the curlbuild.h file - that Curl is now using when it is using a curl_config.h file. - - post-config-vms.h is a new file that is needed to provide VMS specific - definitions, and most of them need to be set before the system header - files are included. - - The VMS build procedure is fixed: - - 1. Fixed to link in the correct HP ssl library. - 2. Fixed to detect if HP Kerberos is installed. - 3. Fixed to detect if HP LDAP is installed. - 4. Fixed to detect if gnv$libzshr is installed. - 5. Simplified the input parameter parsing to not use a loop. - 6. Warn that 64 bit pointer option support is not complete - in comments. - 7. Default to IEEE floating if platform supports it so - resulting libcurl will be compatible with other - open source projects on VMS. - 8. Default to LARGEFILE if platform supports it. - 9. Default to enable SSL, LDAP, Kerberos, libz - if the libraries are present. - 10. Build with exact case global symbols for libcurl. - 11. Generate linker option file needed. - 12. Compiler list option only commonly needed items. - 13. fulllist option for those who really want it. - 14. Create debug symbol file on Alpha, IA64. + lib/curl_setup_once.h assumed lwIP on Windows uses 'SetLastError()' to + set network errors. It doesn't; it uses 'errno'. -- Curl_proxyCONNECT: return once CONNECT is sent - - By doing this unconditionally, we infer a simpler and more defined - behavior. This also has the upside that test 1021 no longer fails for me - even if I run with valgrind. - - Also fixed some wrong comments. +- test1239: verify 4cd444e01ad and the simulated 304 response -Steve Holme (5 Feb 2013) -- email: Reworked comments in the endofresp() functions - - Tidied up the comments in the endofresp() functions to be more - meaningful prior to release. +- [Derek Higgins brought this change] -Marc Hoersken (5 Feb 2013) -- schannel: Removed extended error connection setup flag - - According KB975858 this flag may cause problems on Windows 7 and - Windows Server 2008 R2 systems. Extended error information is not - currently used by libcurl and therefore not a requirement. + HTTP: Output http response 304 when modified time is too old - The flag may improve the SSL-connection shutdown in case of an - error. This means it might be a good improvement in the future. - - Fixes bug/issue #1187 - thanks for the report + When using the -w '%{http_code}' flag and simulating a Not Modified then + 304 should be output. -Daniel Stenberg (5 Feb 2013) -- [Tor Arntsen brought this change] +- contributors: helper script to dig out contributors from git - singleipconnect: Update *sockp for all CURLE_OK - - The 56b7c87c7 change left a case where a good sockfd was not copied to - *sockp before returning with CURLE_OK +- RELEASE-NOTES: add twos refs to bug reports -- curl_easy_perform: Value stored to 'mcode' is never read - - pointed out by clang-analyzer +- RELEASE-NOTES: synced with 173160c0d068 -- singleipconnect: remove dead assignment +Nick Zitzmann (2 Oct 2013) +- darwinssl: block TLS_RSA_WITH_NULL_SHA256 cipher - pointed out by clang-analyzer + Credit (for catching a cipher I forgot to add to the blocked ciphers list): + https://www.ssllabs.com/ssltest/viewMyClient.html -Linus Nielsen Feltzing (5 Feb 2013) -- CURLMOPT_MAXCONNECTS: restore functionality +Daniel Stenberg (2 Oct 2013) +- OpenSSL: acknowledge CURLOPT_SSL_VERIFYHOST without VERIFYPEER - When a connection is no longer used, it is kept in the cache. If the - cache is full, the oldest idle connection is closed. If no connection is - idle, the current one is closed instead. - -Steve Holme (5 Feb 2013) -- RELEASE-NOTES: Updated following recent changes to the email protocols + Setting only CURLOPT_SSL_VERIFYHOST without CURLOPT_SSL_VERIFYPEER set + should still verify that the host name fields in the server certificate + is fine or return failure. - Added recent additions and fixes following the changes to imap, pop3 - and smtp. Additionally added another contributor that helped to test - the imap sasl changes. + Bug: http://curl.haxx.se/mail/lib-2013-10/0002.html + Reported-by: Ishan SinghLevett -- email: Provided extra comments following recent pop3/imap fixes +- KNOWN_BUGS: #84: CURLINFO_SSL_VERIFYRESULT - Provided additional clarification about the logic of the authenticate() - functions following commit 6b6bdc83bd36 and b4270a9af1d0. + CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS + backends and not for any other! -Daniel Stenberg (5 Feb 2013) -- [Andrei Kurushin brought this change] +- [François Charlier brought this change] - winbuild: include version info for .dll .exe - - Bug: http://curl.haxx.se/bug/view.cgi?id=1186 + xattr: add support for FreeBSD xattr API -- FAQ: clarify 5.13 How do I stop an ongoing transfer - - Rich Gray provided good feedback and we now clarify that you can in fact - stop a multi transfer at any point you like by removing the easy handle. +- curl_easy_setopt.3: slight clarification of SEEKFUNCTION -- [Matt Arsenault brought this change] +Steve Holme (29 Sep 2013) +- tests: Fixed typos from commit 25a0c96a494297 - cmake: Fix mingw build +- tests: Updated email addresses in SMTP tests following recent changes -- [Sergei Nikulov brought this change] +- test909: Removed custom EHLO response after recent changes + + ...as it is no longer required following capability and authentication + changes and is now causing problems following commit 49341628b50007 as + the test number is obtained from the client address in the EHLO. - cmake: updated OpenSSL build +- ftpserver.pl: Fixed compilation error from commit 49341628b50007 -Steve Holme (4 Feb 2013) -- pop3.c: Updated variable names to use shorter / more readable variant +- ftpserver.pl: Moved specifying the test number from the RCPT address - Tidied up code from commit 6b6bdc83bdUpdated where a few instances of - the pop3c struct variable used the longer conndata struct rather than - matching what other code in pop3_authenticate() used. + ...to the client address as this frees the RCPT strings to contain + just an email address and by passing the test number into curl as the + client address remains consistent with POP3 and IMAP tests as they are + specified in the URL. -Guenter Knauf (4 Feb 2013) -- updated copyright years. +- ftpserver.pl: Added unwanted argument check to SMTP DATA command handler -- configure: update the copyright years for the output. - -Steve Holme (3 Feb 2013) -- imap: Fixed no known authentication mechanism when fallback is required - - Fixed an issue where (lib)curl is compiled without support for a - supported challenge-response based SASL authentication mechanism, such - as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN - mechanisms and (lib)curl doesn't fallback to Clear Text authentication. - - Note: In order to fallback to Clear Text authentication properly this - fix adds support for the LOGINDISABLED server capability. - imap: Fixed no known authentication mechanism when fallback is required - - Fixed an issue where (lib)curl is compiled without support for a - supported challenge-response based SASL authentication mechanism, such - as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN - mechanisms and (lib)curl doesn't fallback to Clear Text authentication. - - Note: In order to fallback to Clear Text authentication properly this - fix adds support for the LOGINDISABLED server capability. +Daniel Stenberg (29 Sep 2013) +- getinmemory: remove a comment - Related bug: http://curl.haxx.se/mail/lib-2013-02/0004.html - Reported by: Stanislav Ivochkin + The comment mentioned the need to free the data, but the example already + does that free -- pop3: Fixed no known authentication mechanism when fallback is required +- postinmemory: new example - Fixed an issue where (lib)curl is compiled without support for a - supported challenge-response based SASL authentication mechanism, such - as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN - mechanisms and (lib)curl doesn't fallback to APOP or Clear Text - authentication. + This is similar to getinmemory.c but with an initial POST. - Bug: http://curl.haxx.se/mail/lib-2013-02/0004.html - Reported by: Stanislav Ivochkin + Combined-by: Ulf Samuelsson -Daniel Stenberg (1 Feb 2013) -- singleipconnect: simplify and clean up +- win32: fix Visual Studio 2010 build with WINVER >= 0x600 - Remove timeout argument that's never used. + If no WINVER and/or _WIN32_IWNNT define was set, the Windows platform + SDK often defaults to high value, e.g. 0x601 (whoch may probably depend + on the Windows version being used, in my case Windows 7). - Make the actual connection get detected on a single spot to reduce code - duplication. + If WINVER >= 0x600 then winsock2.h includes some defines for WSAPoll(), + e.g. POLLIN, POLLPRI, POLLOUT etc. These defines clash with cURL's + lib/select.h. - Store the IPv6 state already when the connection is attempted. - -- Curl_perfom: removed + Make sure HAVE_STRUCT_POLLFD is defined then. - Curl_perfom is no longer used anywhere since the always-multi commit - c43127414d89ccb9, and some related functions were used only from within - Curl_perfom. - -Guenter Knauf (30 Jan 2013) -- Updated date. + Bug: http://curl.haxx.se/bug/view.cgi?id=1282 + Reported-by: "kdekker" + Patch-by: Marcel Raad -Yang Tse (30 Jan 2013) -- zz40-xc-ovr.m4: fix 'wc' detection - follow-up 2 +Steve Holme (28 Sep 2013) +- ssluse.c: Fixed compilation warnings when ENGINE not supported - - Fix a pair of single quotes to double quotes. - - URL: http://curl.haxx.se/mail/lib-2013-01/0355.html - Reported by: Tor Arntsen + The function "ssl_ui_reader" was declared but never referenced + The function "ssl_ui_writer" was declared but never referenced -- zz40-xc-ovr.m4: fix 'wc' detection - follow-up +Daniel Stenberg (27 Sep 2013) +- configure: use icc options without space - - Take into account that 'wc' may return leading spaces and/or tabs. + The latest version(s) of the icc compiler no longer accept the extra + space in the -we (warning enable), -wd (warning disable), etc. - - Set initial IFS to space, tab and newline. + Reported-by: Elmira A Semenova + Bug: http://curl.haxx.se/mail/lib-2013-09/0182.html + +Steve Holme (25 Sep 2013) +- imap: Added clarification to the code about odd continuation responses -- zz40-xc-ovr.m4: fix 'wc' detection +- ftp.c: Fixed compilation warning - - Take into account that 'wc' may return leading spaces. + There is an implicit conversion from "unsigned long" to "long" + +- sasl: Centralised the authentication mechanism strings - - Set internationalization behavior variables. + Moved the standard SASL mechanism strings into curl_sasl.h rather than + hard coding the same values over and over again in the protocols that + use SASL authentication. - Tor Arntsen analyzed and reported the issue. + For more information about the mechanism strings see: - URL: http://curl.haxx.se/mail/lib-2013-01/0351.html + http://www.iana.org/assignments/sasl-mechanisms -- zz40-xc-ovr.m4: check another three basic utilities +Daniel Stenberg (23 Sep 2013) +- RELEASE-NOTES: added recent contributors missing -Guenter Knauf (29 Jan 2013) -- Fixed debug.c to work again unchanged. - - Added CURLOPT_FOLLOWLOCATION since example.com is now redirected. +Steve Holme (23 Sep 2013) +- test906: Fixed type-2 response -Daniel Stenberg (29 Jan 2013) -- [Nick Zitzmann brought this change] +- test915: Corrected test number from commit 22bccb0edaf041 - darwinssl: Fix bug where packets were sometimes transmitted twice - - There was a bug where, if SSLWrite() returned errSSLWouldBlock but did - succeed in transmitting at least something, then we'd incorrectly - resend the packet. Now we never take errSSLWouldBlock as a sign that - nothing was transferred to/from the server. +- test906: Fixed type-1 message not handled error - Bug: http://curl.haxx.se/mail/lib-2013-01/0295.html - Reported by: Bruno de Carvalho + ...from commit f81d1e16664976 due to copy paste error. -- [Nick Zitzmann brought this change] +- tests: Added SMTP AUTH NTLM test - FAQ: "Darwinssl" is AKA "Secure Transport" and supports NTLM +- tests: Added SMTP multiple and invalid --mail-rcpt test -- RELEASE-NOTES: only list Nick once - - Even though he's a fine dude, once is enough for this time! +- tests: Added SMTP multiple --mail-rcpt test -Yang Tse (28 Jan 2013) -- zz40-xc-ovr.m4: 1.0 interface stabilization - - - Stabilization results in 4 public interface m4 macros: - XC_CONFIGURE_PREAMBLE - XC_CONFIGURE_PREAMBLE_VER_MAJOR - XC_CONFIGURE_PREAMBLE_VER_MINOR - XC_CHECK_PATH_SEPARATOR - - Avoid one level of internal indirection - - Update comments - - Drop XC_OVR_ZZ40 macro +- tests: Added SMTP invalid --mail-rcpt test -Kamil Dudka (28 Jan 2013) -- docs: fix typos in man pages - - Reported by: Jiri Jaburek - Bug: https://bugzilla.redhat.com/896544 +- tests: Regrouping of SMTP tests + +Daniel Stenberg (22 Sep 2013) +- [Benoit Sigoure brought this change] -- docs: update the comments about loading CA certs with NSS + test1112: Increase the timeout from 7s to 16s - Bug: https://bugzilla.redhat.com/696783 + As someone reported on the mailing list a while back, the hard-coded + arbitrary timeout of 7s in test 1112 is not sufficient in some build + environments. At Arista Networks we build and test curl as part of our + automated build system, and we've run into this timeout 170 times so + far. Our build servers are typically quite busy building and testing a + lot of code in parallel, so despite being beefy machines with 32 cores + and 128GB of RAM we still hit this 7s timeout regularly. + + URL: http://curl.haxx.se/mail/lib-2010-02/0200.html -Guenter Knauf (28 Jan 2013) -- Updated dependency libs. +Steve Holme (22 Sep 2013) +- tests: Fixed smtp rcpt to addresses -- Fixed simple.c to work again unchanged. +- ftpserver.pl: Expanded the SMTP RCPT handler to validate TO addresses - Added CURLOPT_FOLLOWLOCATION since example.com is now redirected. + RCPT_smtp() will now check for a correctly formatted TO address which + allows for invalid recipient addresses to be added. -Steve Holme (27 Jan 2013) -- smtp.c: Fixed unnecessary state change if starttls fails +- ftpserver.pl: Added cURL SMTP server detection to HELO command handler - The state machine should only be changed to SMTP_STARTTLS when the - STARTTLS command has been successfully sent to the server. + As curl will send a HELO command after an negative EHLO response, added + the same detection from commit b07709f7417c3e to the HELO handler to + ensure the test server is identified correctly and an upload isn't + performed. -- pop3.c: Fixed unnecessary state change if starttls fails - - The state machine should only be changed to POP3_STARTTLS when the - STLS command has been successfully sent to the server. +- ftpserver.pl: Corrected response code for successful RCPT command -- imap.c: Fixed unnecessary state change if starttls fails +- ftpserver.pl: Moved invalid RCPT TO: address detection to RCPT handler - The state machine should only be changed to IMAP_STARTTLS when the - STARTTLS command has been successfully sent to the server. + Rather than detecting the TO address as missing in the DATA handler, + moved the detection to the RCPT command handler where an error response + can be generated. -- email: Updated comment regarding ssldone usage +- RELEASE-NOTES: Corrected missed addition - Updated the ssldone comment as multi mode is always used internally now. + Somehow commit 60a20461629fda missed the last item in the sync list + even though I'm sure I added it during editing. + +- RELEASE-NOTES: Synced with 6dd8bd8d2f9729 -Yang Tse (26 Jan 2013) -- zz40-xc-ovr.m4: emit witness message in configure BODY +- curl.1: Added information about optional login options to --user in manpage - This avoids witness message in output when running configure --help, - while sending the message to config.log for other configure runs. + Added missing information, from curl 7.31.0, regarding the use of the + optional login options that may be specified as part of --user. + + For example: + + --user 'user:password;auth=NTLM' in IMAP, POP3 and SMTP protocols. -Steve Holme (25 Jan 2013) -- smtp.c: Added comments to smtp_endofresp() +- ftpserver.pl: Moved cURL SMTP server detection into EHLO command handler + + Moved the special SMTP server detection code from the DATA command + handler, which happens further down the operation chain after EHLO, + MAIL and RCPT commands, to the EHLO command as it is the first command + to be generated by a SMTP operation as well as containing the special + "verifiedserver" string from the URL. + + This not only makes it easier and quicker to detect but also means that + cURL doesn't need to specify "verifiedserver" as --mail-from and + --mail-rcpt arguments. - Minor code tidy up to add comments similar to those used in the pop3 - and imap end of resp functions, in order to assist anyone reading the - code and highlight the similarities between each of these protocols. + More importantly, this also makes the upcoming verification changes to + the RCPT handler easier to implement. -Yang Tse (25 Jan 2013) -- zz40-xc-ovr.m4: truly do version conditional overriding +Daniel Stenberg (21 Sep 2013) +- openssl: use correct port number in error message - - version conditional overriding - - catch unexpanded XC macros - - fix double words in comments + In ossl_connect_step2() when the "Unknown SSL protocol error" occurs, it + would output the local port number instead of the remote one which + showed when doing SSL over a proxy (but with the correct remote host + name). As libcurl only speaks SSL to the remote we know it is the remote + port. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1281 + Reported-by: Gordon Marler -- zz40-xc-ovr.m4: fix variable assignment of subshell output bashism +- test1415: adjusted to work for 32bit time_t - Tor Arntsen analyzed and reported the issue. + The libcurl date parser returns INT_MAX for all dates > 2037 so this + test is now made to use 2037 instead of 2038 to work the same for both + 32bit and 64bit time_t systems. + +Steve Holme (21 Sep 2013) +- tests: Reworked existing SMTP tests to be single recipient based - URL: http://curl.haxx.se/mail/lib-2013-01/0306.html + ...in preparation of upcoming multiple recipient tests. -- zz40-xc-ovr.m4: reinstate strict AC_REQUIRE macro dependencies +- ftpserver.pl: Corrected SMTP QUIT response to be more realistic -- zz40-xc-ovr.m4: avoid double single-quote usage +Daniel Stenberg (20 Sep 2013) +- curl_easy_setopt.3: clarify that TIMEOUT and TIMEOUT_MS set the same value -- zz40-xc-ovr.m4: parentheses balancing of 'case' statements - - m4 quadrigraph shell comment technique allows proper autoconf - parentheses balancing in shell 'case' statements. The presence - of unbalanced parentheses may otherwise trigger expansion bugs. +- [Kim Vandry brought this change] -Steve Holme (24 Jan 2013) -- smtp.c: Corrected RFC references + Documented --dns-* options in curl manpage + +Steve Holme (20 Sep 2013) +- pop3: Added basic SASL XOAUTH2 support - The most recent version of the SMTP RFC is RFC5321 and not RFC2821 as - previously documented. + Added the ability to use an XOAUTH2 bearer token [RFC6750] with POP3 for + authentication using RFC6749 "OAuth 2.0 Authorization Framework". - Added RFC1870 and re-ordered list numerically. + The bearer token is expected to be valid for the user specified in + conn->user. If CURLOPT_XOAUTH2_BEARER is defined and the connection has + an advertised auth mechanism of "XOAUTH2", the user and access token are + formatted as a base64 encoded string and sent to the server as + "AUTH XOAUTH2 <bearer token>". -- smtp.c: Fixed failure detection during TLS upgrade +- curl: Added clarification to the --mail options in the --help output - smtp_state_upgrade_tls() would attempt to incorrectly complete the - upgrade to smtps and start the EHLO command if - Curl_ssl_connect_nonblocking() returned a failure code and if ssldone - was set to TRUE. This would only happen when a non-blocking API hadn't - been provided by the SSL implementation and curlssl_connect() was - called underneath. + ... that these options apply to SMTP only. -- pop3.c: Fixed failure detection during TLS upgrade - - pop3_state_upgrade_tls() would attempt to incorrectly complete the - upgrade to pop3s and start the CAPA command if - Curl_ssl_connect_nonblocking() returned a failure code and if ssldone - was set to TRUE. This would only happen when a non-blocking API hadn't - been provided by the SSL implementation and curlssl_connect() was - called underneath. +- ftpserver.pl: Moved SMTP RCPT response text into command handler -- imap.c: Fixed failure detection during TLS upgrade - - imap_state_upgrade_tls() would attempt to incorrectly complete the - upgrade to imaps and start the CAPABILITY command if - Curl_ssl_connect_nonblocking() returned a failure code and if ssldone - was set to TRUE. This would only happen when a non-blocking API hadn't - been provided by the SSL implementation and curlssl_connect() was - called underneath. +- tests: Added SMTP invalid --mail-from test -Yang Tse (24 Jan 2013) -- zz40-xc-ovr.m4: internals overhauling +Nick Zitzmann (19 Sep 2013) +- darwinssl: enable BEAST workaround on iOS 7 & later - - Update comments - - Execute commands in subshells - - Faster path separator check - - Fix missing 'test' command - - Rename private macros - - Minimize AC_REQUIRE usage - -Steve Holme (23 Jan 2013) -- email: Removed unnecessary return statements + iOS 7 finally added the option to enable 1/n-1 when using TLS 1.0 + and a CBC cipher, so we now always turn that on unless the user + manually turns it off using CURLSSLOPT_ALLOW_BEAST. - Small tidy up to remove unnecessary return statements prior to the next - fix. + It appears Apple also added some new PSK ciphers, but no interface to + use them yet, so we at least support printing them if we find them. -Yang Tse (23 Jan 2013) -- zz40-xc-ovr.m4: redirect errors and warnings to stderr +Steve Holme (19 Sep 2013) +- tests: Updated SMTP AUTH tests to use the new AUTH directive + + ...rather than specify a customised EHLO response. -- zz40-xc-ovr.m4: AC_REQUIRE also XC_CONFIGURE_PREAMBLE success message +- tests: Corrected test913 as the QUIT response is received -- zz60-xc-ovr.m4: tighten XC_OVR_ZZ60 macro placement requirements +- tests: Added SMTP large message SIZE test -- configure: use XC_CONFIGURE_PREAMBLE early checks +- ftpserver.pl: Updated email regex from commit 98f7ca7e971006 - Some basic checks we make were placed early enough in generated - configure script when using autoconf 2.5X versions. Newer autoconf - versions expand these checks much further into the configure script, - rendering them useless. Using XC_CONFIGURE_PREAMBLE fixes placement - of early intended checks across all our autoconf supported versions. + ...to not be as strict as it was rejecting valid numeric email + addresses. + +- tests: Fixed smtp mail from addresses -- zz40-xc-ovr.m4: provide XC_CONFIGURE_PREAMBLE macro +- ftpserver.pl: Standardised CAPA and AUTH responses -Daniel Stenberg (23 Jan 2013) -- FAQ: update the SSL lib list and wording in question 2.2 +- ftpserver.pl: Corrected POP3 QUIT reply to be more realistic -Steve Holme (22 Jan 2013) -- curl_sasl.c: Corrected references to RFC +- runtests.pl: Fixed syntax error in commit c873375123343e - The most recent version of the RFC is RFC4422 and not RFC2222 as - previously documented. + Possible unintended interpolation in string at line 796 -- email: Corrected references to SASL RFC +- runtests.pl: Fixed smtp mail from address - The most recent version of the SASL RFC is RFC4422 and not RFC2222 as - previously documented. + Following changes to ftpserver.pl fixed the mail from address to be a + correctly formatted address otherwise the server response will be 501 + Invalid address. -Daniel Stenberg (22 Jan 2013) -- [Ulion brought this change] +- ftpserver.pl: Fixed syntax error in commit 98f7ca7e971006 + + Can't modify constant item in scalar assignment line 779, near "0;" - formpost: support quotes, commas and semicolon in file names +- ftpserver.pl: Expanded the SMTP MAIL handler to validate messages - - document the double-quote and backslash need be escaped if quoting. - - libcurl formdata escape double-quote in filename by backslash. - - curl formparse can parse filename both contains '"' and ',' or ';'. - - curl now can uploading file with ',' or ';' in filename. + MAIl_smtp() will now check for a correctly formatted FROM address as + well as the optional SIZE parameter comparing it against the server + capability when specified. + +Daniel Stenberg (17 Sep 2013) +- [YAMADA Yasuharu brought this change] + + cookies: add expiration - Bug: http://curl.haxx.se/bug/view.cgi?id=1171 + Implement: Expired Cookies These following situation, curl removes + cookie(s) from struct CookieInfo if the cookie expired. + - Curl_cookie_add() + - Curl_cookie_getlist() + - cookie_output() + +Steve Holme (17 Sep 2013) +- ftpserver.pl: Corrected response code for successful MAIL command -- memanalyze.pl: handle fopen() of file names with quotes +- ftpserver.pl: Moved SMTP MAIL handler into own function -Yang Tse (21 Jan 2013) -- xc-cc-check.m4: re-evaluate exporting and AC_SUBST'ing vars +- dns: fix compilation with MinGW from commit df69440d05f113 - Notes: + Avoid 'interface' literal that some MinGW versions define as a macro - When running a configure script that has nested packages (for example - libcurl's configure with --enable-ares and c-ares sources embedded in - curl tree) and AC_CONFIG_SUBDIRS([nested-subdir]) machinery is used to - automatically run the nested configure script from within the parent - configure script, it happens that the nested _shell_ script will - inherit shell variables exported from the parent _shell_ script. + Additionally, corrected some very, very minor coding style errors. + +- tests: Fixed test 1406 following recent changes in ftpserver.pl - If for example parent configure script sets and exports LDFLAGS and LIBS - variables with proper values in order to link either a parent library or - program with a library which will be configured and built by a nested - package; It will happen that when the nested configure script runs, the - nested library does not exist yet and _any_ link-test done in the nested - configure will fail, such as those that autoconf macros perform in order - to detect existing compiler and its characteristics, the result is that - the nested configure script will fail with errors such as: + By default the mail server doesn't send the SIZE capability but instead + it has to be specified as a supported capability. + +- tests: Added test for SMTP SIZE capability + +- ftpserver.pl: Added the ability to include spaces in capabilities - configure: error: C compiler cannot create executables + For example: - For now, we no longer export variables previously exported here. + CAPA "SIZE 1048576" 8BITMIME BINARYMIME - On the other hand, AC_SUBST'ing them is appropriate and even with nested - packages each package's config.status gets its own package values. + will populate the capabilities list with the following in: - So we reinstate AC_SUBST'ing previously AC_SUBST'ed variables. + SIZE 1048576 + 8BITMIME + BINARYMIME -Daniel Stenberg (21 Jan 2013) -- FAQ: 3.22 curl -X gives me HTTP problems +- ftpserver.pl: Corrected response code for successful SMTP QUIT command -Yang Tse (21 Jan 2013) -- xc-cc-check.m4: avoid recursive package automake'ing breakage +- ftpserver.pl: Fixed syntax error in commit 33c1f2876b9029 + + Can't modify constant item in postincrement line 727, near "i++" -- xc-cc-check.m4: mark earlier variables that are to be exported +- ftpserver.pl: Added CAPA & AUTH directive support to the SMTP EHLO handler -- configure: autotools compatibility fixes - step I - - Fix proper macro expansion order across autotools versions for - C compiler and preprocessor program checks. +- ftpserver.pl: Fixed SMTP QUIT handler from dadc495540946e -Steve Holme (20 Jan 2013) -- pop3.c: Fixed conditional compilation of the apop response function +- ftpserver.pl: Moved SMTP EHLO and QUIT handlers in own functions + +- ftpserver.pl: Added support for SMTP HELO command - Extended the fix from commit 8b15c84ea91e to additionally exclude - pop3_state_apop_resp() if the CURL_DISABLE_CRYPTO_AUTH flag is - defined. + ...and updated test902 as explicit HELO response is no longer required. -Yang Tse (20 Jan 2013) -- Makefile.inc: fix $(top_srcdir) not allowed in _SOURCES variables +- ftpserver.pl: Added mailbox check to IMAP SELECT handler -Daniel Stenberg (19 Jan 2013) -- formadd: reject trying to read a directory where a file is expected +- ftpserver.pl: Corrected invalid user details check - Bug: http://curl.haxx.se/mail/archive-2013-01/0017.html - Reported by: Ulrich Doehner + ...in both the IMAP LOGIN and POP3 PASS handlers introduced in commit + 187ac693744949 and 84ad1569e5fc93 respectively. -- curl_easy_send.3: document return codes - - Reported by: Craig Davison - Bug: http://curl.haxx.se/mail/lib-2013-01/0234.html +- ftpserver.pl: Moved IMAP LOGIN handler into own function -- curl_easy_recv.3: document return codes - - Reported by: Craig Davison - Bug: http://curl.haxx.se/mail/lib-2013-01/0234.html +- ftpserver.pl: Moved POP3 USER and PASS handlers into own functions -Steve Holme (19 Jan 2013) -- email: General code tidy up +- ftpserver.pl: Corrected invalid argument check in POP3 TOP handler - Corrected some function argument definitions to maximize the 80 - character line length limit and be in keeping with the curl - coding style. + ...which was accidentally introduced in commit 4d6ef6297ae9b6. -- pop3.c: Fixed a problem with pop3s connections not connecting properly - - Fixed an issue where Curl_ssl_connect_nonblocking() wouldn't complete - correctly and the ssldone flag wouldn't be set to true for pop3s based - connections. - - Bug introduced in commit: 4ffb8a6398ed. +- ftpserver.pl: Added capability prerequisite for extended POP3 commands -Daniel Stenberg (18 Jan 2013) -- RELEASE-NOTES: add references to several bugfixes+changes +- tests: Updated descriptions to be more meaningful -Steve Holme (18 Jan 2013) -- RELEASE-NOTES: Added missing imap fix - - Added missing imap fix as per commit 709b3506cd9b. +- ftpserver.pl: Added support for IMAP NOOP command -Yang Tse (18 Jan 2013) -- runtests.pl: make VPATH builds find valgrind.supp +- imap: Fixed response check for NOOP command -Daniel Stenberg (18 Jan 2013) -- RELEASE-NOTES: synced with c43127414d89 +- tests: Updated descriptions to be more meaningful -- always-multi: always use non-blocking internals - - Remove internal separated behavior of the easy vs multi intercace. - curl_easy_perform() is now using the multi interface itself. +Daniel Stenberg (13 Sep 2013) +- curl.1: detail how short/long options work - Several minor multi interface quirks and bugs have been fixed in the - process. - - Much help with debugging this has been provided by: Yang Tse + URL: http://curl.haxx.se/bug/view.cgi?id=1279 + Suggested-by: Jerry Krinock -Yang Tse (17 Jan 2013) -- url.c: fix HTTP CONNECT tunnel establishment upon delayed response - - Fixes initial proxy response being processed by the tunneled protocol - handler instead of the HTTP wrapper handler. This issue would trigger - upon delayed CONNECT response from the proxy. +Steve Holme (13 Sep 2013) +- curl: Fixed usage of DNS options when not using c-ares resolver - Additionally fixes a multi interface code-path in which connections - would not time out properly. + Commit 32352ed6adddcb introduced various DNS options, however, these + would cause curl to exit with CURLE_NOT_BUILT_IN when c-ares wasn't + being used as the backend resolver even if the options weren't set + by the user. - This does not fix known bug #39. + Additionally corrected some minor coding style errors from the same + commit. + +Daniel Stenberg (13 Sep 2013) +- curl_easy_setopt.3: mention RTMP URL quirks - URL: http://curl.haxx.se/mail/lib-2013-01/0191.html + URL: http://curl.haxx.se/bug/view.cgi?id=1278 + Reported-by: Gorilla Maguila -Daniel Stenberg (16 Jan 2013) -- [Yves Arrouye brought this change] +- [Ben Greear brought this change] - --libcurl: fix for non-zero default options + curl: Add support for various DNS binding options. + + (Passed on to c-ares.) - If the default value for an option taking a long as its value is non - zero, and it is set by zero by a command line option, then that command - line option is not reflected in --libcurl's output. This is because line - 520-521 of tool_setopt.c look like: + Allows something like this: - if(!lval) - skip = TRUE; + curl --dns-interface sta8 --dns-ipv4-addr 8.8.1.111 --interface sta8 \ + --localaddr 8.8.1.111 --dns-servers 8.8.8.1 www.google.com - An example of a command-line option doing so is the -k option that sets - CURLOPT_SLL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST to 0L, when the - defaults are non-zero. + Signed-off-by: Ben Greear <greearb@candelatech.com> -- FTP: reject illegal port numbers in EPSV 229 responses +- [Kim Vandry brought this change] -Yang Tse (15 Jan 2013) -- commit bc682cbd follow-up + libcurl: New options to bind DNS to local interfaces or IP addresses -- build: use per-target '_CPPFLAGS' for those currently using default - - Automake documents that doing this will make it choose a different name - for intermediate object files even when sharing source files across - targets of same Makefile.am. - - Up to automake 1.13.1 target's intermediate object files were placed - in the build subdirectory of the target. We depended on this, probably - undocumented behavior, to achieve same behavior as if a per-target flag - had been specified when building targets that actually belong to - different Makefile.am files. - - It seems automake 1.13.2 is going to break behavior mentioned above. +- libcurl.3: for multi interface connections are held in the multi handle - So, lets use a documented behavior in order to achieve same purpose, - across automake versions, no matter where automake wishes to place - intermediate object files. + ... and a few more cleanups/clarifications + +Steve Holme (12 Sep 2013) +- ftpserver.pl: Fixed missing comma from 7fd84b14d219b1 + +- ftpserver.pl: Fixed variable error introduced in 7fd84b14d219b1 - Our build targets that already were using a per-target '_CFLAGS' or - '_CPPFLAGS' need no 'fixing', these were already 'fixed'. The only - Makefile.am or Makefile.in files in libcurl's source tree touched by - this 'fix' are tests/libtest/Makefile.inc and tests/unit/Makefile.inc. + Global symbol "$mailbox" requires explicit package name -- tests/libtest/Makefile.inc: sort build targets +- ftpserver.pl: Added support for UID command -- tests/Makefile.am: remove wildcard usage in EXTRA_DIST +- ftpserver.pl: Added support for LSUB command -Kamil Dudka (15 Jan 2013) -- nss: fix error messages for CURLE_SSL_{CACERT,CRL}_BADFILE - - Do not use the error messages from NSS for errors not occurring in NSS. +- imap: Fixed response check for LSUB and UID commands -Steve Holme (14 Jan 2013) -- TODO: Updated following IMAP SASL additions +- ftpserver.pl: Added support for IMAP COPY command -Yang Tse (14 Jan 2013) -- configure: fix automake 1.13 compatibility - - Tested with: - - buildconf: autoconf version 2.69 - buildconf: autom4te version 2.69 - buildconf: autoheader version 2.69 - buildconf: automake version 1.13.1 - buildconf: aclocal version 1.13.1 - buildconf: libtool version 2.4 - buildconf: GNU m4 version 1.4.16 +- ftpserver.pl: Added support for IMAP CLOSE and EXPUNGE commands -Daniel Stenberg (13 Jan 2013) -- BUGS: update bug tracker URL - - ... and refresh number of lines of code +- ftpserver.pl: Added support for POP3 RSET command -- Curl_resolver_getsock: fix the function description comment - - It referred to it by the wrong name and said it returned the wrong value. +- ftpserver.pl: Added the ability to remember what messages are deleted - Reported by: Gisle Vanem + ...as this will be required for IMAP CLOSE and EXPUNGE commands as well + as the POP3 RSET command. -Kamil Dudka (11 Jan 2013) -- nss: clear session cache if a client cert from file is used +Daniel Stenberg (10 Sep 2013) +- NI_MAXSERV: remove all use of it - This commit fixes a regression introduced in 052a08ff. + Solaris with the SunStudio Compiler is reportedly missing this define, + but as we're using it without any good reason on all the places it was + used I've now instead switched to just use sensible buffer sizes that + fit a 32 bit decimal number. Which also happens to be smaller than the + common NI_MAXSERV value which is 32 on most machines. - NSS caches certs/keys returned by the SSL_GetClientAuthDataHook callback - and if we connect second time to the same server, the cached cert/key - pair is used. If we use multiple client certificates for different - paths on the same server, we need to clear the session cache to force - NSS to call the hook again. The commit 052a08ff prevented the session - cache from being cleared if a client certificate from file was used. - - The condition is now fixed to cover both cases: consssl->client_nickname - is not NULL if a client certificate from the NSS database is used and - connssl->obj_clicert is not NULL if a client certificate from file is - used. + Bug: http://curl.haxx.se/bug/view.cgi?id=1277 + Reported-by: D.Flinkmann + +- http2: use the support HTTP2 draft version in the upgrade header - Review by: Kai Engert + ... instead of HTTP/2.0 to work fine with the nghttpx proxy/server. -Yang Tse (11 Jan 2013) -- sockfilt.c: log file descriptor number on read/write error +Steve Holme (10 Sep 2013) +- ldap.c: Fix compilation warning + + warning: comparison between signed and unsigned integer expressions -- [Gisle Vanem brought this change] +- [Jiri Hruska brought this change] - packages/DOS/common.dj: remove COFF debug info generation - - gcc on DOS hasn't really supported COFF-debug (-gcoff) on djgpp for a - long time. - - "Sounds like the COFF debug info generation has bit-rotted in GCC. - Nothing new here, no other platform uses COFF AFAIK." - - So lets drop it too. + imap/pop3/smtp: Speed up SSL connection initialization - URL: http://curl.haxx.se/mail/lib-2013-01/0130.html + Don't wait for the next callback call (usually 1 second) before + continuing with protocol specific connection initialization. -- curl: ignore SIGPIPE - compilation fix - follow-up +- ldap.c: Corrected build error from commit 857f999353f333 -- test servers: handle W32/W64 SIGBREAK with exit_signal_handler +- RELEASE-NOTES: Corrected duplicate in bfefe2400a16b8 -- test servers: fix errno, ERRNO and SOCKERRNO usage for W32/W64 +- RELEASE-NOTES: Corrected typo from bfefe2400a16b8 -- sockfilt.c: fix some W64 compiler warnings +- RELEASE-NOTES: synced with 25c68903756d6b -Daniel Stenberg (9 Jan 2013) -- [Nick Zitzmann brought this change] +Daniel Stenberg (10 Sep 2013) +- README.http2: explain nghttp2 a little - docs: the --with-darwinssl option is available on Apple OSes +Steve Holme (9 Sep 2013) +- tests: Added test for POP3 TOP command -Yang Tse (9 Jan 2013) -- curl: ignore SIGPIPE - compilation fix +- ftpserver.pl: Added support for POP3 TOP command -- build: fix circular header inclusion with other packages - - This commit renames lib/setup.h to lib/curl_setup.h and - renames lib/setup_once.h to lib/curl_setup_once.h. +- tests: Added test for POP3 UIDL command + +- ftpserver.pl: Added support for POP3 UIDL command + +Daniel Stenberg (9 Sep 2013) +- http2: adjust to new nghttp2_pack_settings_payload proto - Removes the need and usage of a header inclusion guard foreign - to libcurl. [1] + This function was modified in nghttp2 git commit a1c3f89c72e51 + +Kamil Dudka (9 Sep 2013) +- url: handle abortion by read/write callbacks, too - Removes the need and presence of an alarming notice we carried - in old setup_once.h [2] + Otherwise, the FTP protocol would unnecessarily hang 60 seconds if + aborted in the CURLOPT_HEADERFUNCTION callback. - ---------------------------------------- + Reported by: Tomas Mlcoch + Bug: https://bugzilla.redhat.com/1005686 + +Daniel Stenberg (9 Sep 2013) +- ldap: fix the build for systems with ldap_url_parse() - 1 - lib/setup_once.h used __SETUP_ONCE_H macro as header inclusion guard - up to commit ec691ca3 which changed this to HEADER_CURL_SETUP_ONCE_H, - this single inclusion guard is enough to ensure that inclusion of - lib/setup_once.h done from lib/setup.h is only done once. + Make sure that the custom struct fields are only used by code that + doesn't use a struct defintion from the outside. - Additionally lib/setup.h has always used __SETUP_ONCE_H macro to - protect inclusion of setup_once.h even after commit ec691ca3, this - was to avoid a circular header inclusion triggered when building a - c-ares enabled version with c-ares sources available which also has - a setup_once.h header. Commit ec691ca3 exposes the real nature of - __SETUP_ONCE_H usage in lib/setup.h, it is a header inclusion guard - foreign to libcurl belonging to c-ares's setup_once.h + Attempts to fix the problem introduced in 3dc6fc42bfc61b + +Steve Holme (9 Sep 2013) +- [Jiri Hruska brought this change] + + pingpong: Check SSL library buffers for already read data - The renaming this commit does, fixes the circular header inclusion, - and as such removes the need and usage of a header inclusion guard - foreign to libcurl. Macro __SETUP_ONCE_H no longer used in libcurl. + Otherwise the connection can get stuck during various phases, waiting + for new data on the socket using select() etc., but it will never be + received as the data has already been read into SSL library. + +- imap: Fixed calculation of transfer when partial FETCH received - 2 - Due to the circular interdependency of old lib/setup_once.h and the - c-ares setup_once.h header, old file lib/setup_once.h has carried - back from 2006 up to now days an alarming and prominent notice about - the need of keeping libcurl's and c-ares's setup_once.h in sync. + The transfer size would be calculated incorrectly if the email contained + within the FETCH response, had been partially received by the pingpong + layer. As such the following, example output, would be seen if the + amount remaining was smaller than the amount received: - Given that this commit fixes the circular interdependency, the need - and presence of mentioned notice is removed. + * Excess found in a non pipelined read: excess = 1394, size = 262, + maxdownload = 262, bytecount = 1374 + * transfer closed with -1112 bytes remaining to read - All mentioned interdependencies come back from now old days when - the c-ares project lived inside a curl subdirectory. This commit - removes last traces of such fact. + Bug: http://curl.haxx.se/mail/lib-2013-08/0170.html + Reported-by: John Dunn -Daniel Stenberg (8 Jan 2013) -- curl: ignore SIGPIPE +- ftpserver.pl: Fixed empty array checks - This is a work-around for bug #1180 which is really libcurl's inability - to ignore SIGPIPE in a few cases. With this work-around at least curl - won't suffer from it! - - Bug: http://curl.haxx.se/bug/view.cgi?id=1180 - Reported by: Lluís Batlle i Rossell - -Yang Tse (8 Jan 2013) -- sockfilt.c: fix some compiler warnings + ...from commits 28427b408326a1 and e8313697b6554b. -Daniel Stenberg (8 Jan 2013) -- Revert "configure: update req to 2.59" +- ftpserver: Reworked AUTH support to allow for specifying the mechanisms - This reverts commit 7a6d8b1b1a8fcc184c36d6b6e741e32250b4bacb. + Renamed SUPPORTAUTH to AUTH and added support for specifying a list of + supported SASL mechanisms to return to the client. - URL: http://curl.haxx.se/mail/lib-2013-01/0103.html + Additionally added the directive to the FILEFORMAT document. -Steve Holme (8 Jan 2013) -- pop3: Added support for non-blocking SSL upgrade +- ftpserver: Reworked CAPA support to allow for specifying the capabilities - Added support for asynchronous SSL upgrade when using the - multi-interface. - -Daniel Stenberg (8 Jan 2013) -- configure: update req to 2.59 + Renamed SUPPORTCAPA to CAPA and added support for specifying a list of + supported capabilities to return to the client. - I ran the 2.59 version of autoupdate that updates obsoleted configure.ac - constructs to the 2.59 standard. With a little hands-on fiddling I - prevented it from ruining the quoting in AS_HELP_STRING() uses. + Additionally added the directive to the FILEFORMAT document. + +- ftpserver.pl: Corrected POP3 LIST as message numbers should be contiguous - I subsequently also bumped the required autoconf version to 2.59 - (released in December 2003) as I don't have an older autoconf version - around to test with and I can't be bothered to install one either... + The message numbers given in the LIST response are an index into the + list, which are only valid for the current session, rather than being a + unique message identifier. An index would only be missing from the LIST + response if a DELE command had been issued within the same session and + had not been committed by the end of session QUIT command. Once + committed the POP3 server will regenerate the message numbers in the + next session to be contiguous again. As such our LIST response should + list message numbers contiguously until we support a DELE command in the + same session. - Inspired by: Björn Stenberg - Related blog post: http://cazfi.livejournal.com/195108.html + Should a POP3 user require the unique message ID for any or all + messages then they should use the extended UIDL command. This command + will be supported by the test ftpserver in an upcoming commit. + +Daniel Stenberg (8 Sep 2013) +- [Clemens Gruber brought this change] -Steve Holme (7 Jan 2013) -- imap.c: Small tidy up to add missing comment + curl_easy_pause: suggest one way to unpause -- imap: Added support for sasl digest-md5 authentication +Steve Holme (8 Sep 2013) +- tests: Updated descriptions to be more meaningful -- imap: Added support for sasl cram-md5 authentication +- tests: Added test for POP3 NOOP command -Marc Hoersken (7 Jan 2013) -- tests/server/sockfilt.c: Fixed integer comparison warning +- ftpserver.pl: Added support for POP3 NOOP command -- tests/server/sockfilt.c: Include required Win32 headers +- ftpserver.pl: Fixed 'Use of uninitialized value $args in string ne' -Steve Holme (7 Jan 2013) -- imap: Added support for sasl ntlm authentication +- tests: Added test for POP3 STAT command -- imap: Added support for sasl login authentication +- ftpserver.pl: Added support for POP STAT command -- pop3.c: Fixed default authentication detection +- ftpserver.pl: Moved POP3 QUIT handler into own function + +- ftpserver.pl: Reordered the POP3 handlers to be alphabetical - Fixed an issue where a server may positively respond to the CAPA command - but not list clear text as a valid authentication type. + In preparation for additional POP3 tests, re-ordered the command + function defintions to be sorted alphabetically. -- curl_sasl.c: Small code tidy up following imap changes +- ftpserver.pl: Corrected misaligned indentation in POP3 handlers + + Fixed incorrect indentation used in both the RETR_pop3 and LIST_pop3 + functions which was 5 and 9 characters rather than 4 and 8. -- smtp.c: Small code tidy up following imap changes +- tests: Added test for POP3 DELE command -- pop3.c: Small code tidy up following imap changes +unknown (7 Sep 2013) +- [Steve Holme brought this change] -- imap: Added support for sasl plain text authentication + ftpserver.pl: Added support for POP3 DELE command -Marc Hoersken (6 Jan 2013) -- tests/server/sockfilt.c: Fixed support for listening sockets - - This commit fixes support for sockets that are ready to accept - a new connection and have previously been put into listening mode. +Daniel Stenberg (7 Sep 2013) +- http2: include curl_memory.h - It also includes changes which are the result of investigation - regarding Windows STDIN. These changes are the preparation for further - improvements regarding support for reading data from STDIN on Windows. + Detected by test 1132 + +Nick Zitzmann (7 Sep 2013) +- http: fix build warning under LLVM - Open issue: WaitForMultipleObjectsEx does not support PIPE handles - which are returned by GetStdHandle while running without a GUI. + When building the code using LLVM Clang without NGHTTP2, I was getting + this warning: + ../lib/http.h:155:1: warning: empty struct is a GNU extension [-Wgnu] + Placing a dummy variable into the data structure silenced the warning. -- tests/server/sockfilt.c: Set Windows Console to binary mode +Daniel Stenberg (7 Sep 2013) +- http2: actually init nghttp2 and send HTTP2-Settings properly -- tests/server/sockfilt.c: Improved log error messages - - Include error code and parameters in error messages. +- README.http2: how to use it best with the multi API? -Steve Holme (6 Jan 2013) -- imap: Introduced the continue response in imap_endofresp() +- http2: first embryo toward Upgrade: -- imap: Added support for SASL based authentication mechanism detection +- http: rename use_http_1_1 to use_http_1_1plus - Added support for detecting the supported SASL authentication mechanisms - via the CAPABILITY command. + Since it now actually says if 1.1 or a later version should be used. -Yang Tse (6 Jan 2013) -- Revert changes relative to lib/*.[ch] recent renaming - - This reverts renaming and usage of lib/*.h header files done - 28-12-2012, reverting 2 commits: - - f871de0... build: make use of 76 lib/*.h renamed files - ffd8e12... build: rename 76 lib/*.h files - - This also reverts removal of redundant include guard (redundant thanks - to changes in above commits) done 2-12-2013, reverting 1 commit: - - c087374... curl_setup.h: remove redundant include guard - - This also reverts renaming and usage of lib/*.c source files done - 3-12-2013, reverting 3 commits: - - 13606bb... build: make use of 93 lib/*.c renamed files - 5b6e792... build: rename 93 lib/*.c files - 7d83dff... build: commit 13606bbfde follow-up 1 - - Start of related discussion thread: +- configure: improve CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH - http://curl.haxx.se/mail/lib-2013-01/0012.html - - Asking for confirmation on pushing this revertion commit: + The compiler test used a variable before it was assigned when it tried + to see how it acts on a mismatching prototype, which could cause a false + positive. + +- [Petr Písař brought this change] + + Pass password to OpenSSL engine by user interface - http://curl.haxx.se/mail/lib-2013-01/0048.html + Recent OpenSSL uses user interface abstraction to negotiate access to + private keys in the cryprographical engines. An OpenSSL application is + expected to implement the user interface. Otherwise a default one + provided by OpenSSL (interactive standard I/O) will be used and the + aplication will have no way how to pass a password to the engine. - Confirmation summary: + Longer-desc: http://curl.haxx.se/mail/lib-2013-08/0265.html + +- urlglob: improved error messages and column number on bad use - http://curl.haxx.se/mail/lib-2013-01/0079.html + Introduce a convenience macro and keep of the column better so that it + can point out the offending column better. - NOTICE: The list of 2 files that have been modified by other - intermixed commits, while renamed, and also by at least one - of the 6 commits this one reverts follows below. These 2 files - will exhibit a hole in history unless git's '--follow' option - is used when viewing logs. + Updated test 75 accordingly. + +- urlglob: avoid error code translation - lib/curl_imap.h - lib/curl_smtp.h + By using the correct values from the start we don't have to translate + them! -Daniel Stenberg (6 Jan 2013) -- mk-ca-bundle.1: convert syntax to what's used elsewhere +- urlglob: avoid NULL pointer dereference - ... mostly to make sure roffit works better on it, but also to make our - man pages use a more unified style. + Thanks to clang-analyzer + +- [Gisle Vanem brought this change] -- mk-ca-bundle.1: mention new -f, fix outputfile output + http2: use correct include for snprintf - also edited a few sentences to become more verbose + Using the first little merge of nghttp2 into libcurl, I stumbeled on the + missing 'snprintf' in MSVCRT. Isn't this how we do it for other libcurl + files? I.e. use 'curl_msnprintf' and not 'snprintf' directly: -- mk-ca-bundle: add -f, support passing to stdout and more +- --data: mention CRLF treatment when reading from file + +- [Geoff Beier brought this change] + + LDAP: fix bad free() when URL parsing failed - 1. When the downloaded data file from Mozilla is current, but the output - bundle does not exist: continue processing to create the bundle. The - goal is to have the output file - not just download the latest input. + When an error occurs parsing an LDAP URL, The ludp->lud_attrs[i] entries + could be freed even though they sometimes point to data within an + allocated area. - 2. added -f option to force re-processing the file. Useful for - debugging/testing the process. + This change introduces a lud_attrs_dup[] array for the duplicated string + pointers, and it removes the unused lud_exts array. - 3. added support for output to '-' (stdout), allowing the output to be - piped. + Bug: http://curl.haxx.se/mail/lib-2013-08/0209.html + +Nick Zitzmann (5 Sep 2013) +- darwinssl: add support for PKCS#12 files for client authentication - 4. All progress and error messages go to STDERR rather than STDOUT (3) + I also documented the fact that the OpenSSL engine also supports them. + +Daniel Stenberg (5 Sep 2013) +- symbols: added HTTP2 symbols and sorted list - 5. The script opened and closed the output file many times - unnecessarily. It now opens it once, does the output and closes it. + CURL_HTTP_VERSION_2_0 and CURL_VERSION_HTTP2 are new + +- configure: add HTTP2 as a curl-config --feature output - 6. Backup of the input files happens after successful processing, not - before. + Fixes the test 1014 failure + +- curl: unbreak --http1.0 again - 7. The output is written to a temporary file, and renamed to the - requested name after backup - this greatly reduces the window where the - file can be seen partially written. + I broke it in 2eabb7d590 + +- SASL: fix compiler warnings - 8. all die calls have a \n at the end to suppress perl's traceback - the - traceback isn't useful to end users. + comparison between signed and unsigned integer expressions - Patch: http://curl.haxx.se/mail/lib-2013-01/0045.html + suggest parentheses around '&&' within '||' (twice) -Yang Tse (5 Jan 2013) -- imap test server: fix typo in name of SELECT_imap() sub definition - - IMAP test server breaking typo introduced with commit b708a522a1 +- curl: add --http1.1 and --http2.0 options -Steve Holme (4 Jan 2013) -- imap test server: Added support for the CAPABILITY command - - Added support for the CAPABILITY command in preparation of upcoming - changes. - -Daniel Stenberg (3 Jan 2013) -- writeout: -w now supports remote_ip/port and local_ip/port - - Added mention to the curl.1 man page. - - Test case 1223 verifies remote_ip/port. - -Yang Tse (3 Jan 2013) -- test 1222: 8 chars object name generation && test 1221: adjustments - -Daniel Stenberg (3 Jan 2013) -- INTERNALS: remove "footnote" never used - -Yang Tse (3 Jan 2013) -- build: commit 13606bbfde follow-up 1 - -Daniel Stenberg (3 Jan 2013) -- FAQ: Can I write a server with libcurl? - -Yang Tse (3 Jan 2013) -- build: rename 93 lib/*.c files - - 93 lib/*.c source files renamed to use our standard naming scheme. - - This commit only does the file renaming. - - ---------------------------------------- - - renamed: lib/amigaos.c -> lib/curl_amigaos.c - renamed: lib/asyn-ares.c -> lib/curl_asyn_ares.c - renamed: lib/asyn-thread.c -> lib/curl_asyn_thread.c - renamed: lib/axtls.c -> lib/curl_axtls.c - renamed: lib/base64.c -> lib/curl_base64.c - renamed: lib/bundles.c -> lib/curl_bundles.c - renamed: lib/conncache.c -> lib/curl_conncache.c - renamed: lib/connect.c -> lib/curl_connect.c - renamed: lib/content_encoding.c -> lib/curl_content_encoding.c - renamed: lib/cookie.c -> lib/curl_cookie.c - renamed: lib/cyassl.c -> lib/curl_cyassl.c - renamed: lib/dict.c -> lib/curl_dict.c - renamed: lib/easy.c -> lib/curl_easy.c - renamed: lib/escape.c -> lib/curl_escape.c - renamed: lib/file.c -> lib/curl_file.c - renamed: lib/fileinfo.c -> lib/curl_fileinfo.c - renamed: lib/formdata.c -> lib/curl_formdata.c - renamed: lib/ftp.c -> lib/curl_ftp.c - renamed: lib/ftplistparser.c -> lib/curl_ftplistparser.c - renamed: lib/getenv.c -> lib/curl_getenv.c - renamed: lib/getinfo.c -> lib/curl_getinfo.c - renamed: lib/gopher.c -> lib/curl_gopher.c - renamed: lib/gtls.c -> lib/curl_gtls.c - renamed: lib/hash.c -> lib/curl_hash.c - renamed: lib/hmac.c -> lib/curl_hmac.c - renamed: lib/hostasyn.c -> lib/curl_hostasyn.c - renamed: lib/hostcheck.c -> lib/curl_hostcheck.c - renamed: lib/hostip.c -> lib/curl_hostip.c - renamed: lib/hostip4.c -> lib/curl_hostip4.c - renamed: lib/hostip6.c -> lib/curl_hostip6.c - renamed: lib/hostsyn.c -> lib/curl_hostsyn.c - renamed: lib/http.c -> lib/curl_http.c - renamed: lib/http_chunks.c -> lib/curl_http_chunks.c - renamed: lib/http_digest.c -> lib/curl_http_digest.c - renamed: lib/http_negotiate.c -> lib/curl_http_negotiate.c - renamed: lib/http_negotiate_sspi.c -> lib/curl_http_negotiate_sspi.c - renamed: lib/http_proxy.c -> lib/curl_http_proxy.c - renamed: lib/idn_win32.c -> lib/curl_idn_win32.c - renamed: lib/if2ip.c -> lib/curl_if2ip.c - renamed: lib/imap.c -> lib/curl_imap.c - renamed: lib/inet_ntop.c -> lib/curl_inet_ntop.c - renamed: lib/inet_pton.c -> lib/curl_inet_pton.c - renamed: lib/krb4.c -> lib/curl_krb4.c - renamed: lib/krb5.c -> lib/curl_krb5.c - renamed: lib/ldap.c -> lib/curl_ldap.c - renamed: lib/llist.c -> lib/curl_llist.c - renamed: lib/md4.c -> lib/curl_md4.c - renamed: lib/md5.c -> lib/curl_md5.c - renamed: lib/memdebug.c -> lib/curl_memdebug.c - renamed: lib/mprintf.c -> lib/curl_mprintf.c - renamed: lib/multi.c -> lib/curl_multi.c - renamed: lib/netrc.c -> lib/curl_netrc.c - renamed: lib/non-ascii.c -> lib/curl_non_ascii.c - renamed: lib/curl_non-ascii.h -> lib/curl_non_ascii.h - renamed: lib/nonblock.c -> lib/curl_nonblock.c - renamed: lib/nss.c -> lib/curl_nss.c - renamed: lib/nwlib.c -> lib/curl_nwlib.c - renamed: lib/nwos.c -> lib/curl_nwos.c - renamed: lib/openldap.c -> lib/curl_openldap.c - renamed: lib/parsedate.c -> lib/curl_parsedate.c - renamed: lib/pingpong.c -> lib/curl_pingpong.c - renamed: lib/polarssl.c -> lib/curl_polarssl.c - renamed: lib/pop3.c -> lib/curl_pop3.c - renamed: lib/progress.c -> lib/curl_progress.c - renamed: lib/qssl.c -> lib/curl_qssl.c - renamed: lib/rawstr.c -> lib/curl_rawstr.c - renamed: lib/rtsp.c -> lib/curl_rtsp.c - renamed: lib/security.c -> lib/curl_security.c - renamed: lib/select.c -> lib/curl_select.c - renamed: lib/sendf.c -> lib/curl_sendf.c - renamed: lib/share.c -> lib/curl_share.c - renamed: lib/slist.c -> lib/curl_slist.c - renamed: lib/smtp.c -> lib/curl_smtp.c - renamed: lib/socks.c -> lib/curl_socks.c - renamed: lib/socks_gssapi.c -> lib/curl_socks_gssapi.c - renamed: lib/socks_sspi.c -> lib/curl_socks_sspi.c - renamed: lib/speedcheck.c -> lib/curl_speedcheck.c - renamed: lib/splay.c -> lib/curl_splay.c - renamed: lib/ssh.c -> lib/curl_ssh.c - renamed: lib/sslgen.c -> lib/curl_sslgen.c - renamed: lib/ssluse.c -> lib/curl_ssluse.c - renamed: lib/strdup.c -> lib/curl_strdup.c - renamed: lib/strequal.c -> lib/curl_strequal.c - renamed: lib/strerror.c -> lib/curl_strerror.c - renamed: lib/strtok.c -> lib/curl_strtok.c - renamed: lib/strtoofft.c -> lib/curl_strtoofft.c - renamed: lib/telnet.c -> lib/curl_telnet.c - renamed: lib/tftp.c -> lib/curl_tftp.c - renamed: lib/timeval.c -> lib/curl_timeval.c - renamed: lib/transfer.c -> lib/curl_transfer.c - renamed: lib/url.c -> lib/curl_url.c - renamed: lib/version.c -> lib/curl_version.c - renamed: lib/warnless.c -> lib/curl_warnless.c - renamed: lib/wildcard.c -> lib/curl_wildcard.c - - ---------------------------------------- - -- build: make use of 93 lib/*.c renamed files - - 93 *.c source files renamed to use our standard naming scheme. - - This change affects 77 files in libcurl's source tree. - -Daniel Stenberg (3 Jan 2013) -- INSTALL: unify the SSL library texts - - Make them smaller and more similar for each separate SSL library - supported by the configure build - -Yang Tse (2 Jan 2013) -- curl_setup.h: remove redundant include guard - -- build and tests: curl_10char_object_name() shell function - - lib/objnames.inc provides definition of curl_10char_object_name() shell - function. The intended purpose of this function is to transliterate a - (*.c) source file name that may be longer than 10 characters, or not, - into a string with at most 10 characters which may be used as an OS/400 - object name. - - Test case 1221 does unit testng of this function and also verifies - that it is possible to generate distinct short object names for all - curl and libcurl *.c source file names. - - lib/objnames-test.sh is the shell script used for test case 1221. - - tests/runtests.pl modified to accept shell script test cases. - - More details inside lib/objnames.inc and lib/objnames-test.sh +- Curl_setopt: refuse CURL_HTTP_VERSION_2_0 if built without support -- configure.ac: replace AM_CONFIG_HEADER with AC_CONFIG_HEADERS - - automake 1.13 errors if AM_CONFIG_HEADER is used in configure script. - automake 1.13 no longer autoupdates AM_CONFIG_HEADER to - AC_CONFIG_HEADERS, thing which automake has been doing since automake - version 1.7 +- http2: add http2.[ch] and add nghttp2 version output + +- curl -V: output HTTP2 as a feature if present + +- curl.h: add CURL_VERSION_HTTP2 as a feature - Given that our first automake supported version is automake 1.7, - simply replacing AM_CONFIG_HEADER usage with AC_CONFIG_HEADERS seems - enough to yet support same automake versions. + It isn't added as a separate protocol as HTTP2 will be done over HTTP:// + URLs that can be upgraded to HTTP2 if the server supports it as well. + +Steve Holme (4 Sep 2013) +- imap/smtp: Fixed incorrect SASL mechanism selection with XOAUTH2 servers - Dave Reisner reported issue with 1.13 and provided patch. + XOAUTH2 would be selected in preference to LOGIN and PLAIN if the IMAP + or SMTP server advertised support for it even though a user's password + was supplied but bearer token wasn't. - http://curl.haxx.se/mail/lib-2012-12/0246.html + Modified the selection logic so that XOAUTH2 will only be selected if + the server supports it and A) The curl user/libcurl programmer has + specifically asked for XOAUTH via the ;AUTH=XOAUTH login option or 2) + The bearer token is specified. Obviously if XOAUTH is asked for via + the login option but no token is specified the user will receive a + authentication failure which makes more sense than no known + authentication mechanisms supported! -- curl-override.m4: provide AC_CONFIG_MACRO_DIR definition conditionally +Daniel Stenberg (4 Sep 2013) +- curl.h: added CURL_HTTP_VERSION_2_0 - Provide a 'traceable' AC_CONFIG_MACRO_DIR definition only when using - an autoconf version that does not provide it, instead of what we were - doing up to now of providing and overriding AC_CONFIG_MACRO_DIR for - all autoconf versions. + Initial library considerations documented in lib/README.http2 -Steve Holme (30 Dec 2012) -- imap.c: Minor follow up tidy up +- configure: added --with-nghttp2 -- imap: Code tidy up prior to adding support for the CAPABILITY command +- acinclude: fix --without-ca-path when cross-compiling - * Changing the order of the state machine to represent the order in - which commands are sent to the server. + The commit 7b074a460b64811 to CURL_CHECK_CA_BUNDLE in 7.31 (don't check + for paths when cross-compiling) causes --without-ca-path to no longer + works when cross-compiling, since ca and capath only ever get set to + "no" when not cross-compiling, I attach a patch that works for me. Also + in the cross-compilation case, no ca-path seems to be a better default + (IMVHO) than empty ca-path. - * Reworking the imap_endofresp() function as the FETCH response doesn't - include the command id and shouldn't be part of the length comparison - that takes into account the id string. + Bug: http://curl.haxx.se/bug/view.cgi?id=1273 + Patch-by: Stefan Neis -- pop3_doing: Applied debug info message when function fails +Steve Holme (2 Sep 2013) +- lib1512.c: Fixed compilation warning + + An enumerated type is mixed with another type. - Applied the same debug message as used in smtp_doing() and imap_doing() - when pop3_multi_statemach() fails. + ...as well as a small coding style error. -- imap_doing: don't call imap_dophase_done() if already failed +Guenter Knauf (1 Sep 2013) +- Killed warning 'res' might be used uninitialized. + +Steve Holme (1 Sep 2013) +- url.c: Fixed compilation warning - Applied the POP3 fix from commit 2897ce7dc2e1 so imap_dophase_done() - isn't called if imap_multi_statemach() fails. + An enumerated type is mixed with another type -- smtp_doing: don't call smtp_dophase_done() if already failed +- easy.c: Fixed compilation warning - Applied the POP3 fix from commit 2897ce7dc2e1 so smtp_dophase_done() - isn't called if smtp_multi_statemach() fails. + warning: `code' might be used uninitialized in this function -Yang Tse (29 Dec 2012) -- examples/certinfo.c: fix compiler warning +Daniel Stenberg (31 Aug 2013) +- -x: rephrased the --proxy section somewhat -Steve Holme (29 Dec 2012) -- pop3.c: Removed unnecessary POP3_STOP state changes - - Removed unnecessary state changes in pop3_state_starttls_resp() - following previous fix in IMAP module. +Steve Holme (31 Aug 2013) +- tests: Added test for IMAP CHECK command -- smtp.c: Added extra comments around SMTP_STOP state change - - Provided extra comments in the SMTP module following previous IMAP fix. +- ftpserver.pl: Added support for the IMAP CHECK command -- imap.c: Fixed bad state error when logging in with invalid credentials - - Fixed a problem with the state machine when attempting to log in with - invalid credentials. The server would report login failure but libcurl - would not read the response due to inappropriate IMAP_STOP states being - set after the login was sent. +Guenter Knauf (31 Aug 2013) +- Removed reference to krb4.c. -Yang Tse (29 Dec 2012) -- imap.c: remove trailing whitespace +Steve Holme (31 Aug 2013) +- ftpserver.pl: Corrected flawed logic in commit 1ca6ed7b75cad0 -Steve Holme (28 Dec 2012) -- imap.c: Code tidy up - Part 2 - -- imap.c: Code tidy up - Part 1 - - Applied some of the comment and layout changes that had already been - applied to the pop3 and smtp code over the last 6 to 9 months. - - This is in preparation of adding SASL based authentication. - -- pop3.c: Minor code tidy up - - Minor tidy up of comments and layout prior to next part of imap work. - -- smtp: Minor code tidy up - - Minor tidy up of comments and layout prior to next part of imap work. - -- curl_imap.h: Tidy up of comments to be more readable - -- imap.c: Code tidy up renaming imapsendf() to imap_sendf() +- imap: Fixed response check for EXPUNGE command + +- ftpserver.pl: Added argument check to IMAP command handlers - Renamed imapsendf() to imap_sendf() to be more in keeping with the - other imap functions as well as Curl_pp_sendf() that it replaces. - -Yang Tse (28 Dec 2012) -- build: rename 76 lib/*.h files - - 76 private header files renamed to use our standard naming scheme. - - This commit only does the file renaming. - - ---------------------------------------- + Added BAD argument check to the following IMAP command handlers: - renamed: amigaos.h -> curl_amigaos.h - renamed: arpa_telnet.h -> curl_arpa_telnet.h - renamed: asyn.h -> curl_asyn.h - renamed: axtls.h -> curl_axtls.h - renamed: bundles.h -> curl_bundles.h - renamed: conncache.h -> curl_conncache.h - renamed: connect.h -> curl_connect.h - renamed: content_encoding.h -> curl_content_encoding.h - renamed: cookie.h -> curl_cookie.h - renamed: cyassl.h -> curl_cyassl.h - renamed: dict.h -> curl_dict.h - renamed: easyif.h -> curl_easyif.h - renamed: escape.h -> curl_escape.h - renamed: file.h -> curl_file.h - renamed: fileinfo.h -> curl_fileinfo.h - renamed: formdata.h -> curl_formdata.h - renamed: ftp.h -> curl_ftp.h - renamed: ftplistparser.h -> curl_ftplistparser.h - renamed: getinfo.h -> curl_getinfo.h - renamed: gopher.h -> curl_gopher.h - renamed: gtls.h -> curl_gtls.h - renamed: hash.h -> curl_hash.h - renamed: hostcheck.h -> curl_hostcheck.h - renamed: hostip.h -> curl_hostip.h - renamed: http.h -> curl_http.h - renamed: http_chunks.h -> curl_http_chunks.h - renamed: http_digest.h -> curl_http_digest.h - renamed: http_negotiate.h -> curl_http_negotiate.h - renamed: http_proxy.h -> curl_http_proxy.h - renamed: if2ip.h -> curl_if2ip.h - renamed: imap.h -> curl_imap.h - renamed: inet_ntop.h -> curl_inet_ntop.h - renamed: inet_pton.h -> curl_inet_pton.h - renamed: krb4.h -> curl_krb4.h - renamed: llist.h -> curl_llist.h - renamed: memdebug.h -> curl_memdebug.h - renamed: multiif.h -> curl_multiif.h - renamed: netrc.h -> curl_netrc.h - renamed: non-ascii.h -> curl_non-ascii.h - renamed: nonblock.h -> curl_nonblock.h - renamed: nssg.h -> curl_nssg.h - renamed: parsedate.h -> curl_parsedate.h - renamed: pingpong.h -> curl_pingpong.h - renamed: polarssl.h -> curl_polarssl.h - renamed: pop3.h -> curl_pop3.h - renamed: progress.h -> curl_progress.h - renamed: qssl.h -> curl_qssl.h - renamed: rawstr.h -> curl_rawstr.h - renamed: rtsp.h -> curl_rtsp.h - renamed: select.h -> curl_select.h - renamed: sendf.h -> curl_sendf.h - renamed: setup.h -> curl_setup.h - renamed: setup_once.h -> curl_setup_once.h - renamed: share.h -> curl_share.h - renamed: slist.h -> curl_slist.h - renamed: smtp.h -> curl_smtp.h - renamed: sockaddr.h -> curl_sockaddr.h - renamed: socks.h -> curl_socks.h - renamed: speedcheck.h -> curl_speedcheck.h - renamed: splay.h -> curl_splay.h - renamed: ssh.h -> curl_ssh.h - renamed: sslgen.h -> curl_sslgen.h - renamed: ssluse.h -> curl_ssluse.h - renamed: strdup.h -> curl_strdup.h - renamed: strequal.h -> curl_strequal.h - renamed: strerror.h -> curl_strerror.h - renamed: strtok.h -> curl_strtok.h - renamed: strtoofft.h -> curl_strtoofft.h - renamed: telnet.h -> curl_telnet.h - renamed: tftp.h -> curl_tftp.h - renamed: timeval.h -> curl_timeval.h - renamed: transfer.h -> curl_transfer.h - renamed: url.h -> curl_url.h - renamed: urldata.h -> curl_urldata.h - renamed: warnless.h -> curl_warnless.h - renamed: wildcard.h -> curl_wildcard.h + APPEND, STORE, LIST, EXAMINE, STATUS and SEARCH + +- ftpserver.pl: More whitespace corrections - ---------------------------------------- - -- build: make use of 76 lib/*.h renamed files - - 76 private header files renamed to use our standard naming scheme. - - This change affects 322 files in libcurl's source tree. - -- lib/*.h: use our standard naming scheme for header inclusion guards - -Steve Holme (28 Dec 2012) -- imsp.c: Fixed usernames and passwords that contain escape characters - - Fixed a problem with sending usernames and passwords that contain - backslash, quotation mark and space characters. - -Daniel Stenberg (27 Dec 2012) -- curl.1: extend the -X, --request description - -- RELEASE-NOTES: synced with e3ed2b82e6 - -- [Nick Zitzmann brought this change] - - darwinssl: Fixed inability to disable peer verification - - ... on Snow Leopard and Lion - - Snow Leopard introduced the SSLSetSessionOption() function, but it - doesn't disable peer verification as expected on Snow Leopard or - Lion (it works as expected in Mountain Lion). So we now use sysctl() - to detect whether or not the user is using Snow Leopard or Lion, - and if that's the case, then we now use the deprecated - SSLSetEnableCertVerify() function instead to disable peer verification. - -Yang Tse (26 Dec 2012) -- curl tool: rename hugehelp files to tool_hugehelp - -- curl tool: renaming hugehelp files to tool_hugehelp - -- sockfilt.c: commit b44da5a82a follow-up 2 - -- sockfilt.c: commit b44da5a82a follow-up - -- sockfilt.c: fix some compiler warnings + LIST_imap() had a second level of indentation at 9 characters and not 8. -- curl_multi_remove_handle: commit 0aabfd9963 follow-up +- ftpserver.pl: Small correction tidy up + + Corrected some IMAP variable names and whitespace issues. -Daniel Stenberg (25 Dec 2012) -- lib556: enable VERBOSE to ease debugging on failures +- [Kyle L. Huff brought this change] -Marc Hoersken (25 Dec 2012) -- socklift.c: Quick fix to re-add missing code + docs: Added documentation for CURLOPT_BEARER -- socklift.c: Added select_ws function to support Windows - - WinSock select() does not support standard file descriptors, - it can only check SOCKETs. The following function is an attempt - to create a select() function with support for other handles. +- [Kyle L. Huff brought this change] -Yang Tse (25 Dec 2012) -- Enable tests 1503, 1504 and 1505 + curl.1: Add usage of '--bearer' option -- curl_multi_remove_handle: fix memory leak triggered with CURLOPT_RESOLVE +- tests: Added tests for IMAP CREATE, DELETE and RENAME commands -- Curl_hash_clean: OOM handling fix +Daniel Stenberg (30 Aug 2013) +- ftpserver: Bareword "to_mailbox" not allowed + + Added missing $ -- test 1504 and 1505: same as 1502 but with different cleanup sequences +Steve Holme (30 Aug 2013) +- ftpserver.pl: Added support for IMAP CREATE, DELETE and RENAME commands -Daniel Stenberg (24 Dec 2012) -- Curl_conncache_foreach: allow callback to break loop +Daniel Stenberg (29 Aug 2013) +- FTP: fix getsock during DO_MORE state - ... and have it take a proper 'struct connectdata *' as first argument + ... when doing upload it would return the wrong values at times. This + commit attempts to cleanup the mess. + + Bug: http://curl.haxx.se/mail/lib-2013-08/0109.html + Reported-by: Mike Mio -- pop3_doing: don't call pop3_dophase_done() if already failed +- curl_multi_remove_handle: allow multiple removes - ... it also clobbered the 'result' return value so that it wouldn't - return the error back to the parent function properly, which broke test - 809 when run with 'multi-always'. + When removing an already removed handle, avoid that to ruin the + internals and just return OK instead. -Yang Tse (23 Dec 2012) -- test 1503: same as 1502 but with a different cleanup sequence +Steve Holme (29 Aug 2013) +- ftpserver.pl: Updated IMAP EXAMINE handler to use dynamic test data -- test 1502: OOM handling fixes +Daniel Stenberg (29 Aug 2013) +- unit1304: include memdebug and free everything correctly -- curl_multi_wait: OOM handling fix +- Curl_parsenetrc: document that the arguments must be allocated -- [Daniel Stenberg brought this change] +- easy: rename struct monitor to socketmonitor + + 'struct monitor', introduced in 6cf8413e, already exists in an IRIX + header file (sys/mon.h) which gets included via various standard headers + by lib/easy.c + + cc-1101 cc: ERROR File = ../../curl/lib/easy.c, Line = 458 + "monitor" has already been declared in the current scope. + + Reported-by: Tor Arntsen - curl_multi_wait: avoid an unnecessary memory allocation +Steve Holme (29 Aug 2013) +- ftpserver.pl: Added SELECT check to IMAP FETCH and STORE handlers -- runtests.pl: prepend $srcdir to HTTPTLS server config files path +- ftpserver.pl: Corrected accidental move of logmsg() call + + Corrected the call to logmsg() in the IMAP SEARCH handler from commit + 4ae7b7ea691497 as it should have been outputting the what argument and + not the test number. -- multi.c: OOM handling fix +Daniel Stenberg (28 Aug 2013) +- ftpserver: add missing '}' from 4ae7b7ea69149 -- lib543.c: OOM handling fixes +Steve Holme (28 Aug 2013) +- ftpserver.pl: Added SELECT check to IMAP SEARCH command -- configure: add internal sanity check (warn only) on vars for makefiles +- ftpserver.pl: Fixed IMAP SEARCH command -Daniel Stenberg (21 Dec 2012) -- SCP: relative path didn't work - - When prefixing a path with /~/ it is supposed to be used relative to the - user's home directory but it didn't work. Now we cut off the entire - three byte sequenct "/~/" which seems to be how OpenSSH does it. - - Bug: http://curl.haxx.se/bug/view.cgi?id=1173 - Reported by: Balaji Parasuram +Daniel Stenberg (28 Aug 2013) +- bump: next release is 7.33.0 due to added features -Yang Tse (21 Dec 2012) -- configure: LIBMETALINK_CFLAGS actually is LIBMETALINK_CPPFLAGS +- symbols-in-versions: add CURLOPT_XOAUTH2_BEARER -- configure: add minimal sanity check on user provided CFLAGS and CPPFLAGS +Steve Holme (28 Aug 2013) +- tests: Added test for IMAP SEARCH command -- bundles connection caching: some out of memory handling fixes +Daniel Stenberg (28 Aug 2013) +- valgrind.supp: fix for regular curl_easy_perform too + + When we introduced curl_easy_perform_ev, this got a slightly modified + call trace. Without this, test 165 causes a false positive valgrind + error. -- libntlmconnect.c: fix compiler warnings and OOM handling +- valgrind.supp: add the event-based call stack-trace too + + Without this, test 165 triggers a valgrind error when ran with + curl_easy_perform_ev -- configure.ac: clear local test intended variables before use +- multi_socket: improved 100-continue timeout handling + + When waiting for a 100-continue response from the server, the + Curl_readwrite() will refuse to run if called until the timeout has been + reached. + + We timeout code in multi_socket() allows code to run slightly before the + actual timeout time, so for test 154 it could lead to the function being + executed but refused in Curl_readwrite() and then the application would + just sit idling forever. + + This was detected with runtests.pl -e on test 154. -- VC6 IDE: link with advapi32.lib when using WIN32 crypto API (md5.c) +Steve Holme (27 Aug 2013) +- ftpserver.pl: Added support for IMAP SEARCH command -- curl-functions.m4: improve gethostname arg 2 data type check +- tool_operate.c: Fixed compilation warning + + warning: implicit declaration of function 'checkpasswd' -- setup_once.h: HP-UX specific 'bool', 'false' and 'true' definitions. +- curl: Moved check for password out of get parameter loop - Also reverts commit f254c59dc7 + Moved the calls to checkpasswd() out of the getparameter() function + which allows for any related arguments to be specified on the command + line before or after --user (and --proxy-user). + + For example: --bearer doesn't need to be specified before --user to + prevent curl from asking for an unnecessary password as is the case + with commit e7dcc454c67a2f. -- configure: check if compiler halts on function prototype mismatch +- RELEASE-NOTES: synced with acf59be7f09a7 -- warnless.c: fix compiler warnings +- [Kyle L. Huff brought this change] -- curl-functions.m4: add gethostname arg 2 data type check and definition + curl: added --bearer option to help + + Added the --bearer option to the help output -Daniel Stenberg (14 Dec 2012) -- [Nick Zitzmann brought this change] +- [Kyle L. Huff brought this change] - darwinssl: Fix implicit conversion compiler warnings + curl: added basic SASL XOAUTH2 support - The Clang compiler found a few implicit conversion problems that have - now been fixed. - -Yang Tse (14 Dec 2012) -- setup_once.h: HP-UX <sys/socket.h> issue workaround + Added the ability to specify an XOAUTH2 bearer token [RFC6750] via the + --bearer option. - Issue: When building a 32bit target with large file support HP-UX - <sys/socket.h> header file may simultaneously provide two different - sets of declarations for sendfile and sendpath functions, one with - static and another with external linkage. Given that we do not use - mentioned functions we really don't care which linkage is the - appropriate one, but on the other hand, the double declaration emmits - warnings when using the HP-UX compiler and errors when using modern - gcc versions resulting in fatal compilation errors. + Example usage: + curl --url "imaps://imap.gmail.com:993/INBOX/;UID=1" --ssl-reqd + --bearer ya29.AHES6Z...OMfsHYI --user username@example.com + +- tool_urlglob.c: Fixed compiler warnings - Mentioned issue is now fixed as long as we don't use sendfile nor - sendpath functions. + warning: 'variable' may be used uninitialized in this function -- setup_once.h: refactor inclusion of <unistd.h> and <sys/socket.h> +Daniel Stenberg (26 Aug 2013) +- security.h: rename to curl_sec.h to avoid name collision - Inclusion of top two most included header files now done in setup_once.h + I brought back security.h in commit bb5529331334e. As we actually + already found out back in 2005 in commit 62970da675249, the file name + security.h causes problems so I renamed it curl_sec.h instead. -- setup_once.h: HP-UX specific TRUE and FALSE definitions +- runtests.pl: allow -vc point to a separate curl binary to verify with - Some HP-UX system headers require TRUE defined to 1 and FALSE to 0. + The specified curl binary will then be used to verify the running + server(s) instead of the development version. This is very useful in + some cases when the development version fails to verify correctly as + then the test case may not run at all. + + The actual test will still be run with the "normal" curl executable + (unless the test case specifies something differently). + +Steve Holme (26 Aug 2013) +- [Kyle L. Huff brought this change] -Daniel Stenberg (12 Dec 2012) -- gopher: #include cleanup + smtp: added basic SASL XOAUTH2 support - Remove all system file includes from this file as they're not needed + Added the ability to use an XOAUTH2 bearer token [RFC6750] with SMTP for + authentication using RFC6749 "OAuth 2.0 Authorization Framework". - Reported by: Dan Fandrich + The bearer token is expected to be valid for the user specified in + conn->user. If CURLOPT_XOAUTH2_BEARER is defined and the connection has + an advertised auth mechanism of "XOAUTH2", the user and access token are + formatted as a base64 encoded string and sent to the server as + "AUTH XOAUTH2 <bearer token>". -Yang Tse (11 Dec 2012) -- examples/simplessl.c: fix compiler warning +- [Kyle L. Huff brought this change] -- examples/externalsocket.c: fix SunPro compilation issue + imap: added basic SASL XOAUTH2 support + + Added the ability to use an XOAUTH2 bearer token [RFC6750] with IMAP for + authentication using RFC6749 "OAuth 2.0 Authorization Framework". + + The bearer token is expected to be valid for the user specified in + conn->user. If CURLOPT_XOAUTH2_BEARER is defined and the connection has + an advertised auth mechanism of "XOAUTH2", the user and access token are + formatted as a base64 encoded string and sent to the server as + "A001 AUTHENTICATE XOAUTH2 <bearer token>". -- examples/simplessl.c: fix compiler warning +- security.h: Fixed compilation warning + + ISO C forbids forward references to 'enum' types -- build: add bundles and conncache files to other build systems +Daniel Stenberg (26 Aug 2013) +- KNOWN_BUGS: refer to bug numbers with the existing number series + + The old numbers would still redirect but who knows for how long... -- conncache: fix enumerated type mixed with another type +Steve Holme (25 Aug 2013) +- [Kyle L. Huff brought this change] -- examples/anyauthput.c: fix Tru64 compilation issue + options: added basic SASL XOAUTH2 support + + Added the ability to specify an XOAUTH2 bearer token [RFC6750] via the + option CURLOPT_XOAUTH2_BEARER for authentication using RFC6749 "OAuth + 2.0 Authorization Framework". -Daniel Stenberg (8 Dec 2012) -- [Colin Watson brought this change] +- [Kyle L. Huff brought this change] - configure: fix cross pkg-config detection + sasl: added basic SASL XOAUTH2 support - When cross-compiling, CURL_CHECK_PKGCONFIG was checking for the cross - pkg-config using ${host}-pkg-config. + Added the ability to generated a base64 encoded XOAUTH2 token + containing: "user=<username>^Aauth=Bearer <bearer token>^A^A" + as per RFC6749 "OAuth 2.0 Authorization Framework". + +Daniel Stenberg (25 Aug 2013) +- FTP: remove krb4 support - The gold standard for doing this correctly is pkg-config's own macro, - PKG_PROG_PKG_CONFIG. However, on the assumption that you have a good - reason not to use that directly (reduced dependencies for maintainer - builds?), the behaviour of cURL's version should at least match. - PKG_PROG_PKG_CONFIG uses AC_PATH_TOOL, which ultimately ends up trying - ${host_alias}-pkg-config; this is not quite the same as what cURL does, - and may differ because ${host} has been run through config.sub. For - instance, when cross-building to the armhf architecture on Ubuntu, - ${host_alias} is arm-linux-gnueabihf while ${host} is - arm-unknown-linux-gnueabihf. This may also have been the cause of the - problem reported at http://curl.haxx.se/mail/lib-2012-04/0224.html. + We've announced this pending removal for a long time and we've + repeatedly asked if anyone would care or if anyone objects. Nobody has + objected. It has probably not even been working for a good while since + nobody has tested/used this code recently. - AC_PATH_TOOL is significantly simpler than cURL's current code, and - dates back to well before the current minimum of Autoconf 2.57, so let's - use it instead. + The stuff in krb4.h that was generic enough to be used by other sources + is now present in security.h -- [Linus Nielsen Feltzing brought this change] +- easy: define away easy_events() for non-debug builds - Introducing a new persistent connection caching system using "bundles". - - A bundle is a list of all persistent connections to the same host. - The connection cache consists of a hash of bundles, with the - hostname as the key. - The benefits may not be obvious, but they are two: +- FAQ: editorial updates - 1) Faster search for connections to reuse, since the hash - lookup only finds connections to the host in question. - 2) It lays out the groundworks for an upcoming patch, - which will introduce multiple HTTP pipelines. + Several language fixes. Several reformats that should make the HTML + generation of this document look better. - This patch also removes the awkward list of "closure handles", - which were needed to send QUIT commands to the FTP server - when closing a connection. - Now we allocate a separate closure handle and use that - one to close all connections. - - This has been tested in a live system for a few weeks, and of - course passes the test suite. + Reported-by: Dave Thompson -- [Fabian Keil brought this change] +- RELEASE-NOTES: synced with 22adb46a32bee - runtests and friends: Do not add undefined values to @INC +- multi: move on from STATE_DONE faster - On FreeBSD this fixes the warning: - Use of uninitialized value $p in string eq at /usr/local/lib/perl5/5.14.2/BSDPAN/BSDPAN.pm line 36. - -Steve Holme (5 Dec 2012) -- Merge pull request #52 from isn-/master + Make sure we always return CURLM_CALL_MULTI_PERFORM when we reach + CURLM_STATE_DONE since the state is transient and it can very well + continue executing as there is nothing to wait for. - small compilation fix + Bug: http://curl.haxx.se/mail/lib-2013-08/0211.html + Reported-by: Yi Huang -Stanislav Ivochkin (5 Dec 2012) -- build: fix compilation with CURL_DISABLE_CRYPTO_AUTH flag +- curl.h: name space pollution by "enum type" + + Renamed to "enum curl_khtype" now. Will break compilation for programs + that rely on the enum name. + + Bug: https://github.com/bagder/curl/pull/76 + Reported-by: Shawn Landden -Yang Tse (5 Dec 2012) -- libtest: fix some compiler warnings +- TFTP: make the CURLOPT_LOW_SPEED* options work + + ... this also makes sure that the progess callback gets called more + often during TFTP transfers. + + Added test 1238 to verify. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1269 + Reported-by: Jo3 -- examples: fix compilation issues - commit 7332a7cafb follow-up +- tftpd: support "writedelay" within <servercmd> -- examples: fix compilation issues - commit 23f8dca6fb follow-up +- tftpd: convert 6 global variables into local ones -- examples: fix compilation issues +- [Gisle Vanem brought this change] -- build: explain current role of LIBS in our Makefile.am files + curl_easy_perform_ev: make it CURL_EXTERN - BLANK_AT_MAKETIME may be used in our Makefile.am files to blank - LIBS variable used in generated makefile at makefile processing - time. Doing this functionally prevents LIBS from being used for - all link targets in given makefile. + I build curl.exe (using MingW) with '-DCURLDEBUG' and by importing from + libcurl.dll. Which means the new curl_easy_perform_ev() must be + exported from libcurl.dll. -Daniel Stenberg (4 Dec 2012) -- multi: fix re-sending request on early connection close +- CURLM_ADDED_ALREADY: new error code - This handling already works with the easy-interface code. When a request - is sent on a re-used connection that gets closed by the server at the - same time as the request is sent, the situation may occur so that we can - send the request and we discover the broken connection as a RECV_ERROR - in the PERFORM state and then the request needs to be retried on a fresh - connection. Test 64 broke with 'multi-always-internally'. + Doing curl_multi_add_handle() on an easy handle that is already added to + a multi handle now returns this error code. It previously returned + CURLM_BAD_EASY_HANDLE for this condition. -Yang Tse (4 Dec 2012) -- configure: add minimal sanity check on user provided LIBS and LDFLAGS +- multi_init: moved init code here from add_handle + + The closure_handle is "owned" by the multi handle and it is + unconditional so the setting up of it should be in the Curl_multi_handle + function rather than curl_multi_add_handle. -- build: prevent global LIBS from influencing src and lib build targets +- multi: remove dns cache creation code from *add_handle - Currently, LIBS is already used through other macros. + As it is done unconditionally in multi_init() this code will never run! -Kamil Dudka (3 Dec 2012) -- nss: prevent NSS from crashing on client auth hook failure +- curl_easy_perform_ev: debug/test function - Although it is not explicitly stated in the documentation, NSS uses - *pRetCert and *pRetKey even if the client authentication hook returns - a failure. Namely, if we destroy *pRetCert without clearing *pRetCert - afterwards, NSS destroys the certificate once again, which causes a - double free. + This function is meant to work *exactly* as curl_easy_perform() but will + use the event-based libcurl API internally instead of + curl_multi_perform(). To avoid relying on an actual event-based library + and to not use non-portable functions (like epoll or similar), there's a + rather inefficient emulation layer implemented on top of Curl_poll() + instead. - Reported by: Bob Relyea - -Yang Tse (30 Nov 2012) -- testcurl.pl: build example programs for several autobuilds + There's currently some convenience logging done in curl_easy_perform_ev + which helps when tracking down problems. They may be suitable to remove + or change once things seem to be fine enough. - Affected autobuilds: IRIX, AIX, Tru64 and AIX. + curl has a new --test-event option when built with debug enabled that + then uses curl_easy_perform_ev() instead of curl_easy_perform(). If + built without debug, using --test-event will only output a warning + message. + + NOTE: curl_easy_perform_ev() is not part if the public API on purpose. + It is only present in debug builds of libcurl and MUST NOT be considered + stable even then. Use it for libcurl-testing purposes only. + + runtests.pl now features an -e command line option that makes it use + --test-event for all curl command line tests. The man page is updated. -- build: prevent global LIBS from influencing examples build targets +- [Gisle Vanem brought this change] -- build: prevent global LIBS from influencing libtest build targets + transfer: the recent sessionhandle change broke CURL_DOES_CONVERSIONS -- build: prevent global LIBS from influencing test server build targets +- test1237: verify 1000+ letter user name + passwords -- build: fix Windows build targets damaged since commit 550e403f00 +- [Jonathan Nieder brought this change] -- build: avoid linkage of directly unused libraries + url: handle arbitrary-length username and password before '@' + + libcurl quietly truncates usernames, passwords, and options from + before an '@' sign in a URL to 255 (= MAX_CURL_PASSWORD_LENGTH - 1) + characters to fit in fixed-size buffers on the stack. Allocate a + buffer large enough to fit the parsed fields on the fly instead to + support longer passwords. + + After this change, there are no more uses of MAX_CURL_OPTIONS_LENGTH + left, so stop defining that constant while at it. The hardcoded max + username and password length constants, on the other hand, are still + used in HTTP proxy credential handling (which this patch doesn't + touch). + + Reported-by: Colby Ranger -- dd missing NTLM feature for tests 2025, and 2028 to 2032 +- [Jonathan Nieder brought this change] + + url: handle exceptional cases first in parse_url_login() + + Instead of nesting "if(success)" blocks and leaving the reader in + suspense about what happens in the !success case, deal with failure + cases early, usually with a simple goto to clean up and return from + the function. + + No functional change intended. The main effect is to decrease the + indentation of this function slightly. -- avoid mixing of enumerated type with another type +- [Jonathan Nieder brought this change] -- multi.c: disambiguate precedence of bitwise and relational operation + Curl_setopt: handle arbitrary-length username and password + + libcurl truncates usernames, passwords, and options set with + curl_easy_setopt to 255 (= MAX_CURL_PASSWORD_LENGTH - 1) characters. + This doesn't affect the return value from curl_easy_setopt(), so from + the caller's point of view, there is no sign anything strange has + happened, except that authentication fails. + + For example: + + # Prepare a long (300-char) password. + s=0123456789; s=$s$s$s$s$s$s$s$s$s$s; s=$s$s$s; + # Start a server. + nc -l -p 8888 | tee out & pid=$! + # Tell curl to pass the password to the server. + curl --user me:$s http://localhost:8888 & sleep 1; kill $pid + # Extract the password. + userpass=$( + awk '/Authorization: Basic/ {print $3}' <out | + tr -d '\r' | + base64 -d + ) + password=${userpass#me:} + echo ${#password} + + Expected result: 300 + Actual result: 255 + + The fix is simple: allocate appropriately sized buffers on the heap + instead of trying to squeeze the provided values into fixed-size + on-stack buffers. + + Bug: http://bugs.debian.org/719856 + Reported-by: Colby Ranger -Daniel Stenberg (26 Nov 2012) -- [Fabian Keil brought this change] +- [Jonathan Nieder brought this change] - Remove stray CRLF in chunk-encoded content-free request bodies + netrc: handle longer username and password - .. that are sent when auth-negotiating before a chunked - upload or when setting the 'Transfer-Encoding: chunked' - header and intentionally sending no content. + libcurl truncates usernames and passwords it reads from .netrc to + LOGINSIZE and PASSWORDSIZE (64) characters without any indication to + the user, to ensure the values returned from Curl_parsenetrc fit in a + caller-provided buffer. - Adjust test565 and test1333 accordingly. - -- FAQ: clarify the 3.4 section + Fix the interface by passing back dynamically allocated buffers + allocated to fit the user's input. The parser still relies on a + 256-character buffer to read each line, though. - You can do custom commands to FTP without sending anything by using the - CURLOPT_NOBODY, which -I sets. - -- [Lijo Antony brought this change] - - examples: Updated asiohiper.cpp to remove connect from opensocket + So now you can include an ~246-character password in your .netrc, + instead of the previous limit of 63 characters. - Blocking connect on the socket has been removed from opensocket - callback. opensocket just opens a new socket and gives it back to - libcurl and libcurl will take care of the connect. sockopt_callback has - also been removed, as it is no longer required. + Reported-by: Colby Ranger -Yang Tse (23 Nov 2012) -- build: fix AIX compilation and usage +- [Jonathan Nieder brought this change] + + url: allocate username, password, and options on the heap - AIX sys/poll.h header file defines 'events' and 'revents' as C - preprocessor macros. Usage of these literals in libcurl's external - API was introduced in commit de24d7bd4c causing AIX build failures. - Appropriate inclusion of sys/poll.h by libcurl's external interface - fixes AIX build and usage issues while avoiding a SONAME bump. + This makes it possible to increase the size of the buffers when needed + in later patches. No functional change yet. -Steve Holme (23 Nov 2012) -- DOCS: Updated CURLOPT_CONNECT_ONLY to reflect usage in other protocols +- [Jonathan Nieder brought this change] -Daniel Stenberg (23 Nov 2012) -- test: offer "automake" output and check for perl better + url: use goto in create_conn() for exception handling - runtests.pl -am now uses the "PASS/FAIL: [desc]" output for each - executed test. You can run 'make test-am' in the root build directory to - invoke that. The reason for this output style is to better allow generic - test suite parsers to also grok our test output. + Instead of remembering before each "return" statement which temporary + allocations, if any, need to be freed, take care to set pointers to + NULL when no longer needed and use a goto to a common block to exit + the function and free all temporaries. - The test Makefile now also tests that perl was indeed found and that the - PERL variable points to an executable before it tries to run the main - test perl script runtests.pl, + No functional change intended. Currently the only temporary buffer in + this function is "proxy" which is already correctly freed when + appropriate, but there will be more soon. -- [Fabian Keil brought this change] +- [Jonathan Nieder brought this change] - Test 206: Use a Content-Length header for the 407 response + sasl: allow arbitrarily long username and password - Otherwise curl would have to guess where the body ends. - -- [Fabian Keil brought this change] - - Test 206: Don't respond to a succesful CONNECT request with a body + Use appropriately sized buffers on the heap instead of fixed-size + buffers on the stack, to allow for longer usernames and passwords. - It's against the spec and caused test failures when header - and response were read from the network separately in which - case bug #39 wasn't triggered. - -- htmltitle: use .cpp extension for C++ examples + Callers never pass anything longer than MAX_CURL_USER_LENGTH (resp. + MAX_CURL_PASSWORD_LENGTH), so no functional change inteded yet. -- [Lijo Antony brought this change] +Steve Holme (19 Aug 2013) +- [Alex McLellan brought this change] - examples: Added a c++ example of using multi with boost::asio + imap: Fixed response check for SEARCH command - Added an example for demonstrating the usage of curl multi interface - with boost::asio in c++ + Adding this line allows libcurl to return the server response when + performing a search command via a custom request. -- VC Makefiles: add missing hostcheck +Daniel Stenberg (16 Aug 2013) +- glob: error out on range overflow - the newly introduced hostcheck.h/c is missing in the Visual Studio - Makefiles as obj file. + The new multiply() function detects range value overflows. 32bit + machines will overflow on a 32bit boundary while 64bit hosts support + ranges up to the full 64 bit range. - Bug: http://curl.haxx.se/mail/lib-2012-11/0176.html - -- compiler warning fixes + Added test 1236 to verify. - The conversions from ssize_t to int need to be typecasted. + Bug: http://curl.haxx.se/bug/view.cgi?id=1267 + Reported-by: Will Dietz -- bump: start working on 7.28.2 +- urlglob: better detect unclosed braces, empty lists and overflows + + A rather big overhaul and cleanup. + + 1 - curl wouldn't properly detect and reject globbing that ended with an + open brace if there were brackets or braces before it. Like "{}{" or + "[0-1]{" + + 2 - curl wouldn't properly reject empty lists so that "{}{}" would + result in curl getting (nil) strings in the output. + + 3 - By using strtoul() instead of sscanf() the code will now detected + over and underflows. It now also better parses the step argument to only + accept positive numbers and only step counters that is smaller than the + delta between the maximum and minimum numbers. + + 4 - By switching to unsigned longs instead of signed ints for the + counters, the max values for []-ranges are now very large (on 64bit + machines). + + 5 - Bumped the maximum number of globs in a single URL to 100 (from 10) + + 6 - Simplified the code somewhat and now it stores fixed strings as + single- entry lists. That's also one of the reasons why I did (5) as now + all strings between "globs" will take a slot in the array. + + Added test 1234 and 1235 to verify. Updated test 87. + + This commit fixes three separate bug reports. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1264 + Bug: http://curl.haxx.se/bug/view.cgi?id=1265 + Bug: http://curl.haxx.se/bug/view.cgi?id=1266 + Reported-by: Will Dietz -- THANKS: added 14 contributors from the 7.28.1 release +- [John Malmberg brought this change] -Version 7.28.1 (20 Nov 2012) + VMS: Add RELEASE-NOTES to vms document + + Add the curl release notes to the release note document generated for + VMS packages. + + Add the different filenames generated by a daily build to the + cleanup procedures. -Daniel Stenberg (20 Nov 2012) -- RELEASE-NOTES: synced with 52af6e69f079 / 7.28.1 +- [Tor Arntsen brought this change] -Kamil Dudka (20 Nov 2012) -- [Anthony Bryan brought this change] + tests 2032, 2033: Don't hardcode port in expected output - RELEASE-NOTES: NSS can be used for metalink hashing +- ftp: convert state names to a global array + + ... just to make them easier to print in debug ouputs while debugging. + They are still within #ifdef [debugbuild]. -- [Fabian Keil brought this change] +- --help: fix the --sasl-ir in the help output - Get test 2032 working when using valgrind +- ftp_domore_getsock: when passive mode, the second conn is already there + + This makes the socket callback get called with the proper bitmask as + otherwise the application could be left hanging waiting for reading on + an upload connection! - If curl_multi_fdset() sets maxfd to -1, the socket detection - loop is skipped and thus !found_new_socket is no cause for alarm. + Bug: http://curl.haxx.se/mail/lib-2013-08/0043.html + Reported-by: Bill Doyle -- test2032: spurious failure caused by premature termination +- curl: make --no-[option] work properly for several options - Bug: http://curl.haxx.se/mail/lib-2012-11/0095.html + --create-dirs, --crlf, --socks5-gssapi-nec and --sasl-ir -Daniel Stenberg (19 Nov 2012) -- [Fabian Keil brought this change] +Kamil Dudka (12 Aug 2013) +- nss: make sure that NSS is initialized + + ... prior to calling PK11_GenerateRandom() - Fix comment typos in test 517 +Daniel Stenberg (12 Aug 2013) +- multi: s/easy/data + + With everything being struct SessionHandle pointers now, this rename + makes multi.c use the library-wide practise of calling that pointer + 'data' instead of the previously used 'easy'. -- [Fabian Keil brought this change] +- cleanup: removed one function, made one static + + Moved Curl_easy_addmulti() from easy.c to multi.c, renamed it to + easy_addmulti and made it static. + + Removed Curl_easy_initHandleData() and uses of it since it was emptied + in commit cdda92ab67b47d74a. - Test 92 and 194: normalize spaces in the Server headers +- SessionHandle: the protocol specific pointer is now a void * + + All protocol handler structs are now opaque (void *) in the + SessionHandle struct and moved in the request-specific sub-struct + 'SingleRequest'. The intension is to keep the protocol specific + knowledge in their own dedicated source files [protocol].c etc. - It makes no difference from curl's point of view but - makes it more convenient to use the tests with a - lws-normalizing proxy between curl and the test server. + There's some "leakage" where this policy is violated, to be addressed at + a later point in time. -- [Fabian Keil brought this change] +- urldata: clean up the use of the protocol specific structs + + 1 - always allocate the struct in protocol->setup_connection. Some + protocol handlers had to get this function added. + + 2 - always free at the end of a request. This is also an attempt to keep + less memory in the handle after it is completed. - Add a HOSTIP precheck for tests 31 and 1105 +- version number: bump to 7.32.1 for now - They currently only work for 127.0.0.1 which - is hardcoded and can't be easily changed. + Start working on the next version and up some counters. + +Version 7.32.0 (11 Aug 2013) + +Daniel Stenberg (11 Aug 2013) +- THANKS: added contributors from the 7.32.0 release notes - [Fabian Keil brought this change] - Let test 8 work as long as %HOSTIP ends with ".0.0.1" - - .. and add a precheck to skip the test otherwise. + test1228: add 'HTTP proxy' to the keywords - [Fabian Keil brought this change] - Add --resolve to the keywords and name of test 1318 - - This makes it easier to skip it automatically when - the test suite is used with external proxies. + tests: add keywords for a couple of FILE tests - [Fabian Keil brought this change] - Add FTP keywords for a couple of currently keyword-less FTP tests + tests: add 'FAILURE' keywords to tests 1409 and 1410 - [Fabian Keil brought this change] - Add keywords for a couple of currently keyword-less HTTP tests + tests: add keywords for a couple of HTTP tests - [Fabian Keil brought this change] - Use carriage returns in all headers in test 31 - - Trailing spaces were left unmodifed, assuming they were intentional. + tests: add keywords for a couple of FTP tests - [Fabian Keil brought this change] - Do not mix CRLF and LF header endings in a couple of HTTP tests - - Consistently use CRLF instead. The mixed endings weren't - documented so I assume they were unintentional. - - This change doesn't matter for curl itself but makes using - the tests with a proxy between curl and the test server - more convenient. + test1511: consistently terminate headers with CRLF + +- DISABLED: shut of test 1512 for now - Tests that consistently use no carriage returns were - left unmodified as one can easily work around this. + It shows intermittent failures and I haven't been able to track them + down yet. Disable this test for now. + +- curl_multi_add_handle.3: ... that timer callback is for event-based + +- comments: remove old and wrong multi/easy interface statements + +- curl_multi_add_handle.3: mention the CURLMOPT_TIMERFUNCTION use + +- [John E. Malmberg brought this change] + + KNOWN_BUGS: 22 and 57 have been fixed and committed -- fixed memory leak: CURLOPT_RESOLVE with multi interface +- RELEASE-NOTES: synced with d20def20462e7 + +- global dns cache: fix memory leak - DNS cache entries populated with CURLOPT_RESOLVE were not properly freed - again when done using the multi interface. + The take down of the global dns cache didn't take CURLOPT_RESOLVE names + into account. + +- global dns cache: didn't work [regression] - Test case 1502 added to verify. + CURLOPT_DNS_USE_GLOBAL_CACHE broke in commit c43127414d89ccb (been + broken since the libcurl 7.29.0 release). While this option has been + documented as deprecated for almost a decade and nobody even reported + this bug, it should remain functional. - Bug: http://curl.haxx.se/bug/view.cgi?id=3575448 - Reported by: Alex Gruz + Added test case 1512 to verify -- RELEASE-NOTES: synced with ee588fe08807778 - - 4 more bug fixes and 4 more contributors +Yang Tse (8 Aug 2013) +- [John Malmberg brought this change] -- mem-include-scan: verify memory #includes + packages/vms: update VMS build files - If we use memory functions (malloc, free, strdup etc) in C sources in - libcurl and we fail to include curl_memory.h or memdebug.h we either - fail to properly support user-provided memory callbacks or the memory - leak system of the test suite fails. + VMS modified files either missing from a previous commit and changes + to remove references to CVS repositories. + +Daniel Stenberg (8 Aug 2013) +- FTP: renamed several local functions - After Ajit's report of a failure in the first category in http_proxy.c, - I spotted a few in the second category as well. These problems are now - tested for by test 1132 which runs a perl program that scans for and - attempts to check that we use the correct include files if a memory - related function is used in the source code. + The previous naming scheme ftp_state_post_XXXX() wasn't really helpful + as it wasn't always immediately after 'xxxx' and it wasn't easy to + understand what it does based on such a name. - Reported by: Ajit Dhumale - Bug: http://curl.haxx.se/mail/lib-2012-11/0125.html + This new one is instead ftp_state_yyyy() where yyyy describes what it + does or sends. -- tftp_rx: code style cleanup +- mk-ca-bundle.1: don't install on make install - Fixed checksrc warnings - -- [Fabian Keil brought this change] - - Fix the libauthretry changes from 7c0cbcf2f61 + Since the mk-ca-bundle tool itself isn't installed with make install, + there's no point in installing its documentation. - They broke the NTLM tests from 2023 to 2031. + Bug: http://curl.haxx.se/mail/lib-2013-08/0057.html + Reported-by: Guenter Knauf -- [Christian Vogt brought this change] +Yang Tse (7 Aug 2013) +- packages/vms/Makefile.am: add latest file additions to EXTRA_DIST - tftp_rx: handle resends +- [John Malmberg brought this change] + + Building_vms_pcsi_kit - Re-send ACK for block X in case we receive block X data again while - waiting for block X+1. + These are the files needed to build VMS distribution packages known as + PCSI kits. - Based on an earlier patch by Marcin Adamski. + Also minor update to the existing files, mainly to the documentation and + file clean up code. -- autoconf: don't force-disable compiler debug option +Daniel Stenberg (6 Aug 2013) +- LIBCURL-STRUCTS: new document + + This is the first version of this new document, detailing the seven + perhaps most important internal structs in libcurl source code: - When nothing is told to configure, we should not enforce switching off - debug options with -g0 (or similar). We instead don't use -g at all in - that situaion and therefore allow the user's CFLAGS settings possibly - dictate what to do. + 1.1 SessionHandle + 1.2 connectdata + 1.3 Curl_multi + 1.4 Curl_handler + 1.5 conncache + 1.6 Curl_share + 1.7 CookieInfo -- [Mark Snelling brought this change] +- CONTRIBUTE: minor language polish - winbuild: Fix PDB file output +- FTP: when EPSV gets a 229 but fails to connect, retry with PASV - And fix some newlines to be proper CRLF + This is a regression as this logic used to work. It isn't clear when it + broke, but I'm assuming in 7.28.0 when we went all-multi internally. - Bug: http://curl.haxx.se/bug/view.cgi?id=3586741 - -- RELEASE-NOTES: synced with fa1ae0abcde + This likely never worked with the multi interface. As the failed + connection is detected once the multi state has reached DO_MORE, the + Curl_do_more() function was now expanded somewhat so that the + ftp_do_more() function can request to go "back" to the previous state + when it makes another attempt - using PASV. + + Added test case 1233 to verify this fix. It has the little issue that it + assumes no service is listening/accepting connections on port 1... + + Reported-by: byte_bucket in the #curl IRC channel -- [Cristian Rodríguez brought this change] +Nick Zitzmann (5 Aug 2013) +- md5: remove use of CommonCrypto-to-OpenSSL macros for the benefit of Leopard + + For some reason, OS X 10.5's GCC suddenly stopped working correctly with + macros that change MD5_Init etc. in the code to CC_MD5_Init etc., so I + worked around this by removing use of the macros and inserting static + functions that just call CommonCrypto's implementations of the functions + instead. - OpenSSL: Disable SSL/TLS compression +Guenter Knauf (5 Aug 2013) +- Simplify check for trusted certificates. - It either causes increased memory usage or exposes users - to the "CRIME attack" (CVE-2012-4929) + This changes the previous check for untrusted certs to a check for + certs explicitely marked as trusted. + The change is backward-compatible (tested with certdata.txt v1.80). -- [Sebastian Rasmussen brought this change] +Daniel Stenberg (5 Aug 2013) +- configure: warn on bad env variable use, don't error + + Use XC_CHECK_BUILD_FLAGS instead XC_CHECK_USER_FLAGS. - FILE: Make upload-writes unbuffered by not using FILE streams +- Revert "configure: don't error out on variable confusions, just warn" + + This reverts commit 6b27703b5f525eccdc0a8409f51de8595c75132a. -Kamil Dudka (13 Nov 2012) -- tool_metalink: fix error detection of hash alg initialization +- formadd: wrong pointer for file name when CURLFORM_BUFFERPTR used - The {MD5,SHA1,SHA256}_Init functions from OpenSSL are called directly - without any wrappers and they return 1 for success, 0 otherwise. Hence, - we have to use the same approach in all the wrapper functions that are - used for the other crypto libraries. + The internal function that's used to detect known file extensions for + the default Content-Type got the the wrong pointer passed in when + CURLFORM_BUFFER + CURLFORM_BUFFERPTR were used. This had the effect that + strlen() would be used which could lead to an out-of-bounds read (and + thus segfault). In most cases it would only lead to it not finding or + using the correct default content-type. - This commit fixes a regression introduced in commit dca8ae5f. - -Daniel Stenberg (13 Nov 2012) -- RELEASE-NOTES: synced with 7c0cbcf2f617b - -- [Sergei Nikulov brought this change] + It also showed that test 554 and test 587 were testing for the + previous/wrong behavior and now they're updated as well. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1262 + Reported-by: Konstantin Isakov - fixed Visual Studio 2010 compilation +Guenter Knauf (4 Aug 2013) +- Skip more untrusted certificates. + + Christian Heimes brought to our attention that the certdata.txt + format has recently changed [1], causing ca-bundle.crt created + with mk-ca-bundle.[pl|vbs] to include untrusted certs. + + [1] http://lists.debian.org/debian-release/2012/11/msg00411.html -- [Anton Malov brought this change] +Daniel Stenberg (4 Aug 2013) +- configure: don't error out on variable confusions, just warn - ftp: EPSV-disable fix over SOCKS +- configure: rephrase the notice in _XC_CHECK_VAR_* - Bug: http://curl.haxx.se/bug/view.cgi?id=3586338 + Instead of claiming it is an error, we call it a "note" to reduce the + severity level. But the following text now says the [variable] "*should* + only be used to specify"... instead of previously having said "may". -Patrick Monnerat (12 Nov 2012) -- Merge branch 'master' of github.com:bagder/curl +- multi: remove data->state.current_conn struct field + + Not needed -- OS400: upgrade wrappers for the 7.28.1 release. +- multi: remove the one_easy struct field + + Since the merge of SessionHandle with Curl_one_easy, this indirection + isn't used anymore. -Daniel Stenberg (12 Nov 2012) -- runtests: limit execessive logging/output +- multi: rename all Curl_one_easy to SessionHandle -- [Gabriel Sjoberg brought this change] +- multi: remove the multi_pos struct field + + Since Curl_one_easy is really a SessionHandle now, this indirection + doesn't exist anymore. - Digst: Add microseconds into nounce calculation +- multi: remove easy_handle struct field - When using only 1 second precision, curl doesn't create new cnonce - values quickly enough for all uses. + It isn't needed anymore + +- multi: remove 'Curl_one_easy' struct, phase 1 - For example, issuing the following command multiple times to a recent - Tomcat causes authentication failures: + The motivation for having a separate struct that keep track of an easy + handle when using the multi handle was removed when we switched to + always using the multi interface internally. Now they were just two + separate struct that was always allocated for each easy handle. - curl --digest -utest:test http://tomcat.test.com:8080/manager/list + This first step just moves the Curl_one_easy struct members into the + SessionHandle struct and hides this somehow (== keeps the source code + changes to a minimum) by defining Curl_one_easy to SessionHandle - This is because curl uses the same cnonce for several seconds, but - doesn't increment the nonce counter. Tomcat correctly interprets - this as a replay attack and rejects the request. + The biggest changes in this commit are: - When microsecond-precision is available, this commit causes curl to - change cnonce values much more frequently. + 1 - the linked list of easy handles had to be changed somewhat due + to the new struct layout. This made the main linked list pointer + get renamed to 'easyp' and there's also a new pointer to the last + node, called easylp. It is no longer circular but ends with ->next + pointing to NULL. New nodes are still added last. - With microsecond resolution, increasing the nounce length used in the - headers to 32 was made to further reduce the risk of duplication. + 2 - easy->state is now called easy->mstate to avoid name collision -- SCP/SFTP: improve error code used for send failures +Steve Holme (2 Aug 2013) +- Revert "DOCS: Added IMAP URL example for listing new messages" - Instead of relying on the generic CURLE error for SCP or SFTP send - failures, try passing back a more suitable error if possible. - -- Curl_write: remove unneeded typecast + This reverts commit 82ab5f1b0c7c3f as this was the wrong place to + document the complexity of IMAP URLs and Custom Requests. -Kamil Dudka (9 Nov 2012) -- tool_metalink: allow to use hash algorithms provided by NSS +- DOCS: Added IMAP URL example for listing new messages - Fixes bug #3578163: - http://sourceforge.net/tracker/?func=detail&atid=100976&aid=3578163&group_id=976 + In addition to listing the folder contents, in the URL examples, added + an example to list the new messages waiting in the user's inbox. -- tool_metalink: allow to handle failure of hash alg initialization +Yang Tse (1 Aug 2013) +- packages/vms/Makefile.am: add latest file additions to EXTRA_DIST -- tool_metalink: introduce metalink_cleanup() in the internal API - - ... to release resources allocated at global scope +- [John Malmberg brought this change] -Daniel Stenberg (8 Nov 2012) -- hostcheck: only build for the actual users + Add in the files needed to build libcurl shared images on VMS. - and make local function static - -- [Oscar Koeroo brought this change] - - SSL: Several SSL-backend related fixes - - axTLS: - - This will make the axTLS backend perform the RFC2818 checks, honoring - the VERIFYHOST setting similar to the OpenSSL backend. - - Generic for OpenSSL and axTLS: + Update the packages/vms/readme file to be current. - Move the hostcheck and cert_hostcheck functions from the lib/ssluse.c - files to make them genericly available for both the OpenSSL, axTLS and - other SSL backends. They are now in the new lib/hostcheck.c file. + Also some files for the GNV based build were either missing or needed an + update. - CyaSSL: + curl_crtl_init.c is a special file that is run before main() to + set up the proper C runtime behavior. - CyaSSL now also has the RFC2818 checks enabled by default. There is a - limitation that the verifyhost can not be enabled exclusively on the - Subject CN field comparison. This SSL backend will thus behave like the - NSS and the GnuTLS (meaning: RFC2818 ok, or bust). In other words: - setting verifyhost to 0 or 1 will disable the Subject Alt Names checks - too. + generate_vax_transfer.com generates the VAX transfer vector modules from + the gnv_libcurl_symbols.opt file. - Schannel: + gnv_conftest.c_first is a helper file needed for configure scripts to + come up with the expected answers on VMS. - Updated the schannel information messages: Split the IP address usage - message from the verifyhost setting and changed the message about - disabling SNI (Server Name Indication, used in HTTP virtual hosting) - into a message stating that the Subject Alternative Names checks are - being disabled when verifyhost is set to 0 or 1. As a side effect of - switching off the RFC2818 related servername checks with - SCH_CRED_NO_SERVERNAME_CHECK - (http://msdn.microsoft.com/en-us/library/aa923430.aspx) the SNI feature - is being disabled. This effect is not documented in MSDN, but Wireshark - output clearly shows the effect (details on the libcurl maillist). + gnv_libcurl_symbols.opt is the public symbols for the libcurl shared + image. - PolarSSL: + gnv_link_curl.com builds the shared libcurl image and rebuilds other + programs to use it. - Fix the prototype change in PolarSSL of ssl_set_session() and the move - of the peer_cert from the ssl_context to the ssl_session. Found this - change in the PolarSSL SVN between r1316 and r1317 where the - POLARSSL_VERSION_NUMBER was at 0x01010100. But to accommodate the Ubuntu - PolarSSL version 1.1.4 the check is to discriminate between lower then - PolarSSL version 1.2.0 and 1.2.0 and higher. Note: The PolarSSL SVN - trunk jumped from version 1.1.1 to 1.2.0. + macro32_exactcase.patch is a hack to make a local copy of the VMS Macro32 + assembler case sensitive, which is needed to build the VAX transfer modules. - Generic: - - All the SSL backends are fixed and checked to work with the - ssl.verifyhost as a boolean, which is an internal API change. + report_openssl_version.c is a tool for help verify that the libcurl + shared image is being built for a minium version of openssl. -- libcurl: VERSIONINFO update - - Since we added the curl_multi_wait function, the VERSIONINFO needed - updating. +- curl: second follow-up for commit 5af2bfb9 - Reported by: Patrick Monnerat + Display progress-bar unconditionally on first call -Guenter Knauf (8 Nov 2012) -- Added .def file to output. +- curl: follow-up for commit 5af2bfb9 - Requested by Johnny Luong on the libcurl list. + Use tvnow() and tvdiff() to avoid introducing new linkage issues -- Added deps for static metalink-aware MinGW builds. +Daniel Stenberg (31 Jul 2013) +- curl: --progress-bar max update frequency now at 5Hz -Daniel Stenberg (8 Nov 2012) -- [Fabian Keil brought this change] - - Fix compilation of lib1501 - -- Curl_readwrite: remove debug output +- curl: make --progress-bar update the line less frequently - The text "additional stuff not fine" text was added for debug purposes a - while ago, but it isn't really helping anyone and for some reason some - Linux distributions provide their libcurls built with debug info still - present and thus (far too many) users get to read this info. - -- RELEASE-NOTES: synced with 487538e87a3d5e + Also, use memset() instead of a lame loop. - 6 new bugfixes and 3 more contributors... - -- http_perhapsrewind: consider NTLM over proxy too + The previous logic that tried to avoid too many updates were very + ineffective for really fast transfers, as then it could easily end up + doing hundreds of updates per second that would make a significant + impact in transfer performance! - The logic previously checked for a started NTLM negotiation only for - host and not also with proxy, leading to problems doing POSTs over a - proxy NTLM that are larger than 2000 bytes. Now it includes proxy in the - check. - - Bug: http://curl.haxx.se/bug/view.cgi?id=3582321 - Reported by: John Suprock - -- [Lars Buitinck brought this change] + Bug: http://curl.haxx.se/mail/archive-2013-07/0031.html + Reported-by: Marc Doughty - Curl_connecthost: friendlier "couldn't connect" message +Nick Zitzmann (30 Jul 2013) +- darwinssl: added LFs to some strings passed into infof() + + (This doesn't need to appear in the release notes.) I noticed a few places + where infof() was called, and there should've been an LF at the end of the + string, but there wasn't. -- test1413: verify redirects to URLs with fragments +- darwinssl: fix build error in crypto authentication under Snow Leopard - The bug report claimed it didn't work. This problem was probably fixed - in 473003fbdf. + It turns out Snow Leopard not only has SecItemCopyMatching() defined in + a header not included by the omnibus header, but it won't work for our + purposes, because searching for SecIdentityRef objects wasn't added + to that API until Lion. So we now use the old SecKeychainSearch API + instead if the user is building under, or running under, Snow Leopard. - Bug: http://curl.haxx.se/bug/view.cgi?id=3581898 + Bug: http://sourceforge.net/p/curl/bugs/1255/ + Reported by: Edward Rudd -- URL parser: cut off '#' fragments from URLs (better) +- md5 & metalink: use better build macros on Apple operating systems - The existing logic only cut off the fragment from the separate 'path' - buffer which is used when sending HTTP to hosts. The buffer that held - the full URL used for proxies were not dealt with. It is now. + Previously we used __MAC_10_X and __IPHONE_X to mark digest-generating + code that was specific to OS X and iOS. Now we use + __MAC_OS_X_VERSION_MAX_ALLOWED and __IPHONE_OS_VERSION_MAX_ALLOWED + instead of those macros. - Test case 5 was updated to use a fragment on a URL over a proxy. - - Bug: http://curl.haxx.se/bug/view.cgi?id=3579813 + Bug: http://sourceforge.net/p/curl/bugs/1255/ + Reported by: Edward Rudd -- OpenSSL/servercert: use correct buffer size, not size of pointer - - Bug: http://curl.haxx.se/bug/view.cgi?id=3579286 +Yang Tse (29 Jul 2013) +- tool_operhlp.c: fix add_file_name_to_url() OOM handling -- curl: set CURLOPT_SSL_VERIFYHOST to 0 to disable +- tool_operate.c: fix brace placement for vi/emacs delimiter matching -- test 2027/2030: take duplicate Digest requests into account - - With the reversion of ce8311c7e49eca and the new clear logic, this flaw - is present and we allow it. +- tool_operate.c: move <fabdef.h> header inclusion location -- Curl_pretransfer: clear out unwanted auth methods - - As a handle can be re-used after having done HTTP auth in a previous - request, it must make sure to clear out the HTTP types that aren't - wanted in this new request. +Daniel Stenberg (29 Jul 2013) +- RELEASE-NOTES: synced with b5478a0e033e7 -- test1412: verify Digest with repeated URLs +- curl_easy_pause: on unpause, trigger mulit-socket handling - This test case verifies that bug 3582718 is fixed. + When the multi-socket API is used, we need the handle to be checked + again when it gets unpaused. - Bug: http://curl.haxx.se/bug/view.cgi?id=3582718 - Reported by: Nick Zitzmann (originally) + Bug: http://curl.haxx.se/mail/lib-2013-07/0239.html + Reported-by: Justin Karneges -- Revert "Zero out auth structs before transfer" - - This reverts commit ce8311c7e49eca93c136b58efa6763853541ec97. - - The commit made test 2024 work but caused a regression with repeated - Digest authentication. We need to fix this differently. +- [John E. Malmberg brought this change] -- CURLOPT_SSL_VERIFYHOST: stop supporting the 1 value + curl_formadd: fix file upload on VMS - After a research team wrote a document[1] that found several live source - codes out there in the wild that misused the CURLOPT_SSL_VERIFYHOST - option thinking it was a boolean, this change now bans 1 as a value and - will make libcurl return error for it. + For the standard VMS text file formats, VMS needs to read the file to + get the actual file size. - 1 was never a sensible value to use in production but was introduced - back in the days to help debugging. It was always documented clearly - this way. + For the standard VMS binary file formats, VMS needs a special format of + fopen() call so that it stops reading at the logical end of file instead + of at the end of the blocks allocated to the file. - 1 was never supported by all SSL backends in libcurl, so this cleanup - makes the treatment of it unified. + I structured the patch this way as I was not sure about changing the + structures or parameters to the routines, but would prefer to only call + the stat() function once and pass the information to where the fopen() + call is made. - The report's list of mistakes for this option were all PHP code and - while there's a binding layer between libcurl and PHP, the PHP team has - decided that they have an as thin layer as possible on top of libcurl so - they will not alter or specifically filter a 'TRUE' value for this - particular option. I sympathize with that position. + Bug: https://sourceforge.net/p/curl/bugs/758/ + +- formadd: CURLFORM_FILECONTENT wrongly rejected some option combos + + The code for CURLFORM_FILECONTENT had its check for duplicate options + wrong so that it would reject CURLFORM_PTRNAME if used in combination + with it (but not CURLFORM_COPYNAME)! The flags field used for this + purpose cannot be interpreted that broadly. - [1] = http://daniel.haxx.se/blog/2012/10/25/libcurl-claimed-to-be-dangerous/ + Bug: http://curl.haxx.se/mail/lib-2013-07/0258.html + Reported-by: Byrial Jensen -- gnutls: fix compiler warnings +Yang Tse (25 Jul 2013) +- packages/vms/Makefile.am: add latest file additions to EXTRA_DIST -- [Alessandro Ghedini brought this change] +- [John E. Malmberg brought this change] - gnutls: print alerts during handshake + VMS: intial set of files to allow building using GNV toolkit. -- [Alessandro Ghedini brought this change] +- string formatting: fix too many arguments for format - gnutls: fix the error_is_fatal logic +- string formatting: fix zero-length printf format string -- RELEASE-NOTES: synced with fa6d78829fd30ad +- easy.c: curl_easy_getinfo() fix va_start/va_end matching -- httpcustomheader.c: free the headers after use +- imap.c: imap_sendf() fix va_start/va_end matching -- [Dave Reisner brought this change] +- string formatting: fix 15+ printf-style format strings - uniformly use AM_CPPFLAGS, avoid deprecated INCLUDES - - Since automake 1.12.4, the warnings are issued on running automake: +Patrick Monnerat (24 Jul 2013) +- OS400: sync ILE/RPG binding with current curl.h + +Yang Tse (24 Jul 2013) +- string formatting: fix 25+ printf-style format strings + +Daniel Stenberg (23 Jul 2013) +- Makefile.am: use LDFLAGS as well when linking libcurl - warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS') + Linking on Solaris 10 x86 with Sun Studio 12 failed when we upgraded + automake for the release builds. - Avoid INCLUDES and roll these flags into AM_CPPFLAGS. + Bug: http://curl.haxx.se/bug/view.cgi?id=1217 + Reported-by: Dagobert Michelsen + +- [Fabian Keil brought this change] + + url.c: Fix dot file path cleanup when using an HTTP proxy - Compile tested on: - Ubuntu 10.04 (automake 1:1.11.1-1) - Ubuntu 12.04 (automake 1:1.11.3-1ubuntu2) - Arch Linux (automake 1.12.4) + Previously the path was cleaned, but the URL wasn't properly updated. + +- [Fabian Keil brought this change] -- libauthretry.c: shorten lines to fit within 80 cols + tests: test1232 verifies dotdot removal from path with proxy -- ftp_readresp: fix build without krb4 support +- [Fabian Keil brought this change] + + dotdot.c: Fix a RFC section number in a comment for Curl_dedotdotify() + +- [John E. Malmberg brought this change] + + build_vms.com: fix debug and float options - Oops, my previous commit broke builds with krb support. + In the reorganization of the build_vms.com the debug and float options + were not fixed up correctly. -- test/README: mention the 1500 test number range +- [John E. Malmberg brought this change] -- FTP: prevent the multi interface from blocking + curl: fix upload of a zip file in OpenVMS - As pointed out in Bug report #3579064, curl_multi_perform() would - wrongly use a blocking mechanism internally for some commands which - could lead to for example a very long block if the LIST response never - showed. + Two fixes: - The solution was to make sure to properly continue to use the multi - interface non-blocking state machine. + 1. Force output file format to be stream-lf so that partial downloads + can be continued. - The new test 1501 verifies the fix. + This should have minor impact as if the file does not exist, it was + created with stream-lf format. The only time this was an issue is if + there was already an existing file with a different format. - Bug: http://curl.haxx.se/bug/view.cgi?id=3579064 - Reported by: Guido Berhoerster - -Marc Hoersken (1 Nov 2012) -- winbuild: Use machine type of development environment + 2. Fix file uploads are now fixed. - This patch restores the original behavior instead of always - falling back to x86 if no MACHINE-type was specified. - -- winbuild: Additional clean up - -- [Sapien2 brought this change] - - Even more winbuild refactoring - -- [Sapien2 brought this change] + a. VMS binary files such as ZIP archives are now uploaded + correctly. + + b. VMS text files are read once to get the correct size + and then converted to line-feed terminated records as + they are read into curl. + + The default VMS text formats do not contain either line-feed or + carriage-return terminated records. Those delimiters are added by the + operating system file read calls if the application requests them. + + Bug: http://curl.haxx.se/bug/view.cgi?id=496 - Minor winbuild refactoring +Yang Tse (22 Jul 2013) +- libtest: fix data type of some *_setopt() 'long' arguments -- [Sapien2 brought this change] +- curl: fix symbolic names for CURL_NETRC_* enum in --libcurl output - Architecture selection for winbuild and minor makefiles refactoring +- curl: fix symbolic names for CURLUSESSL_* enum in --libcurl output -Daniel Stenberg (1 Nov 2012) -- BUGS: fix the bug tracker URL +- tool_operate.c: fix passing curl_easy_setopt long arg on some x64 ABIs - The URL we used before is the one that goes directly to 'add' a bug - report, but since you can only do that after first having logged in to - sourceforge, the link often doesn't work for visitors. + We no longer pass our 'bool' data type variables nor constants as + an argument to my_setopt(), instead we use proper 1L or 0L values. - Bug: http://curl.haxx.se/bug/view.cgi?id=3582408 - Reported by: Oscar Norlander - -- evhiperfifo: fix the pointer passed to WRITEDATA + This also fixes macro used to pass string argument for CURLOPT_SSLCERT, + CURLOPT_SSLKEY and CURLOPT_EGDSOCKET using my_setopt_str() instead of + my_setopt(). - Bug: http://curl.haxx.se/bug/view.cgi?id=3582407 - Reported by: Oscar Norlander + This also casts enum or int argument data types to long when passed to + my_setopt_enum(). -Guenter Knauf (1 Nov 2012) -- Fixed MSVC libssh2 static build. +Daniel Stenberg (21 Jul 2013) +- curl_multi_wait: fix revents - Since libssh2 supports now agent stuff it also depends on user32.lib. - Posted to the list by Jan Ehrhardt. - -Daniel Stenberg (23 Oct 2012) -- tlsauthtype: deal with the string case insensitively + Commit 6d30f8ebed34e7276 didn't work properly. First, it used the wrong + array index, but this fix also: - When given a string as 'srp' it didn't work, but required 'SRP'. - Starting now, the check disregards casing. + 1 - only does the copying if indeed there was any activity - Bug: http://curl.haxx.se/bug/view.cgi?id=3578418 - Reported by: Jeff Connelly + 2 - makes sure to properly translate between internal and external + bitfields, which are not guaranteed to match + + Reported-by: Evgeny Turnaev + +- RELEASE-NOTES: synced with d529f3882b9bca -- asyn-ares: restore working with c-ares < 1.6.1 +- curl_easy_perform: gradually increase the delay time - Back in those days the public ares.h header didn't include the - ares_version.h header so it needs to be included here. + Instead of going 50,100,150 etc millisecond delay time when nothing has + been found to do or wait for, we now start lower and double each loop as + in 4,8,16,32 etc. - Bug: http://curl.haxx.se/bug/view.cgi?id=3577710 - -- [Nick Zitzmann brought this change] + This lowers the minimum wait without sacrifizing the longer wait too + much with unnecessary CPU cycles burnt. + + Bug: http://curl.haxx.se/mail/lib-2013-07/0103.html + Reported-by: Andreas Malzahn - metalink/md5: Use CommonCrypto on Apple operating systems +- ftp_do_more: consider DO_MORE complete when server connects back - Previously the Metalink code used Apple's CommonCrypto library only if - curl was built using the --with-darwinssl option. Now we use CommonCrypto - on all Apple operating systems including Tiger or later, or iOS 5 or - later, so you don't need to build --with-darwinssl anymore. Also rolled - out this change to libcurl's md5 code. + In the case of an active connection when ftp_do_more() detects that the + server has connected back, it must make sure to mark it as complete so + that the multi_runsingle() function will detect this and move on to the + next state. + + Bug: http://curl.haxx.se/mail/lib-2013-07/0115.html + Reported-by: Clemens Gruber -- href_extractor.c: fix the URL +Yang Tse (19 Jul 2013) +- Makefile.b32: Borland makefile adjustments. Tested with BCC 5.5.1 -- [Michał Kowalczyk brought this change] +- WIN32 MemoryTracking: require UNICODE for wide strdup code support - href_extractor: example code extracting href elements +Daniel Stenberg (18 Jul 2013) +- CURLOPT_XFERINFOFUNCTION: introducing a new progress callback - It does so in a streaming manner using the "Streaming HTML parser". - -- [Nick Zitzmann brought this change] + CURLOPT_XFERINFOFUNCTION is now the preferred progress callback function + and CURLOPT_PROGRESSFUNCTION is considered deprecated. + + This new callback uses pure 'curl_off_t' arguments to pass on full + resolution sizes. It otherwise retains the same characteristics: the + same call rate, the same meanings for the arguments and the return code + is used the same way. + + The progressfunc.c example is updated to show how to use the new + callback for newer libcurls while supporting the older one if built with + an older libcurl or even built with a newer libcurl while running with + an older. - darwinssl: un-broke iOS build, fix error on server disconnect +Yang Tse (18 Jul 2013) +- Reinstate "WIN32 MemoryTracking: track wcsdup() _wcsdup() and _tcsdup() usage". + + This reverts commit 7ed25cc, reinstating commit 8ec2cb5. + + As of 18-jul-2013 we still do have code in libcurl that makes use of these + memory functions. Commit 8ec2cb5 comment still applies and is yet valid. + + These memory functions are solely used in Windows builds, so all related + code is protected with '#ifdef WIN32' preprocessor conditional compilation + directives. + + Specifically, wcsdup() _wcsdup() are used when building a Windows target with + UNICODE and USE_WINDOWS_SSPI preprocessor symbols defined. This is the case + when building a Windows UNICODE target with Windows native SSL/TLS support + enabled. + + Realizing that wcsdup() _wcsdup() are used is a bit tricky given that usage + of these is hidden behind _tcsdup() which is MS way of dealing with code + that must tolerate UNICODE and non-UNICODE compilation. Additionally, MS + header files and those compatible from other compilers use this preprocessor + conditional compilation directive in order to select at compilation time + whether 'wide' or 'ansi' MS API functions are used. - The iOS build was broken by a reference to a function that only existed - under OS X; fixed. Also fixed a hard-to-reproduce problem where, if the - server disconnected before libcurl got the chance to hang up first and - SecureTransport was in use, then we'd raise an error instead of failing - gracefully. + Without this code, Windows build targets with Windows native SSL/TLS support + enabled and MemoryTracking support enabled misbehave in tracking memory usage, + regardless of being a UNICODE enabled build or not. -- [Alessandro Ghedini brought this change] +- xc-am-iface.m4: comments refinement - gnutls: put reset code into else block +- configure: fix 'subdir-objects' distclean related issue - Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690551 + See XC_AMEND_DISTCLEAN comments for details. -Guenter Knauf (13 Oct 2012) -- Fix now broken libmetalink-aware OpenSSL build. +Daniel Stenberg (18 Jul 2013) +- [Evgeny Turnaev brought this change] -- Revert c44e674; add OpenSSL includes/defines. + curl_multi_wait: set revents for extra fds - The makefile is designed to build against a libmetalink devel package; - therefore is does not matter what will change inside libmetalink. - Add OpenSSL includes and defines for libmetalink-aware OpenSSL builds. + Pass back the revents that happened for the user-provided file + descriptors. -Daniel Stenberg (10 Oct 2012) -- version-bump: towards 7.28.1! +- [Ben Greear brought this change] -- THANKS: 14 new contributors from 7.28.0 + asyn-ares: Don't blank ares servers if none configured. + + Best to just let c-ares use it's defaults if none are configured + in (lib)curl. + + Signed-off-by: Ben Greear <greearb@candelatech.com> -Version 7.28.0 (10 Oct 2012) +- [Sergei Nikulov brought this change] -Daniel Stenberg (10 Oct 2012) -- RELEASE-NOTES: synced with 8373ca3641 + cmake: Fix for MSVC2010 project generation - One bug, one contributor. Getting ready for release. - -- curl_multi_wait: no wait if no descriptors to wait for + Fixed issue with static build for MSVC2010. - This is a minor change in behavior after having been pointed out by Mark - Tully and discussed on the list. Initially this case would internally - call poll() with no sockets and a timeout which would equal a sleep for - that specified time. + After some investigation I've discovered known issue + http://public.kitware.com/Bug/view.php?id=11240 When .rc file is linked + to static lib it fails with following linker error - Bug: http://curl.haxx.se/mail/lib-2012-10/0076.html - Reported by: Mark Tully - -- TODO-RELEASE: cleanup for 7.28.0 + LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 + file.obj : fatal error LNK1112: module machine type 'x64' conflicts with + target machine type 'X86' - one issue is now KNOWN_BUG #79 + Fix add target property /MACHINE: for MSVC generation. - the other we just skip since nobody is working on it or is planning to - start working on it anytime soon - -- curl_multi_wait.3: style formatting mistake - -Marc Hoersken (8 Oct 2012) -- ssluse.c: md5.h is required for Curl_ossl_md5sum - -Daniel Stenberg (8 Oct 2012) -- curl_multi_wait.3: fix the name of the man page - -- curl_multi_wait.3: renamed the last argument variable for clarity - -Marc Hoersken (6 Oct 2012) -- curl_schannel.c: Fixed caching more data than required + Also removed old workarounds - it caused errors during msvc build. - Do not fill the decrypted data buffer with more data unless - required in order to return the requested amount of data. + Bug: http://curl.haxx.se/mail/lib-2013-07/0046.html -- curl_schannel: Removed buffer limit and optimized buffer strategy - - Since there are servers that seem to return very big encrypted - data packages, we need to be able to handle those without having - an internal size limit. To avoid the buffer growing to fast to - early the initial size was decreased and the minimum free space - in the buffer was decreased as well. +- mk-ca-bundle.1: point out certdata.txt format docs -- lib/socks.c: Merged two size variables into one +Yang Tse (16 Jul 2013) +- slist.c: Curl_slist_append_nodup() OOM handling fix -- lib/socks.c: Avoid type conversions where possible - - Streamlined variable names and types to avoid type conversions that - may result in data being lost on non 32-bit systems. +Daniel Stenberg (16 Jul 2013) +- test1414: FTP PORT download without SIZE support -- lib/curl_schannel.c: Hide size_t conversion warning +Yang Tse (16 Jul 2013) +- tests/Makefile.am: add configurehelp.pm to DISTCLEANFILES -- krb5/curl_rtmp.c: Hide size_t to int type conversion warning +Patrick Monnerat (15 Jul 2013) +- curl_slist_append(): fix error detection -- security.c: Aligned internal type to return type - - Use ssize_t instead of int to avoid conversion problems on 64-bit - systems. Also added curlx_sztosi where necessary. +- slist.c: fix indentation -- lib/curl_schannel: Increased maximum buffer size to factor 128 +- OS400: new SSL backend GSKit -- winbuild/MakefileBuild.vc: Follow up on 0c8ccf7 +- OS400: add slist and certinfo EBCDIC support -Daniel Stenberg (2 Oct 2012) -- RELEASE-NOTES: synced with 971f5bcedd418 - - 9 new bug fixes, 5 changes, 6 more contributors +- config-os400.h: enable system strdup(), strcmpi(), etc. -- multi_runsingle: CURLOPT_LOW_SPEED_* fix for rate limitation - - During the periods of rate limitation, the speedcheck function wasn't - called and thus the values weren't updated accordingly and it would then - easily trigger wrongly once data got transferred again. - - Also, the progress callback's return code was not acknowledged in this - state so it could make an "abort" return code to get ignored and not - have the documented effect of aborting an ongoing transfer. - - Bug: http://curl.haxx.se/mail/lib-2012-09/0081.html - Reported by: Jie He +- x509asn1.c,x509asn1.h: new module to support ASN.1/X509 parsing & info extract + Use from qssl backend -- [Tatsuhiro Tsujikawa brought this change] +- ssluse.c,sslgen.c,sslgen.h: move certinfo support to generic SSL - tool_metalink.c: Filtered resource URLs by type +- Merge branch 'master' of github.com:bagder/curl - In Metalink v3, the type attribute of url element indicates the - type of the resource the URL points to. It can include URL to the - meta data, such as BitTorrent metainfo file. In Curl, we are not - interested in these meta data URLs. Instead, we are only - interested in the HTTP and FTP URLs. This change filters out - non-HTTP and FTP URLs. If we don't filter out them, it will be - downloaded by curl and hash check will fail if hash is provided - and next URL will be tried. This change will cut this useless - network transfer. + Merge for resync -Kamil Dudka (1 Oct 2012) -- https.c example: remember to call curl_global_init() - - ... in order not to leak memory on initializing an SSL library. +- slist.c, slist.h, cookie.c: new internal procedure Curl_slist_append_nodup() + +Yang Tse (15 Jul 2013) +- sslgen.c: fix Curl_rand() compiler warning - Reported by: Tomas Mlcoch + Use simple seeding method upon RANDOM_FILE seeding method failure. -Daniel Stenberg (28 Sep 2012) -- FAQ: remove the date from the topmost line +- sslgen.c: fix unreleased Curl_rand() infinite recursion -- FAQ: 5.16 I want a different time-out! +Daniel Stenberg (14 Jul 2013) +- [Dave Reisner brought this change] -- Curl_reconnect_request: clear pointer on failure + src/tool: allow timeouts to accept decimal values - The Curl_reconnect_request() function could end up returning a pointer - to a free()d struct when Curl_done() failed inside. Clearing the pointer - unconditionally after Curl_done() avoids this risk. + Implement wrappers around strtod to convert the user argument to a + double with sane error checking. Use this to allow --max-time and + --connect-timeout to accept decimal values instead of strictly integers. - Reported by: Ho-chi Chen - Bug: http://curl.haxx.se/mail/lib-2012-09/0188.html + The manpage is updated to make mention of this feature and, + additionally, forewarn that the actual timeout of the operation can + vary in its precision (particularly as the value increases in its + decimal precision). -- CURLOPT_CONNECTTIMEOUT: works without signals or posix too! - -Marc Hoersken (24 Sep 2012) -- Makefile.vc6: Follow up on 0c8ccf7 +- [Dave Reisner brought this change] -- Makefile.vc6: Added missing default library advapi32.lib + curl.1: fix long line, found by checksrc.pl -Daniel Stenberg (19 Sep 2012) -- HTTP_ONLY: disable more protocols +- [Dave Reisner brought this change] -- test2006: Updated expected output to include hash name + src/tool_paramhlp: try harder to catch negatives - Output changed in commit a34197ef77cb - -- [Sergei Nikulov brought this change] + strto* functions happily chomp off leading whitespace, so simply + checking for str[0] can lead to false negatives. Do the full parse and + check the out value instead. - cmake: use standard findxxx modules for cmake v2.8+ - -- [Sergei Nikulov brought this change] +- [John E. Malmberg brought this change] - setup.h: fixed for MS VC10 build + build_vms.com: detect and use zlib shared image - Bug: http://curl.haxx.se/bug/view.cgi?id=3568327 - -- TODO-RELEASE: push new features to 7.29 + Update the build_vms.com to detect and use zlib shared image installed + by the ZLIB kit produced by Jean-Francois Pieronne, and the also the + future ZLIB 1.2.8 kit in addition to the older ZLIB kits. - Leave two bug fixes as possibly fixed for 7.28 but as nobody seems to be - working on them I have little hope... + Also fix the indentation to match one of the common standards used for + VMS DCL command files and removed the hard tab characters. + + Tested on OpenVMS 8.4 Alpha and IA64, and OpenVMS 7.3 VAX. -Marc Hoersken (17 Sep 2012) -- metalink tests: Updated expected output to include hash name +Yang Tse (14 Jul 2013) +- url.c: fix parse_url_login() OOM handling -Daniel Stenberg (16 Sep 2012) -- [Sara Golemon brought this change] +- http_digest.c: SIGSEGV and OOM handling fixes - curl_multi_wait: Add parameter to return number of active sockets - - Minor change to recently introduced function. BC breaking, but since - curl_multi_wait() doesn't exist in any releases that should be fine. +- url.c: fix parse_login_details() OOM handling -Marc Hoersken (14 Sep 2012) -- socks.c: Fixed warning: conversion to 'int' from 'long unsigned int' +- [John E. Malmberg brought this change] -- http_negotiate.c: Fxied warning: unused variable 'rc' + setup-vms.h: sk_pop symbol tweak + + Newer versions of curl are referencing a sk_pop symbol while the HP + OpenSSL library has the symbol in uppercase only. -- ssh.c: Fixed warning: implicit conversion from enumeration type +- getinfo.c: fix enumerated type mixed with another type -- socks.c: Check that IPv6 is enabled before using it's features +- test 1511: fix enumerated type mixed with another type -- checksrc: Fixed line length and comment indentation +- url.c: fix SIGSEGV -- socks.c: Updated error messages to handle hostname and IPv6 +- dotdot.c: fix global declaration shadowing -- socks.c: Added support for IPv6 connections through SOCKSv5 proxy +- easy.c: fix global declaration shadowing -Daniel Stenberg (13 Sep 2012) -- parse_proxy: treat "socks://x" as a socks4 proxy - - Selected socks proxy in Google's Chrome browser. Resulting in the - following environment variables: - - NO_PROXY=localhost,127.0.0.0/8 - ALL_PROXY=socks://localhost:1080/ - all_proxy=socks://localhost:1080/ - no_proxy=localhost,127.0.0.0/8 - - ... and libcurl didn't treat 'socks://' as socks but instead picked HTTP - proxy. +Kamil Dudka (9 Jul 2013) +- Revert "curl.1: document the --time-cond option in the man page" - Reported by: Scott Bailey + This reverts commit 3a0e931fc715a80004958794a96b12cf90503f99 because + the documentation of --time-cond was duplicated by mistake. - Bug: http://curl.haxx.se/bug/view.cgi?id=3566860 + Reported by: Dave Reisner -Kamil Dudka (12 Sep 2012) -- ssh: do not crash if MD5 fingerprint is not provided by libssh2 - - The MD5 fingerprint cannot be computed when running in FIPS mode. +- curl.1: document the --sasl-ir option in the man page -- ssh: move the fingerprint checking code to a separate fnc +- curl.1: document the --post303 option in the man page -Marc Hoersken (12 Sep 2012) -- tool_metalink.c: Added name of validation hash to messages - - This makes it easier to debug broken hashes or hash functions. +- curl.1: document the --time-cond option in the man page -- wincrypt: Fixed cross-compilation issues caused by include name - - For some reason WinCrypt.h is named wincrypt.h under MinGW. +Yang Tse (9 Jul 2013) +- configure: automake 1.14 compatibility tweak (use XC_AUTOMAKE) -- md5.c: Added support for Microsoft Windows CryptoAPI +- xc-am-iface.m4: provide XC_AUTOMAKE macro -- Makefile.m32: Updated to build against libmetalink 0.1.2 - - The include and library path were moved within libmetalink, this - patch adjusts the defaults provided within the curl MinGW makefile. +Guenter Knauf (8 Jul 2013) +- Added winssl-zlib target to VC builds. -- tool_metalink.c: Added support for Microsoft Windows CryptoAPI +- Synced Makefile.vc6 with recent changes. - Since Metalink support requires a crypto library for hash functions - and Windows comes with the builtin CryptoAPI, this patch adds that - API as a fallback to the supported crypto libraries. - It is automatically used on Windows if no other library is provided. + Issue posted to the list by malinowsky AT FTW DOT at. -- libntlmconnect.c: Fixed typo and conversion +- Added libmetalink URL; added Android versions. -- libntlmconnect.c: Fixed warning: curl_easy_getinfo expects long pointer +Dan Fandrich (3 Jul 2013) +- examples: Moved usercertinmem.c to COMPLICATED_EXAMPLES - Fixed tests/libtest/libntlmconnect.c:52: warning: call to - '_curl_easy_getinfo_err_long' declared with attribute warning: - curl_easy_getinfo expects a pointer to long for this info + This prevents it from being built during a "make check" since it + depends on OpenSSL. -- sws.c: Fixed warning: 'err' may be used uninitialized in this function +Nick Zitzmann (2 Jul 2013) +- Merge branch 'master' of https://github.com/bagder/curl -- libntlmconnect.c: Fixed warning: comparison of signed/unsigned integer +- darwinssl: SSLv2 connections are aborted if unsupported by the OS - Windows does not use -1 to represent invalid sockets and the - SOCKET type is unsigned. + I just noticed that OS X no longer supports SSLv2. Other TLS engines return + an error if the requested protocol isn't supported by the underlying + engine, so we do that now for SSLv2 if the framework returns an error + when trying to turn on SSLv2 support. (Note: As always, SSLv2 support is + only enabled in curl when starting the app with the -2 argument; it's off + by default. SSLv2 is really old and insecure.) -- nss.c: Fixed warning: 'err' may be used uninitialized in this function +Marc Hoersken (1 Jul 2013) +- lib506.c: Fixed possible use of uninitialized variables -- tool_metalink.c: Fixed error: 'O_BINARY' undeclared +Kamil Dudka (30 Jun 2013) +- url: restore the functionality of 'curl -u :' - Check for O_BINARY which is not available on every system. - -- tool_metalink.c: Fixed validation of binary files containing EOF + This commit fixes a regression introduced in + fddb7b44a79d78e05043e1c97e069308b6b85f79. - Since Windows/MinGW threat 0x1A as the EOF character, reading binary - files which contain that byte does not work using text mode. - The read function will only read until the first 0x1A byte. This - means that the hash is not computed from the whole file and the - final validation check using hash comparision fails. + Reported by: Markus Moeller + Bug: http://curl.haxx.se/mail/archive-2013-06/0052.html -- winbuild: Added support for building with SPNEGO enabled - - Since Simple and Protected GSSAPI Negotiation Mechanism - is already implemented in curl and supported by the MinGW - builds, this change adds build support to winbuild makefiles. +Daniel Stenberg (25 Jun 2013) +- digest: append the timer to the random for the nonce -- winbuild: Adjusted order of options to generated config name +- digest: improve nonce generation - Cleaned up order of handled build options by ordering them - nearly alphabetically by using the order of the generated - config name. Preparation for future/more build options. - -Daniel Stenberg (9 Sep 2012) -- [Anthony Bryan brought this change] + Use the new improved Curl_rand() to generate better random nonce for + Digest auth. - MANUAL: clarified user+password in HTTP URLs +- curl.1: fix typo in --xattr description + + Bug: http://curl.haxx.se/bug/view.cgi?id=1252 + Reported-by: Jean-Noël Rouvignac -- RELEASE-NOTES: synced with 6c6f1f64c2 +- RELEASE-NOTES: synced with 365c5ba39591 - 6 bug fixes to mention, 5 contributors + The 10 first bug fixes for the pending release... -- TODO-RELEASE: CURLSSH_AUTH_AGENT and curl_multi_wait() are done +- formpost: better random boundaries + + When doing multi-part formposts, libcurl used a pseudo-random value that + was seeded with time(). This turns out to be bad for users who formpost + data that is provided with users who then can guess how the boundary + string will look like and then they can forge a different formpost part + and trick the receiver. + + My advice to such implementors is (still even after this change) to not + rely on the boundary strings being cryptographically strong. Fix your + code and logic to not depend on them that much! - -321 - CURLSSH_AUTH_AGENT patch by Armel Asselin + I moved the Curl_rand() function into the sslgen.c source file now to be + able to take advantage of the SSL library's random function if it + provides one. If not, try to use the RANDOM_FILE for seeding and as a + last resort keep the old logic, just modified to also add microseconds + which makes it harder to properly guess the exact seed. - -324 - curl_multi_select() vs curl_multi_fdvec() etc + The formboundary() function in formdata.c is now using 64 bit entropy + for the boundary and therefore the string of dashes was reduced by 4 + letters and there are 16 hex digits following it. The total length is + thus still the same. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1251 + Reported-by: "Floris" -Marc Hoersken (9 Sep 2012) -- curl_schannel.c: Reference count the credential/session handle +- printf: make sure %x are treated unsigned - Reference counting the credential handle should avoid that such a - handle is freed while it is still required for connection shutdown + When using %x, the number must be treated as unsigned as otherwise it + would get sign-extended on for example 64bit machines and do wrong + output. This problem showed when doing printf("%08x", 0xffeeddcc) on a + 64bit host. -Daniel Stenberg (8 Sep 2012) -- [Nick Zitzmann brought this change] +- tests: add test1395 to the tarball - darwinssl: fixed for older Mac OS X versions +- SIGPIPE: don't use 'data' in sigpipe restore - SSL didn't work on older cats if built on a newer cat with weak-linking - turned on to support the older cat - -- [David Blaikie brought this change] + Follow-up fix from 7d80ed64e43515. + + The SessionHandle may not be around to use when we restore the sigpipe + sighandler so we store the no_signal boolean in the local struct to know + if/how to restore. - tool_easysrc.c: Test pointers against NULL +- TODO: 1.8 Modified buffer size approach - While validating a new Clang diagnostic (-Wnon-literal-null-conversion - - yes, the name isn't quite correct in this case, but it suffices) I found - a few violations of it in Curl. + Thoughts around buffer sizes and what might be possible to do... -- SOCKS: truly disable it if CURL_DISABLE_PROXY is defined +- c-ares: improve error message on failed resolve - Bug: http://curl.haxx.se/bug/view.cgi?id=3561305 + When the c-ares based resolver backend failed to resolve a name, it + tried to show the name that failed from existing structs. This caused + the wrong output and shown hostname when for example --interface + [hostname] was used and that name resolving failed. - Patch by: Marcel Raad - -- mk-ca-bundle: detect start of trust section better + Now we use the hostname used in the actual resolve attempt in the error + message as well. - Each certificate section of the input certdata.txt file has a trust - section following it with details. + Bug: http://curl.haxx.se/bug/view.cgi?id=1191 + Reported-by: Kim Vandry + +- ossl_recv: check for an OpenSSL error, don't assume - This script failed to detect the start of the trust for at least one - cert[*], which made the script continue pass that section into the next - one where it found an 'untrusted' marker and as a result that certficate - was not included in the output. + When we recently started to treat a zero return code from SSL_read() as + an error we also got false positives - which primarily looks to be + because the OpenSSL documentation is wrong and a zero return code is not + at all an error case in many situations. - [*] = "Hellenic Academic and Research Institutions RootCA 2011" + Now ossl_recv() will check with ERR_get_error() to see if there is a + stored error and only then consider it to be a true error if SSL_read() + returned zero. - Bug: http://curl.haxx.se/mail/lib-2012-09/0019.html + Bug: http://curl.haxx.se/bug/view.cgi?id=1249 + Reported-by: Nach M. S. + Patch-by: Nach M. S. -- [Alessandro Ghedini brought this change] +Nick Zitzmann (22 Jun 2013) +- Merge branch 'master' of https://github.com/bagder/curl - gnutls: do not fail on non-fatal handshake errors +- darwinssl: fix crash that started happening in Lion - Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685402 - -- FILEFORMAT: the FTP commands work for more protocols + Something (a recent security update maybe?) changed in Lion, and now it + has changed SSLCopyPeerTrust such that it may return noErr but also give + us a null trust, which caught us off guard and caused an eventual crash. -- test1411: verify SMTP without SIZE support +Daniel Stenberg (22 Jun 2013) +- SIGPIPE: ignored while inside the library + + ... and restore the ordinary handling again when it returns. This is + done for curl_easy_perform() and curl_easy_cleanup() only for now - and + only when built to use OpenSSL as backend as this is the known culprit + for the spurious SIGPIPEs people have received. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1180 + Reported by: Lluís Batlle i Rossell -- [František Kučera brought this change] +- KNOWN_BUGS: #83 unable to load non-default openssl engines - SMTP: only send SIZE if supported +- test1396: invoke the correct test tool! - SMTP client will send SIZE parameter in MAIL FROM command only if server - supports it. Without this patch server might say "504 Command parameter - not implemented" and reject the message. - - Bug: http://curl.haxx.se/bug/view.cgi?id=3564114 + This erroneously run unit test 1310 instead of 1396! -- ftpserver: respond with a 250 to SMTP EHLO +Kamil Dudka (22 Jun 2013) +- test1230: avoid using hard-wired port number - ... and specify that SIZE is supported. 250 is the "correct" response - code according to RFC 2821 + ... to prevent failure when a non-default -b option is given -- RELEASE-NOTES: synced with abb0da919300e +- curl-config.in: replace tabs by spaces -Dan Fandrich (3 Sep 2012) -- Updated Symbian build files +Nick Zitzmann (22 Jun 2013) +- darwinssl: reform OS-specific #defines - This is untested, but at least Symbian still has a chance of - still working now. + This doesn't need to be in the release notes. I cleaned up a lot of the #if + lines in the code to use MAC_OS_X_VERSION_MIN_REQUIRED and + MAC_OS_X_VERSION_MAX_ALLOWED instead of checking for whether things like + __MAC_10_6 or whatever were defined, because for some SDKs Apple has released + they were defined out of place. + +Daniel Stenberg (22 Jun 2013) +- [Alessandro Ghedini brought this change] -- Updated build docs w.r.t. Android and binary sizes + docs: fix typo in curl_easy_getinfo manpage -Daniel Stenberg (1 Sep 2012) -- symbols-in-versions: new CURL_WAIT_* symbols +- dotdot: introducing dot file path cleanup + + RFC3986 details how a path part passed in as part of a URI should be + "cleaned" from dot sequences before getting used. The described + algorithm is now implemented in lib/dotdot.c with the accompanied test + case in test 1395. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1200 + Reported-by: Alex Vinnik -- [Sara Golemon brought this change] +- bump: start working towards what most likely will become 7.32.0 - Unit test for curl_multi_wait() +- THANKS: added 24 new contributors from the 7.31.0 release -- [Sara Golemon brought this change] +Version 7.31.0 (22 Jun 2013) - Manpage for curl_multi_wait(). +Daniel Stenberg (22 Jun 2013) +- RELEASE-NOTES: synced with 0de7249bb39a2 - 7.31.0 -- [Sara Golemon brought this change] +- unit1396: unit tests to verify curl_easy_(un)escape - multi: add curl_multi_wait() +- Curl_urldecode: no peeking beyond end of input buffer + + Security problem: CVE-2013-2174 + + If a program would give a string like "%FF" to curl_easy_unescape() but + ask for it to decode only the first byte, it would still parse and + decode the full hex sequence. The function then not only read beyond the + allowed buffer but it would also deduct the *unsigned* counter variable + for how many more bytes there's left to read in the buffer by two, + making the counter wrap. Continuing this, the function would go on + reading beyond the buffer and soon writing beyond the allocated target + buffer... - /* - * Name: curl_multi_wait() - * - * Desc: Poll on all fds within a CURLM set as well as any - * additional fds passed to the function. - * - * Returns: CURLMcode type, general multi error code. - */ - CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle, - struct curl_waitfd extra_fds[], - unsigned int extra_nfds, - int timeout_ms); + Bug: http://curl.haxx.se/docs/adv_20130622.html + Reported-by: Timo Sirainen -- [Nick Zitzmann brought this change] +Guenter Knauf (20 Jun 2013) +- Use opened body.out file and write content to it. - darwinssl: Bugfix for previous commit for older cats +Daniel Stenberg (20 Jun 2013) +- multi_socket: react on socket close immediately - I accidentally broke functionality for versions of OS X prior to Mountain - Lion in the previous commit. This commit fixes the problems. + As a remedy to the problem when a socket gets closed and a new one is + opened with the same file descriptor number and as a result + multi.c:singlesocket() doesn't detect the difference, the new function + Curl_multi_closed() gets told when a socket is closed so that it can be + removed from the socket hash. When the old one has been removed, a new + socket should be detected fine by the singlesocket() on next invoke. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1248 + Reported-by: Erik Johansson -- [Joe Mason brought this change] +- RELEASE-NOTES: synced with e305f5ec715f - Use MAX_EASY_HANDLES instead of hardcoding the number of handles twice +- TODO: mention the DANE patch from March -- test2032: bail out after last transfer +- CURLOPT_COOKIELIST: take cookie share lock - The test would hang and get aborted with a "ABORTING TEST, since it - seems that it would have run forever." until I prevented that from - happening. + When performing COOKIELIST operations the cookie lock needs to be taken + for the cases where the cookies are shared among multiple handles! - I also fixed the data file which got broken CRLF line endings when I - sucked down the path from Joe's repo == my fault. + Verified by Benjamin Gilbert's updated test 506 - Removed #37 from KNOWN_BUGS as this fix and test case verifies exactly - this. + Bug: http://curl.haxx.se/bug/view.cgi?id=1215 + Reported-by: Benjamin Gilbert -- [Joe Mason brought this change] +- [Benjamin Gilbert brought this change] - NTLM: re-use existing connection better + test506: verify that CURLOPT_COOKIELIST takes share lock - If we need an NTLM connection and one already exists, always choose that - one. + It doesn't right now: http://curl.haxx.se/bug/view.cgi?id=1215 + +- TODO: HTTP2/SPDY support -- [Joe Mason brought this change] +- curl_easy_setopt.3: clarify CURLOPT_PROGRESSFUNCTION frequency + + Make it clearer that the CURLOPT_PROGRESSFUNCTION callback will be + called more frequently than once per second when things are happening. - NTLM: verify multiple connections work +- RELEASE-NOTES: synced with 9c3e098259b82 - Add test2032 to test that NTLM does not switch connections in the middle - of the handshake + Mention 7 recent bug fixes and their associated contributors -- curl.1: list the -w variables sorted alphabetically +- curl_multi_wait.3: clarify the numfds counter -- libcurl-share.3: remove wrong info of what can be shared +- curl_easy_perform: avoid busy-looping - "Currently you can only share DNS and/or COOKIE data" is incorrect since - also SSL sessions can be shared. + When curl_multi_wait() finds no file descriptor to wait for, it returns + instantly and this must be handled gracefully within curl_easy_perform() + or cause a busy-loop. Starting now, repeated fast returns without any + file descriptors is detected and a gradually increasing sleep will be + used (up to a max of 1000 milliseconds) before continuing the loop. - Bug: http://curl.haxx.se/bug/view.cgi?id=3562261 - Reported by: Joe Mason + Bug: http://curl.haxx.se/bug/view.cgi?id=1238 + Reported-by: Miguel Angel -- [Dave Reisner brought this change] +- [YAMADA Yasuharu brought this change] - examples: use do/while loop for multi examples + cookies: follow-up fix for path checking - It's conceivable that after the first time curl_multi_perform returns, - the outvalue still_running will be 0, but work will have been done. This - is shown by a workload of small, purely file:// based URLs. Ensure that - we always read pending messages off the multi handle by forcing the - while loop to run at least once. + The initial fix to only compare full path names were done in commit + 04f52e9b4db0 but found out to be incomplete. This takes should make the + change more complete and there's now two additional tests to verify + (test 31 and 62). -- curl.h: fix comment to refer to current names - - CURLOPT_USE_SSL should be set to CURLUSESSL_* and nothing else in modern - libcurl versions. +- [Sergei Nikulov brought this change] -- ftpsget: simple example showing a FTPS fetch + lib1900: use tutil_tvnow instead of gettimeofday + + Makes it build on windows -- sftpget: SFTP is not "SSH FTP" +- [Eric Hu brought this change] -- [Armel Asselin brought this change] + axtls: now done non-blocking - sftpget: example showing a simple SFTP download - - ... using SSH-agent +- [Eric Hu brought this change] -- curl_multi_perform.3: extended/clarified + test2033: requires NTLM support -- INSTALL.cmake: clarify some flaws/limits in the cmake build +- KNOWN_BUGS: #82 failed build with Borland compiler -- https.c example: spell check used define +- Curl_output_digest: support auth-int for empty entity body - Bug: http://curl.haxx.se/bug/view.cgi?id=3559845 - Reported by: Olivier Berger - -- configure: update the copyright years for the output + By always returning the md5 for an empty body when auth-int is asked + for, libcurl now at least sometimes does the right thing. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1235 + Patched-by: Nach M. S. -- [Nick Zitzmann brought this change] +- multi_socket: reduce timeout inaccuracy margin + + Allow less room for "triggered too early" mistakes by applications / + timers on non-windows platforms. Starting now, we assume that a timeout + call is never made earlier than 3 milliseconds before the actual + timeout. This greatly improves timeout accuracy on Linux. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1228 + Reported-by: Hang Su - darwinssl: add TLS 1.1 and 1.2 support, replace deprecated functions +- cert_stuff: avoid double free in the PKCS12 code + + In the pkcs12 code, we get a list of x509 records returned from + PKCS12_parse but when iterating over the list and passing each to + SSL_CTX_add_extra_chain_cert() we didn't also properly remove them from + the "stack", which made them get freed twice (both in sk_X509_pop_free() + and then later in SSL_CTX_free). - In Mountain Lion, Apple added TLS 1.1 and 1.2, and deprecated a number - of SecureTransport functions, some of which we were using. We now check - to see if the replacement functions are present, and if so, we use them - instead. The old functions are still present for users of older - cats. Also fixed a build warning that started to appear under Mountain - Lion + This isn't really documented anywhere... + + Bug: http://curl.haxx.se/bug/view.cgi?id=1236 + Reported-by: Nikaiw -- curl_easy_setopt: documented CURLSOCKTYPE_ACCEPT for SOCKOPTFUNCTION +- cert_stuff: remove code duplication in the pkcs12 logic -- [Gokhan Sengun brought this change] +- [Aleksey Tulinov brought this change] - ftp: active conn, place calling sockopt callback at the end of function + axtls: honor disabled VERIFYHOST - Commit b91d29a28e170c16d65d956db79f2cd3a82372d2 introduces a bug and breaks Curl_closesocket function. sock_accepted flag for the second socket should be tagged as TRUE before the sockopt callback is called because in case the callback returns an error, Curl_closesocket function is going to call the - fclosesocket - callback for the accept()ed socket + When VERIFYHOST == 0, libcurl should let invalid certificates to pass. -- [Gokhan Sengun brought this change] +- [Peter Gal brought this change] - ftp: active conn, allow application to set sockopt after accept() call + curl_easy_setopt.3: HTTP header with no content - For active FTP connections, applications may need setting the sockopt after accept() call returns successful. This fix gives a call to the callback registered with CURL_SOCKOPTFUNCTION option. Also a new sock type - CURLSOCKTYPE_ACCEPT - is added. This type is to be passed to application callbacks with - purpose - parameter. Applications may use this parameter to distinguish between socket types. + Update the documentation on how to specify a HTTP header with no + content. -- configure: remove the --enable/disable-nonblocking options +- RELEASE-NOTES: synced with 87cf677eca55 - Removing this option as it currently only functions to lure people into - wrongly using it and falsely believing that libcurl will work fine - without using nonblocking sockets internally - which leads to hard to - track or understand errors. - -- [Ant Bryan brought this change] + Added 11 bugs and 7 contributors - MANUAL review +- lib1500: remove bad check + + After curl_multi_wait() returns, this test checked that we got exactly + one file descriptor told to read from, but we cannot be sure that is + true. curl_multi_wait() will sometimes return earlier without any file + descriptor to handle, just just because it is a suitable time to call + *perform(). + + This problem showed up with commit 29bf0598. + + Bug: http://curl.haxx.se/mail/lib-2013-06/0029.html + Reported-by: Fabian Keil -- curl.1: shorten lines, avoid referring to libcurl instead of curl +- tests/Makefile: typo in the perlcheck target + + Bug: http://curl.haxx.se/bug/view.cgi?id=1239 + Reported-by: Christian Weisgerber -- [Ant Bryan brought this change] +- test1230: verify CONNECT to a numerical ipv6-address - curl.1: fix more consistent wording +- sws: support extracting test number from CONNECT ipv6-address! - "If this option is used several times, the last one will be used." - uniformity + If an ipv6-address is provided to CONNECT, the last hexadecimal group in + the address will be used as the test number! For example the address + "[1234::ff]" would be treated as test case 255. -- ssh: use the libssh2 agent API conditionally +- curl_multi_wait: only use internal timer if not -1 + + commit 29bf0598aad5 introduced a problem when the "internal" timeout is + prefered to the given if shorter, as it didn't consider the case where + -1 was returned. Now the internal timeout is only considered if not -1. - Commit e351972bc89aa4c brought in the ssh agent support but some uses of - the libssh2 agent API was done unconditionally which wasn't good enough - since that API hasn't always been present. + Reported-by: Tor Arntsen + Bug: http://curl.haxx.se/mail/lib-2013-06/0015.html -- white space fix: shorten long line +Dan Fandrich (3 Jun 2013) +- libcurl-tutorial.3: added a section on IPv6 - ... to please checksrc.pl + Also added a (correctly-escaped) backslash to the autoexec.bat + example file and a new Windows character device name with + a colon as examples of other characters that are special + and potentially dangerous (this reverts and reworks commit + 7d8d2a54). -Kamil Dudka (9 Aug 2012) -- docs: update the links to cipher-suites supported by NSS +Daniel Stenberg (3 Jun 2013) +- curl_multi_wait: reduce timeout if the multi handle wants to - ... and make the list of cipher-suites in nss.c readable by humans. + If the multi handle's pending timeout is less than what is passed into + this function, it will now opt to use the shorter time anyway since it + is a very good hint that the handle wants to process something in a + shorter time than what otherwise would happen. - Bug: http://curl.haxx.se/mail/archive-2012-08/0016.html - -- nss: do not print misleading NSS error codes + curl_multi_wait.3 was updated accordingly to clarify + + This is the reason for bug #1224 + + Bug: http://curl.haxx.se/bug/view.cgi?id=1224 + Reported-by: Andrii Moiseiev -Daniel Stenberg (8 Aug 2012) -- RELEASE-NOTES: synced with 0774386b23 +- multi_runsingle: switch an if() condition for readability - 5 more bug fixes, one change, 6 contributors + ... because there's an identical check right next to it so using the + operators in the check in the same order increases readability. -- [Armel Asselin brought this change] +Marc Hoersken (2 Jun 2013) +- curl_schannel.c: Removed variable unused since 35874298e4 - docs: mention CURLSSH_AUTH_AGENT +- curl_setup.h: Fixed redefinition warning using mingw-w64 -- [Armel Asselin brought this change] +Daniel Stenberg (30 May 2013) +- multi_runsingle: add braces to clarify the code - SSH: added agent based authentication +- libcurl-tutorial.3: remove incorrect backslash - CURLSSH_AUTH_AGENT is a new auth type for SSH + A single backslash in the content is not legal nroff syntax. + + Reported and fixed by: Eric S. Raymond + Bug: http://curl.haxx.se/bug/view.cgi?id=1234 -- bump version to 7.28.0 +- curl_formadd.3: fixed wrong "end-marker" syntax - I am about to merge the first patch that adds changes into the pending - release, and thus we bump the minor number. + Reported and fixed by: Eric S. Raymond + Bug: http://curl.haxx.se/bug/view.cgi?id=1233 -- RELEASE-NOTES: added missing link +- curl.1: clarify that --silent still outputs data -- curl_version: fixed Value stored to 'len' is never read +- Digest auth: escape user names with \ or " in them + + When sending the HTTP Authorization: header for digest, the user name + needs to be escaped if it contains a double-quote or backslash. - Fixed this (harmless) clang-analyzer warning. Also fixed the source - indentation level. + Test 1229 was added to verify + + Reported and fixed by: Nach M. S + Bug: http://curl.haxx.se/bug/view.cgi?id=1230 -- TODO-RELEASE: the (nil) bug is fixed +- [Mike Giancola brought this change] -- add_next_timeout: minor restructure of code + ossl_recv: SSL_read() returning 0 is an error too - By reading the ->head pointer and using that instead of the ->size - number to figure out if there's a list remaining we avoid the (false - positive) clang-analyzer warning that we might dereference of a null - pointer. + SSL_read can return 0 for "not successful", according to the open SSL + documentation: http://www.openssl.org/docs/ssl/SSL_read.html -- verbose messages: fixed output of hostnames in re-used connections - - I suspect this is a regression introduced in commit 207cf150, included - since 7.24.0. +- [Mike Giancola brought this change] + + ossl_send: SSL_write() returning 0 is an error too - Avoid showing '(nil)' as hostname in verbose output by making sure the - hostname fixup function is called early enough to set the pointers that - are used for this. The name data is set again for each request even for - re-used connections to handle multiple hostnames over the same - connection (like with proxy) or that the casing etc of the host name is - changed between requests (which has proven to be important at least once - in the past). + We found that in specific cases if the connection is abruptly closed, + the underlying socket is listed in a close_wait state. We continue to + call the curl_multi_perform, curl_mutli_fdset etc. None of these APIs + report the socket closed / connection finished. Since we have cases + where the multi connection is only used once, this can pose a problem + for us. I've read that if another connection was to come in, curl would + see the socket as bad and attempt to close it at that time - + unfortunately, this does not work for us. - Test1011 was modified to use a redirect with a re-used a connection - since it then showed the bug and now lo longer does. There's currently - no easy way to have the test suite detect 'nil' texts in verbose ouputs - so no tests will detect if this problem gets reintroduced. + I found that in specific situations, if SSL_write returns 0, curl did + not recognize the socket as closed (or errored out) and did not report + it to the application. I believe we need to change the code slightly, to + check if ssl_write returns 0. If so, treat it as an error - the same as + a negative return code. - Bug: http://curl.haxx.se/mail/lib-2012-07/0111.html - Reported by: Gisle Vanem - -- [Nick Zitzmann brought this change] - - metalink: Un-broke the build when building --with-darwinssl + For OpenSSL - the ssl_write documentation is here: + http://www.openssl.org/docs/ssl/SSL_write.html -Guenter Knauf (8 Aug 2012) -- Fix some compiler warnings. +- KNOWN_BUGS: curl -OJC- fails to resume + + Bug: http://curl.haxx.se/bug/view.cgi?id=1169 -Daniel Stenberg (8 Aug 2012) -- TODO-RELEASE: two bugs fixed +- Curl_cookie_add: handle IPv6 hosts - These are now addressed: + 1 - don't skip host names with a colon in them in an attempt to bail out + on HTTP headers in the cookie file parser. It was only a shortcut anyway + and trying to parse a file with HTTP headers will still be handled, only + slightly slower. - 323 - patch - select.c / Curl_socket_check() interrupted + 2 - don't skip domain names based on number of dots. The original + netscape cookie spec had this oddity mentioned and while our code + decreased the check to only check for two, the existing cookie spec has + no such dot counting required. - 325 - Avoid leak of local device string when reusing connection + Bug: http://curl.haxx.se/bug/view.cgi?id=1221 + Reported-by: Stefan Neis -- curl.1: minor format fix for --data-ascii +- curl_easy_setopt.3: expand the PROGRESSFUNCTION section - ... and removal of trailing whitespace on a single line - -- [Ant Bryan brought this change] + Explain the callback and its arguments better and with more descriptive + text. - curl man page cleanup +- tests: add test1394 file to the tarball -- [Mike Crowe brought this change] +- tarball: include the xmlstream example - Avoid leak of local device string when reusing connection - - Ensure that the copy of the CURLOPT_INTERFACE string is freed if we - decide we can reuse an existing connection. +- [David Strauss brought this change] -- Curl_socket_check: fix timeout return value for select users + xmlstream: XML stream parsing example source code - This is the same fix applied for the conditional code that uses select() - that was already done for the poll specific code in commit - b61e8b81f5038. + Add an XML stream parsing example using Expat. Add missing ignore for + the binary from an unrelated example. -- [Maxime Larocque brought this change] +- [YAMADA Yasuharu brought this change] - Curl_socket_check: fix return code for timeout - - We found a problem with ftp transfer using libcurl (7.23 and 7.25) - inside an application which is receiving unix signals (SIGUSR1, - SIGUSR2...) almost continuously. (Linux 2.4, PowerPC, HAVE_POLL_FINE - defined). + cookies: only consider full path matches - Curl_socket_check() uses poll() to wait for the socket, and retries it - when a signal is received (EINTR). However, if a signal is received and - it also happens that the timeout has been reached, Curl_socket_check() - returns -1 instead of 0 (indicating an error instead of a timeout). + I found a bug which cURL sends cookies to the path not to aim at. + For example: + - cURL sends a request to http://example.fake/hoge/ + - server returns cookie which with path=/hoge; + the point is there is NOT the '/' end of path string. + - cURL sends a request to http://example.fake/hogege/ with the cookie. - In our case, the result is an aborted connection even before the ftp - banner is received from the server, and a return value of - CURLE_OUT_OF_MEMORY from curl_easy_perform() (Curl_pp_multi_statemach(), - in pingpong.c, actually returns OOM if Curl_socket_check() fails :-) - Funny to debug on a system on which OOM is a possible cause). + The reason for this old "feature" is because that behavior is what is + described in the original netscape cookie spec: + http://curl.haxx.se/rfc/cookie_spec.html - Bug: http://curl.haxx.se/mail/lib-2012-07/0122.html + The current cookie spec (RFC6265) clarifies the situation: + http://tools.ietf.org/html/rfc6265#section-5.2.4 -- RELEASE-NOTES: synced with b4a558041fdf65c0 +- [Eric Hu brought this change] -- TODO-RELEASE: fixed another bug - - bug #3544688 "crash during retry with libcurl and SFTP" + axtls: prevent memleaks on SSL handshake failures -- WSAPoll: disabled on all windows builds +- Revert "WIN32 MemoryTracking: track wcsdup() _wcsdup() and _tcsdup() usage" - Due to WSAPoll bugs, libcurl does not work as intended. When the cURL - library is used to setup a connection to an incorrect port, normally the - result is CURLE_COULDNT_CONNECT, /* 7 */, but due to the bug in WSAPoll, - the result now is CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was - reached */. + This reverts commit 8ec2cb5544b86306b702484ea785b6b9596562ab. - On August 1, Jan Koen Annot opened a case for this to Microsoft Premier - Online (https://premier.microsoft.com/). The support engineer handling - the case wrote that the case description is quite clear. He will try to - reproduce the issue and then proceed with troubleshooting it. + We don't have any code anywhere in libcurl (or the curl tool) that use + wcsdup so there's no such memory use to track. It seems to cause mild + problems with the Borland compiler though that we may avoid by reverting + this change again. - Reported by: Jan Koen Annot - Bug: http://curl.haxx.se/mail/lib-2012-07/0310.html + Bug: http://curl.haxx.se/mail/lib-2013-05/0070.html -- retry request: only access the HTTP data if in fact HTTP - - When figuring out if the data stream needs to be rewound when the - request is to be resent, we must not access the HTTP struct unless the - protocol used is indeed HTTP... - - Bug: http://curl.haxx.se/bug/view.cgi?id=3544688 +- RELEASE-NOTES: synced with ae26ee3489588f0 -- TODO: support DANE, we already support gnutls without gcrypt +Guenter Knauf (11 May 2013) +- Updated zlib version in build files. -- curl-config: parentheses fix - - Braces, not parentheses, should be used for shell variable names. - - Bug: http://curl.haxx.se/bug/view.cgi?id=3551460 - Reported by: Edward Sheldrake +Daniel Stenberg (9 May 2013) +- [Renaud Guillard brought this change] -- VC build: add define for openssl - - This fixes a build failure of lib/ssluse.c. - - Bug: http://curl.haxx.se/bug/view.cgi?id=3552997 + OS X framework: fix invalid symbolic link -- TODO-RELEASE: two bugs fixed! +Kamil Dudka (9 May 2013) +- [Daniel Stenberg brought this change] -- globbing: fix segfault when >9 globs were used + nss: give PR_INTERVAL_NO_WAIT instead of -1 to PR_Recv/PR_Send - Stupid lack of range checks caused the code to overwrite local variables - after glob number nine. Added checks now. - - Bug: http://curl.haxx.se/bug/view.cgi?id=3546353 + Reported by: David Strauss + Bug: http://curl.haxx.se/mail/lib-2013-05/0088.html -- [Joe Mason brought this change] +Daniel Stenberg (8 May 2013) +- libtest: gitignore more binary files - sws: close sockets properly - - Fix a bug where closed sockets (fd -1) were left in the all_sockets - list, because of missing parens in a pointer arithmetic expression +- servercert: allow empty subject - Reenable the tests that were locking up due to this bug. - -- [Joe Mason brought this change] + Bug: http://curl.haxx.se/bug/view.cgi?id=1220 + Patch by: John Gardiner Myers - Remove debug logs that were accidentally checked in +- [Steve Holme brought this change] -- [Joe Mason brought this change] + tests: Added new SMTP tests to verify commit 99b40451836d - Use select in sws, which has better cross-platform support than poll +- runtests.pl: support nonewline="yes" in client/stdin sections -- [Joe Mason brought this change] +- build: fixed unit1394 for debug and metlink builds - Use cross-platform curlx_nonblock instead of fcntl in sws +Kamil Dudka (6 May 2013) +- unit1394.c: plug the curl tool unit test in -- operate: fix clang-analyzer warnings for never read variables - - Two separate "Value stored to 'XXX' is never read" warnings +- [Jared Jennings brought this change] -- operate: fix clang-analyzer warning - - Value stored to 'separator' is never read + unit1394.c: basis of a unit test for parse_cert_parameter() -- metalink: change code order to build with gnutls-nettle - - Bug: http://curl.haxx.se/bug/view.cgi?id=3554668 - Reported by: Anthony G. Basile +- src/Makefile.am: build static lib for unit tests if enabled -- gtls: fix build failure by including nettle-specific headers - - Bug: http://curl.haxx.se/bug/view.cgi?id=3554668 - Reported by: Anthony G. Basile +- tool_getparam: ensure string termination in parse_cert_parameter() -Guenter Knauf (6 Aug 2012) -- Fixed compiler warning - argument is type long. +- tool_getparam: fix memleak in handling the -E option -Daniel Stenberg (6 Aug 2012) -- DISABLED: disable the new tests that do NTLM +- tool_getparam: describe what parse_cert_parameter() does - The tests 2025, 2028 and 2031 don't work for me so I'll have them - disabled for now until we solve the problem. + ... and de-duplicate the code initializing *passphrase -Joe Mason (3 Aug 2012) -- Add tests of auth retries +- curl.1: document escape sequences recognized by -E -- Cleanup handshake after clean NTLM failure +- [Jared Jennings brought this change] -- Zero out auth structs before transfer + curl -E: allow to escape ':' in cert nickname -- Add a polling loop in main to read from more than one socket at once. Add the O_NONBLOCK and - SO_KEEPALIVE flag to all sockets. Note that several loops which used to continue on a return value - of 0 (theoretical since 0 would never be returned without O_NONBLOCK) now break on 0 so that they - won't continue reading until after poll is called again. +Marc Hoersken (5 May 2013) +- curl_schannel.c: Fixed invalid memory access during SSL shutdown -- Change return values of get_request, accept_connection and service_connection to add a return code - for non-blocking sockets: now -1 means error or connection finished, 1 means data was read, and 0 - means there is no data available now so need to wait for poll (new return value) +Steve Holme (4 May 2013) +- smtp: Fix trailing whitespace warning -- Hoist the loop out of get_request, and make sure that it can be reentered when a request is - half-finished. - - Note the the req struct used to be re-initialized AFTER reading pipeline data, so now that we - initialize it from the caller we must be careful not to overwrite the pipeline data. - - Also we now need to handle the case where the buffer is already full when get_request is called - - previously this never happened as it was always called with an empty buffer and looped until done. +- smtp: Fix compilation warning - Now get_request is called in a loop, so the next step is to run the loop on a socket only when poll - signals it is readable. + comparison between signed and unsigned integer expressions -- Move blocks of code from the sws main loop into their own functions for easier refactoring later. - The next step will be to call the correct function after a poll, rather than looping unconditionally +- RELEASE-NOTES: synced with 92ef5f19c801 -- Remove the --fork option of sws, since it makes refactoring to use poll more complicated and should - be redundant once we poll +- smtp: Updated RFC-2821 references to RFC-5321 -Kamil Dudka (30 Jul 2012) -- file: use fdopen() for uploaded files if available +- smtp: Fixed sending of double CRLF caused by first in EOB - It eliminates noisy events when using inotify and fixes a TOCTOU issue. + If the mail sent during the transfer contains a terminating <CRLF> then + we should not send the first <CRLF> of the EOB as specified in RFC-5321. - Bug: https://bugzilla.redhat.com/844385 + Additionally don't send the <CRLF> if there is "no mail data" as the + DATA command already includes it. -Guenter Knauf (29 Jul 2012) -- Added DWANT_IDN_PROTOTYPES define for MSVC too. +- tests: Corrected MAIL SIZE for CRLF line endings - Discussion on the list: http://curl.haxx.se/mail/lib-2012-07/0271.html + ... which was missed in commit: f5c3d9538452 -- Added Win32 problems. - -- Added hint to read docs/INSTALL too. - -- Added new file to distro. - -Steve Holme (28 Jul 2012) -- TODO: Updated after 7.27.0 release - - Removed APOP and SASL authentication from the POP3 section and metalink - support from the client section as these features were implemented in - this release. +- tests: Corrected infilesize for CRLF line endings - Moved adding gssapi to SASL into it's own section rather than repeat it - for each protocol. + ... which was missed in commit: f5c3d9538452 -Daniel Stenberg (28 Jul 2012) -- TODO-RELEASE: updated after 7.27.0 release +- tests: Corrected test1406 to be RFC2821 compliant -- THANKS: 12 new contributors from the 7.27.0 release +- tests: Corrected test1320 to be RFC2821 compliant -- version bump: start towards next release +- tests: Corrected typo in test909 - Let's call it 7.27.1 for now, but it it probably going to become 7.28.0 - when released. + Introduced in commit: 514817669e9e -Version 7.27.0 (27 Jul 2012) +- tests: Corrected test909 to be RFC2821 compliant -Guenter Knauf (27 Jul 2012) -- Fixed compiler warning 'unused parameter'. - -- Added prototypes to kill compiler warning. - -- Added --with-winidn to configure. +- tests: Updated test references to 909 from 1411 - This needs another look from the configure experts. I tested that - it works so far with MinGW64 cross-compiler; libcurl builds and - links fine, but curl not yet ... + ...and removed references to libcurl and test1406. -Daniel Stenberg (27 Jul 2012) -- [Ant Bryan brought this change] +- tests: Renamed test1411 to test909 as this is a main SMTP test - Update man page info on --metalink and typo. +Daniel Stenberg (1 May 2013) +- [Lars Johannesen brought this change] -- RELEASE-NOTES: remove mentioned of bug never in a release + bindlocal: move brace out of #ifdef - The --silent bug came with 7561a0fc834c435 which was never in a release. - Pointed out by Kamil Dudka - -- RELEASE-NOTES: synced with 33b815e894fb + The code within #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID wrongly had two + closing braces when it should only have one, so builds without that + define would fail. - 4 more bugfixes, 3 more contributors + Bug: http://curl.haxx.se/mail/lib-2013-05/0000.html -Guenter Knauf (26 Jul 2012) -- Changed Windows IDN text to 'WinIDN'. +Steve Holme (30 Apr 2013) +- smtp: Tidy up to move the eob counter to the per-request structure - Synced the output to the same short form as we now use for - Windows SSL (WinSSL). + Move the eob counter from the smtp_conn structure to the SMTP structure + as it is associated with a SMTP payload on a per-request basis. -Daniel Stenberg (25 Jul 2012) -- [Nick Zitzmann brought this change] +- TODO: Updated following the addition of CURLOPT_SASL_IR - darwinssl: fixed freeze involving the multi interface +- smtp: Fixed unknown percentage complete in progress bar - Previously the curl_multi interface would freeze if darwinssl was - enabled and at least one of the handles tried to connect to a Web site - using HTTPS. Removed the "wouldblock" state darwinssl was using because - I figured out a solution for our "would block but in which direction?" - dilemma. + The curl command line utility would display the the completed progress + bar with a percentage of zero as the progress routines didn't know the + size of the transfer. -Guenter Knauf (25 Jul 2012) -- Added support for tls-srp to MinGW builds. - -Daniel Stenberg (24 Jul 2012) -- curl_easy_setopt: fix typo +Daniel Stenberg (29 Apr 2013) +- ftpserver: silence warnings - Reported by: Santhana Todatry + Fix regressions in commit b56e3d43e5d. Make @data local and filter off + non-numerical digits from $testno in STATUS_imap. -- keepalive: multiply value for OS-specific units - - DragonFly uses milliseconds, while our API and Linux use full seconds. +Steve Holme (29 Apr 2013) +- ftpserver.pl: Corrected the imap LOGIN response - Reported by: John Marino - Bug: http://curl.haxx.se/bug/view.cgi?id=3546257 + ...to be more realistic and consistent with the other imap responses. -Kamil Dudka (22 Jul 2012) -- http: print reason phrase from HTTP status line on error - - Bug: https://bugzilla.redhat.com/676596 +- tests: Added imap STATUS command test -- tool_operate: fix misplaced initialization of orig_noprogress +- tests: Corrected the SMTP tests to be RFC2821 compliant - ... and orig_isatty which caused --silent to be entirely ignored in case - the standard output was redirected to a file! - -Daniel Stenberg (21 Jul 2012) -- [Anton Yabchinskiy brought this change] + The emails that are sent to the server during these tests were + incorrectly formatted as they contained one or more LF terminated lines + rather than being CRLF terminated as per Section 2.3.7 of RFC-2821. + + This wasn't a problem for the test suite as the <stdin> data matched the + <upload> data but anyone using these tests as reference would be sending + incorrect data to a server. - Client's "qop" value should not be quoted (RFC2617, section 3.2.2). +- email: Tidy up of *_perform_authenticate() + + Removed the hard returns from imap and pop3 by using the same style for + sending the authentication string as smtp. Moved the "Other mechanisms + not supported" check in smtp to match that of imap and pop3 to provide + consistency between the three email protocols. -Guenter Knauf (21 Jul 2012) -- Fixed typo. +- smtp: Updated limit check to be more readable like the check in pop3 -Daniel Stenberg (20 Jul 2012) -- make: make distclean work again +- pop3: Added 255 octet limit check when sending initial response - The clean-local hook needed some polish to make sure make distclean - works. Added comment describing why. - -- test Makefile: only feature 'unit' once in the list of dirs + Added 255 octet limit check as per Section 4. Paragraph 8 of RFC-5034. -Dan Fandrich (20 Jul 2012) -- Fixed some typos in documentation +- DOCS: Corrected line length of recent Secure Transport changes -Guenter Knauf (20 Jul 2012) -- Fixed CR issue with Win32 version on MSYS. +Nick Zitzmann (27 Apr 2013) +- darwinssl: add TLS crypto authentication - Previous fix didnt work on Linux ... + Users using the Secure Transport (darwinssl) back-end can now use a + certificate and private key to authenticate with a site using TLS. Because + Apple's security system is based around the keychain and does not have any + non-public function to create a SecIdentityRef data structure from data + loaded outside of the Keychain, the certificate and private key have to be + loaded into the Keychain first (using the certtool command line tool or + the Security framework's C API) before we can find it and use it. -- Fixed CR issue with Win32 version on MSYS. +Steve Holme (27 Apr 2013) +- Corrected version numbers after bump -- Fixed MSYS <-> Windows path convertion. +Daniel Stenberg (27 Apr 2013) +- bump version - Replaced the Windows real path from mount hack with a more - reliable and simpler hack: the MSYS shell has a builtin pwd - which understands a -W option which does convertion to Windows - paths. Tested and confirmed that this works on all MSYS versions - I have back to a 3 year old one. + Since we're adding new stuff, the next release will bump the minor + version and we're looking forward to 7.31.0 -- Follow-up fix to detect SSL libs with MinGW. +Steve Holme (27 Apr 2013) +- RELEASE-NOTES: synced with f4e6e201b146 + +- DOCS: Updated following the addition of CURLOPT_SASL_IR - 1) the check for winssl needs to come before nss check - 2) the SSL checks must begin with a new if or else we will - never find any SSL lib with MinGW. + Documented the the option in curl_easy_setopt() and added it to + symbols-in-versions. -- Tell git to not convert configure-related files. +- tests: Corrected command line arguments in test907 and test908 -- Trial to teach runtests.pl about WinSSL. +- tests: Added SMTP AUTH with initial response tests -- Fixed warning 'uninitialized value in numeric gt'. +- tests: Updated SMTP tests to decouple client initial response - This is a MSYS/MinGW-only warning; full warning text is: - Use of uninitialized value in numeric gt (>) at ../../curl/tests/runtests.pl line 2227. + Updated test903 and test904 following the addition of CURLOPT_SASL_IR + as the default behaviour of SMTP AUTH responses is now to not include + the initial response. New tests with --sasl-ir support to follow. -Daniel Stenberg (15 Jul 2012) -- RELEASE-NOTES: synced with 9d11716933616 +- imap: Added support for overriding the SASL initial response - Fixed 6 bugs, added 3 contributors + In addition to checking for the SASL-IR capability the user can override + the sending of the client's initial response in the AUTHENTICATION + command with the use of CURLOPT_SASL_IR should the server erroneously + not report SASL-IR when it does support it. -- multi_runsingle: added precaution against easy_conn NULL pointer +- smtp: Added support for disabling the SASL initial response + + Updated the default behaviour of sending the client's initial response in the AUTH + command to not send it and added support for CURLOPT_SASL_IR to allow the user to + specify including the response. - In many states the easy_conn pointer is referenced and just assumed to - be working. This is an added extra check since analyzing indicates - there's a risk we can end up in these states with a NULL pointer there. + Related Bug: http://curl.haxx.se/mail/lib-2012-03/0114.html + Reported-by: Gokhan Sengun -- getparam: fix the GetStr() macro +- pop3: Added support for enabling the SASL initial response - It should return PARAM_NO_MEM if the strdup fails. Spotted by - clang-analyzer + Allowed the user to specify whether to send the client's intial response + in the AUTH command via CURLOPT_SASL_IR. -Guenter Knauf (15 Jul 2012) -- Tell git to not convert configure-related files. +- sasl-ir: Added --sasl-ir option to curl command line tool -Daniel Stenberg (13 Jul 2012) -- parse_proxy: remove dead assignment - - Spotted by clang-analyzer +- sasl-ir: Added CURLOPT_SASL_IR to enable/disable the SASL initial response -- ftp_do_more: add missing check of return code +Daniel Stenberg (26 Apr 2013) +- curl_easy_init: use less mallocs - Spotted by clang-analyzer. The return code was never checked, just - stored. - -- getinfo: use va_end and cut off Curl_ from static funcs + By introducing an internal alternative to curl_multi_init() that accepts + parameters to set the hash sizes, easy handles will now use tiny socket + and connection hash tables since it will only ever add a single easy + handle to that multi handle. - va_end() needs to be used after va_start() and we don't normally use - Curl_ prefixes for purely static functions. + This decreased the number mallocs in test 40 (which is a rather simple + and typical easy interface use case) from 1142 to 138. The maximum + amount of memory allocated used went down from 118969 to 78805. -- [Philip Craig brought this change] - - Split up Curl_getinfo +Steve Holme (26 Apr 2013) +- ftpserver.pl: Fixed imap logout confirmation data - This avoids false positives from clang's scan-build. - -Guenter Knauf (12 Jul 2012) -- Added error checking for curl_global_init(). - -- Added curl_global_* functions. + An IMAP server should response with the BYE continuation response before + confirming the LOGOUT command was successful. -- Minor fixes to MinGW makefiles. - -Daniel Stenberg (12 Jul 2012) -- docs: mention CURL_GLOBAL_DEFAULT - -Guenter Knauf (12 Jul 2012) -- Added curl_global_* functions. - -Daniel Stenberg (12 Jul 2012) -- tests: verify the stricter numeric option parser +Daniel Stenberg (26 Apr 2013) +- ftp_state_pasv_resp: connect through proxy also when set by env - Test 1409 and 1410 verifies the stricter numeric option parser - introduced the other day in commit f2b6ebed7b. - -- SWS: use of uninitialized memory fix + When connecting back to an FTP server after having sent PASV/EPSV, + libcurl sometimes didn't use the proxy properly even though the proxy + was used for the initial connect. - I made "connmon" not get initialized properly before use, and I use the - big hammer and make sure we always clear the entire struct to avoid any - problem like this in the future. - -- test48: verify that HEAD doesn't close extra + The function wrongly checked for the CURLOPT_PROXY variable to be set, + which made it act wrongly if the proxy information was set with an + environment variable. - Two commits ago, we fixed a bug where the connction would be closed - prematurely after a HEAD. Now I added connection-monitor to test 48 and - added a second HEAD and make sure that both are sent over the same - connection. + Added test case 711 to verify (based on 707 which uses --socks5). Also + added test712 to verify another variation of setting the proxy: with + --proxy socks5:// - This triggered a failure before the bug fix and now works. Will help us - avoid a future regression of this kind. + Bug: http://curl.haxx.se/bug/view.cgi?id=1218 + Reported-by: Zekun Ni -- connection-monitor: always log disconnect when enabled - - This makes verifying easier and makes us more sure curl closes the - connection only at the correct point in time. Adjusted test 206 and 1008 - accordingly and updated the docs for it. +Kamil Dudka (26 Apr 2013) +- [Zdenek Pavlas brought this change] -- HEAD: don't force-close after response-headers + url: initialize speed-check data for file:// protocol - A HEAD response has no body length and gets the headers like the - corresponding GET would so it should not get closed after the response - based on the same rules. This mistake caused connections that did HEAD - to get closed too often without a valid reason. + ... in order to prevent an artificial timeout event based on stale + speed-check data from a previous network transfer. This commit fixes + a regression caused by 9dd85bced56f6951107f69e581c872c1e7e3e58e. - Bug: http://curl.haxx.se/bug/view.cgi?id=3542731 - Reported by: Eelco Dolstra + Bug: https://bugzilla.redhat.com/906031 -Guenter Knauf (12 Jul 2012) -- Removed trailing empty strings from awk script. +Daniel Stenberg (25 Apr 2013) +- test709: clarify the test in the name -- Cleaned up version awk script. - -- Added project copyright header. +- sshserver: disable StrictHostKeyChecking + + I couldn't figure out why the host key logic isn't working, but having + it set to yes prevents my SSH-based test cases to run. I also don't see + a strong need to use strict host key checking on this test server. + + So I disabled it. -- Removed libcurl.imp from Makefile.am. +- runtests: log more commands in verbose mode - Updated .gitignore for NetWare created files. + ... to aid tracking down failures -- Added missing dependency to export list. +Steve Holme (25 Apr 2013) +- TODO: Corrected copy/paste typo -- Fixed export list path. +- TODO: Added new ideas for future SMTP, POP3 and IMAP features -- Changed NetWare build to generate export list. +- TODO: Updated following the addition of ;auth=<MECH> support -- Added pointer to FAQ for linkage errors. +- DOCS: Minor rewording / clarification of host name protocol detection -- Small NetWare makefile tweak. +- RELEASE-NOTES: synced with a8c92cb60890 -- Changed MinGW makefiles to use WINSSL now. +- DOCS: Added reference to IETF draft for SMTP URL Interface + + ...when mentioning login options. Additional minor clarification of + "Windows builds" to be "Windows builds with SSPI"as a way of enabling + NTLM as Windows builds may be built with OpenSSL to enable NTLM or + without NTLM support altogether. -Daniel Stenberg (10 Jul 2012) -- test231: fix wrong -C use! +Linus Nielsen Feltzing (23 Apr 2013) +- HISTORY: Fix spelling error. -- cmdline: parse numerical options stricter - - 1 - str2offset() no longer accepts negative numbers since offsets are by - nature positive. +Steve Holme (23 Apr 2013) +- DOCS: Reworked the scheme calculation explanation under CURLOPT_URL + +- url: Added smtp and pop3 hostnames to the protocol detection list + +Daniel Stenberg (23 Apr 2013) +- HISTORY: correct some years/dates - 2 - introduced str2unum() for the command line parser that accepts - numericals which are not supposed to be negative, so that it will - properly complain on apparent bad uses and mistakes. + Thanks to archive.org's wayback machine I updated this document with + some facts from the early httpget/urlget web page: - Bug: http://curl.haxx.se/mail/archive-2012-07/0013.html + http://web.archive.org/web/19980216125115/http://www.inf.ufrgs.br/~sagula/urlget.html -- docs: switch to proper UTF-8 for text file encoding +- [Alessandro Ghedini brought this change] -Yang Tse (9 Jul 2012) -- Make Curl_schannel_version() return "WinSSL" - - Modification based on voting result: + tests: add test1511 to check timecond clean-up - http://curl.haxx.se/mail/lib-2012-07/0104.html + Verifies the timecond fix in commit c49ed0b6c0f + +- [Alessandro Ghedini brought this change] -Daniel Stenberg (9 Jul 2012) -- test 46: use different path lengths to get reliable sort order + getinfo.c: reset timecond when clearing session-info variables - Since the order of the cookies is sorted by the length of the paths, - having them on the same path length will make the test depend on what - order the qsort() implementation will put them. As seen in the - windows/msys output posted by Guenter in this posting: - http://curl.haxx.se/mail/lib-2012-07/0105.html + Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=705783 + Reported-by: Ludovico Cavedon <cavedon@debian.org> -- cookie: fixed typo in comment +Steve Holme (22 Apr 2013) +- DOCS: Added information about login options to CURLOPT_USERPWD -- [Christian Hägele brought this change] +- DOCS: Added information about login options in the URL - https_getsock: provided for schannel backend as well +- url: Fixed missing length check in parse_proxy() - The function https_getsock was only implemented properly when USE_SSLEAY - or USE_GNUTLS is defined, but it is also necessary for USE_SCHANNEL. + Commit 11332577b3cb removed the length check that was performed by the + old scanf() code. + +- url: Fixed crash when no username or password supplied for proxy - The problem occurs when Curl_read_plain or Curl_write_plain returns - CURLE_AGAIN. In that case CURL_OK is returned to the multi-interface an - the used socket is set to state CURL_POLL_REMOVE and the easy-state is - set to CURLM_STATE_PROTOCONNECT. This is fine, because later the socket - should be set to CURL_POLL_IN or CURL_POLL_OUT via multi_getsock. That's - where https_getsock is called and doesn't return any sockets. + Fixed an issue in parse_proxy(), introduced in commit 11332577b3cb, + where an empty username or password (For example: http://:@example.com) + would cause a crash. -- RELEASE-NOTES: added a URL reference to cookie docs +- url: Removed unused text length constants -Guenter Knauf (8 Jul 2012) -- Removed obsolete include path to project root. +- url: Updated proxy URL parsing to use parse_login_details() -Daniel Stenberg (8 Jul 2012) -- TODO-RELEASE: issue 316 NTLM over proxy is fixed +- url: Tidy up of setstropt_userpwd() parameters + + Updated the naming convention of the login parameters to match those of + other functions. -- [Nick Zitzmann brought this change] +- url: Tidy up of code and comments following recent changes + + Tidy up of variable names and comments in setstropt_userpwd() and + parse_login_details(). - darwinssl: don't use arc4random_buf +- url: Simplified setstropt_userpwd() following recent changes - Re-wrote Curl_darwinssl_random() to not use arc4random_buf() because the - function is not available prior to iOS 4.3 and OS X 10.7. + There is no need to perform separate clearing of data if a NULL option + pointer is passed in. Instead this operation can be performed by simply + not calling parse_login_details() and letting the rest of the code do + the work. -- KNOWN_BUGS: #80 Curl doesn't recognize certs in DER format +- url: Correction to scope of if statements when setting data -- KNOWN_BUGS: #79 - any RCPT TO failure makes and error +- url: Fixed memory leak in setstropt_userpwd() + + setstropt_userpwd() was calling setstropt() in commit fddb7b44a79d to + set each of the login details which would duplicate the strings and + subsequently cause a memory leak. -Marc Hoersken (8 Jul 2012) -- winbuild: Aligned BUILD.WINDOWS.txt and Makefile.vc usage help +- RELEASE-NOTES: synced with d535c4a2e1f7 -- winbuild: Make USE_WINSSL depend on USE_SSPI +- url: Added overriding of URL login options from CURLOPT_USERPWD + +- tool_paramhlp: Fixed options being included in username - Since WinSSL cannot be build without SSPI being enabled, - USE_WINSSL now defaults to the value of USE_SSPI. + Fix to prevent the options from being displayed when curl requests the + user's password if the following command line is specified: - The makefile does now raise an error if WinSSL is enabled - while SSPI is disabled. + --user username;options -- winbuild: Aligned USE_SSPI with other USE_x defines +- url: Added support for parsing login options from the CURLOPT_USERPWD - Renamed external parameter USE_SSPI = yes/no to ENABLE_SSPI = yes/no. - Backwards compatible change: USE_SSPI can still be passed as external - parameter with yes/no value as long as ENABLE_SSPI is not given. + In addition to parsing the optional login options from the URL, added + support for parsing them from CURLOPT_USERPWD, to allow the following + supported command line: - USE_x defines are passed around with true/false values internally, - USE_SSPI is now aligned to this approach, but still accepts external - values yes/no being passed, just like the other defines. + --user username:password;options -- winbuild: Clean up formatting and variable naming +- url: Added bounds checking to parse_login_details() - - Changed space usage to line up with the whole file - - Renamed CFLAGS_SSPI/IPV6 to SSPI/IPV6_CFLAGS to be - consistent with the other CFLAGS_x variables - - Make use of existing CFLAGS_IPV6 (previously IPV6_CFLAGS) - instead of appending directly to CFLAGS + Added bounds checking when searching for the separator characters within + the login string as this string may not be NULL terminated (For example + it is the login part of a URL). We do this in preference to allocating a + new string to copy the login details into which could then be passed to + parse_login_details() for performance reasons. + +- url: Added size_t cast to pointer based length calculations -Daniel Stenberg (7 Jul 2012) -- [Nick Zitzmann brought this change] +- url: Corrected minor typo in comment - darwinssl: output cipher with text, remove SNI warning +Daniel Stenberg (18 Apr 2013) +- CURL_CHECK_CA_BUNDLE: don't check for paths when cross-compiling - The code was printing a warning when SNI was set up successfully. Oops. + When cross-compiling we can't scan and detect existing files or paths. - Printing the cipher number in verbose mode was something only TLS/SSL - programmers might understand, so I had it print the name of the cipher, - just like in the OpenSSL code. That'll be at least a little bit easier - to understand. The SecureTransport API doesn't have a method of getting - a string from a cipher like OpenSSL does, so I had to generate the - strings manually. + Bug: http://curl.haxx.se/mail/lib-2013-04/0294.html -- RELEASE-NOTES: synced with 5a99bce07d +- [Ishan SinghLevett brought this change] -- KNOWN_BUGS: NTLM with unicode works with schannel/winssl! + usercertinmem.c: add example showing user cert in memory - Bug #75 updated with additional info, still remains for builds with - other backends. + Relies on CURLOPT_SSL_CTX_FUNCTION, which is OpenSSL specific -- code police: narrow source to < 80 columns +Steve Holme (18 Apr 2013) +- url: Fix chksrc longer than 79 columns warning -Yang Tse (5 Jul 2012) -- unicode NTLM SSPI: cleanup follow-up +- url: Fix incorrect variable type for result code -- unicode NTLM SSPI: cleanup +- url: Fix compiler warning - Reduce the number of #ifdef UNICODE directives used in source files. + signed and unsigned type in conditional expression -Daniel Stenberg (5 Jul 2012) -- tests: use connection-monitor and verify results +- url: Moved parsing of login details out of parse_url_login() - Test 1008 and 206 don't show the disconnect since it happens when SWS - awaits a new request, but 503 does and so the verify section needs that - string added. + Separated the parsing of login details from the processing of them in + parse_url_login() ready for use by setstropt_userpwd(). -- http-proxy: keep CONNECT connections alive (for NTLM) - - When doing CONNECT requests, libcurl must make sure the connection is - alive as much as possible. NTLM requires it and it is generally good for - other cases as well. - - NTLM over CONNECT requests has been broken since this regression I - introduced in my CONNECT cleanup commits that started with 41b02378342, - included since 7.25.0. +- url: Re-factored set_userpass() and parse_url_userpass() - Bug: http://curl.haxx.se/bug/view.cgi?id=3538625 - Reported by: Marcel Raad + Re-factored these functions to reflect their new behaviour following the + addition of login options. -- sws: support <servercmd> for CONNECT requests - - I moved out the servercmd parsing into a its own function called - parse_servercmd() and made sure it gets used also when the test number - is extracted from CONNECT requests. It turned out sws didn't do that - previously! +- url: Reworked URL parsing to allow overriding by CURLOPT_USERPWD -- FILEFORMAT: provided a full description of connection-monitor +Daniel Stenberg (18 Apr 2013) +- maketgz: make bzip2 creation work with Parallel BZIP2 too + + Apparently the previous usage didn't work with that implementation, + while this updated version works with at least both Parallel BZIP2 + v1.1.8 and regular bzip "Version 1.0.6, 6-Sept-2010". -- lib503: enable verbose to ease debugging this +Linus Nielsen Feltzing (18 Apr 2013) +- Add tests/http_pipe.py to the tarball build -- sws: add 'connection-monitor' command support - - Using this, the server will output in the protocol log when the - connection gets disconnected and thus we will verify correctly in the - test cases that the connection doesn't get closed prematurely. This is - important for example NTLM to work. +Steve Holme (16 Apr 2013) +- smtp: Re-factored all perform based functions - Documentation added to FILEFORMAT, test 503 updated to use this. + Standardised the naming of all perform based functions to be in the form + smtp_perform_something(). -Guenter Knauf (4 Jul 2012) -- Removed non-used variable. +- smtp: Added description comments to all perform based functions -- Added error checking for samples. +- smtp: Moved smtp_quit() to be with the other perform functions -- Renamed vars to avoid shadow global declaration. +- smtp: Moved smtp_rcpt_to() to be with the other perform functions -Daniel Stenberg (3 Jul 2012) -- docs: clarify how to start with curl_multi_socket_action - - Mention the CURL_SOCKET_TIMEOUT argument in step 6 of the typical - application. +- smtp: Moved smtp_mail() to be with the other perform functions -Guenter Knauf (3 Jul 2012) -- Moved some patterns to subfolder's .gitignore. +Daniel Stenberg (16 Apr 2013) +- [Wouter Van Rooy brought this change] -- Merge branch 'master' of ssh://github.com/bagder/curl + curl-config: don't output static libs when they are disabled + + Curl-config outputs static libraries even when they are disabled in + configure. + + This causes problems with the build of pycurl. -- MinGW makefile tweaks for running from sh. +- [Dave Reisner brought this change] + + docs/libcurl: fix formatting in manpage - Added function macros to make path converting easier. - Added CROSSPREFIX to all compile tools. + Commit c3ea3eb6 introduced some minor cosmetic errors in + curl_mutli_socket_action(3). -Yang Tse (3 Jul 2012) -- [Marc Hoersken brought this change] +- [Paul Howarth brought this change] - curl_ntlm_msgs.c: Removed unused variable passwd + Add extra libs for lib1900 and lib2033 test programs + + These are needed in cases where clock_gettime is used, from librt. -Guenter Knauf (3 Jul 2012) -- Added files generated by mingw32, eclipse and VC. +Dan Fandrich (15 Apr 2013) +- FAQ: mention that the network connection can be monitored - Posted by Marc Hoersken. + Also note the prohibition on sharing handles across threads. -Daniel Stenberg (3 Jul 2012) -- cookies: change the URL in the cookie jar file header +Steve Holme (15 Apr 2013) +- pop3: Added missing comment for pop3_state_apop_resp() -- HTTP-COOKIES: clarified and modified layout +- smtp: Updated the coding style of smtp_state_servergreet_resp() + + Updated the coding style, in this function, to be consistant with other + response functions rather then performing a hard return on failure. -- HTTP-COOKIES: use the FAQ document layout +- pop3: Updated the coding style of pop3_state_servergreet_resp() + + Updated the coding style, in this function, to be consistent with other + response functions rather then performing a hard return on failure. -- HTTP-COOKIES: added cookie documentation +- pop3: Re-factored all perform based functions + + Standardised the naming of all perform based functions to be in the form + pop3_perform_something() following the changes made to IMAP. -Yang Tse (3 Jul 2012) -- curl_ntlm_msgs.c: include <tchar.h> for prototypes +- pop3: Added description comments to all perform based functions -- [Neil Bowers brought this change] +- pop3: Moved pop3_quit() to be with the other perform functions - testcurl.pl: fix missing semicolon +- pop3: Moved pop3_command() to be with the other perform functions + + Started to apply the same tidy up to the POP3 code as applied to the + IMAP code in the 7.30.0 release. -Daniel Stenberg (2 Jul 2012) -- [Christian Hägele brought this change] +- RELEASE-NOTES: Removed erroneous spaces - unicode NTLM SSPI: heap corruption fixed - - When compiling libcurl with UNICODE defined and using unicode characters - in username. +- RELEASE-NOTES: synced with 8723cade21fb -Yang Tse (2 Jul 2012) -- testcurl.pl: allow non in-tree c-ares enabled autobuild +- smtp: Added support for ;auth=<mech> in the URL + + Added support for specifying the preferred authentication mechanism in + the URL as per Internet-Draft 'draft-earhart-url-smtp-00'. -- configure.ac: verify that libmetalink is new enough +- pop3: Reworked authentication type constants - Enabling test2017 to test2022. + ... to use left-shifted values, like those defined in curl.h, rather + than 16-bit hexadecimal values. -- [Tatsuhiro Tsujikawa brought this change] +- pop3: Small consistency tidy up - curl: Added runtime version check for libmetalink +- pop3: Added support for ;auth=<mech> in the URL + + Added support for specifying the preferred authentication type and SASL + mechanism in the URL as per RFC-2384. -- [Tatsuhiro Tsujikawa brought this change] +- imap: Added support for ;auth=<mech> in the URL + + Added support for specifying the preferred authentication mechanism in + the URL as per RFC-5092. - Include metalink/metalink.h for libmetalink functions +- sasl: Reworked SASL mechanism constants + + ... to use left-shifted values, like those defined in curl.h, rather + than 16-bit hexadecimal values. -Daniel Stenberg (2 Jul 2012) -- errors: CURLM_CALL_MULTI_PERFORM is not returned anymore +- sasl: Added predefined preferred mechanism values + + In preparation for the upcoming changes to IMAP, POP3 and SMTP added + preferred mechanism values. -- release: cleaned up plans for this and coming release +- url: Added support for parsing login options from the URL + + As well as parsing the username and password from the URL, added support + for parsing the optional options part from the login details, to allow + the following supported URL format: + + schema://username:password;options@example.com/path?q=foobar + + This will only be used by IMAP, POP3 and SMTP at present but any + protocol that may be given login options in the URL will be able to + add support for them. -Yang Tse (29 Jun 2012) -- curl-compilers.m4: remove -Wstrict-aliasing=3 from clang +- smtp: Fix compiler warning - Currently it is unknown if there is any version of clang that - actually supports -Wstrict-aliasing. What is known is that there - are several that don't support it. + warning: unused variable 'smtp' introduced in commit 73cbd21b5ee6. + +- smtp: Moved parsing of url path into separate function -- test2017 to test2022: more metalink tests +Daniel Stenberg (12 Apr 2013) +- FTP: handle a 230 welcome response - With this commit, checks done in previous test2017 are now done in test2018. + ...instead of the 220 we otherwise expect. - Whole range test2017 to test2022 DISABLED until configure is capable of - requiring a new-enough metalink library. + Made the ftpserver.pl support sending a custom "welcome" and then + created test 1219 to verify this fix with such a 230 welcome. - Don't try these without mentioned check in place! + Bug: http://curl.haxx.se/mail/lib-2013-02/0102.html + Reported by: Anders Havn -- test2005 to test2016: improve failure detection - -- lib582.c: fix conversion warning +- configure: try pthread_create without -lpthread + + For libc variants without a spearate pthread lib (like bionic), try + using pthreads without the pthreads lib first and only if that fails try + the -lpthread linker flag. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1216 + Reported by: Duncan -- nss.c: #include warnless.h for curlx_uztosi and curlx_uztoui prototypes +- FTP: access files in root dir correctly + + Accessing a file with an absolute path in the root dir but with no + directory specified was not handled correctly. This fix comes with four + new test cases that verify it. + + Bug: http://curl.haxx.se/mail/lib-2013-04/0142.html + Reported by: Sam Deane -- [Marc Hoersken brought this change] +Steve Holme (12 Apr 2013) +- pop3: Reworked the function description for Curl_pop3_write() - nss.c: Fixed size_t conversion warnings +- pop3: Added function description to pop3_parse_custom_request() -- sslgen.c: cleanup temporary compile-time SSL-backend check +- pop3: Moved utility functions to end of pop3.c -Daniel Stenberg (28 Jun 2012) -- schannel: provide two additional (dummy) API defines +Nick Zitzmann (12 Apr 2013) +- darwinssl: add TLS session resumption + + This ought to speed up additional TLS handshakes, at least in theory. -Yang Tse (28 Jun 2012) -- [Tatsuhiro Tsujikawa brought this change] +Steve Holme (12 Apr 2013) +- imap: Added function description to imap_parse_custom_request() - Metalink: message updates +- imap: Moved utility functions to end of imap.c (Part 3/3) - Print "parsing (...) OK" only when no warnings are generated. If - no file is found in Metalink, treat it FAILED. + Moved imap_is_bchar() be with the other utility based functions. + +- imap: Moved utility functions to end of imap.c (Part 2/3) - If no digest is provided, print WARNING in parse_metalink(). - Also print validating FAILED after download. + Moved imap_parse_url_path() and imap_parse_custom_request() to the end of the + file allowing all utility functions to be grouped together. + +- imap: Moved utility functions to end of imap.c (Part 1/3) - These changes make tests 2012 to 2016 pass. + Moved imap_atom() and imap_sendf() to the end of the file allowing all + utility functions to be grouped together. -Daniel Stenberg (27 Jun 2012) -- sslgen: avoid compiler error in SSPI builds +- imap: Corrected function description for imap_connect() -Yang Tse (27 Jun 2012) -- ssluse.c: fix compiler warning: conversion to 'int' from 'size_t' +Kamil Dudka (12 Apr 2013) +- tests: prevent test206, test1060, and test1061 from failing - Reported by Tatsuhiro Tsujikawa + ... in case runtests.pl is invoked with non-default -b option - http://curl.haxx.se/mail/lib-2012-06/0371.html + Fixes a regression caused by 1e29d275c643ef6aab7948f0f55a7a9397e56b42. -- sslgen.c: add compile-time check for SSL-backend completeness +Daniel Stenberg (12 Apr 2013) +- [David Strauss brought this change] -- build: add our standard includes to curl_darwinssl.c and curl_multibyte.c - -- build: add curl_schannel and curl_darwinssl files to other build systems + libcurl-share.3: update what it does and does not share. + + Update sharing interface documentation to provide exhaustive list of + what it does and does not share. -- tests: add five more Metalink test cases +- THANKS: remove duplicated names -- tests: update Metalink message format +- bump: start working towards next release -- [Tatsuhiro Tsujikawa brought this change] +- THANKS: added people from the 7.30.0 RELEASE-NOTES - Metalink: updated message format +Version 7.30.0 (12 Apr 2013) -- [Nick Zitzmann brought this change] +Daniel Stenberg (12 Apr 2013) +- RELEASE-NOTES: cleaned up for 7.30 (synced with 5c5e1a1cd20) + + Most notable the security advisory: + http://curl.haxx.se/docs/adv_20130412.html - DarwinSSL: allow using NTLM authentication +- test1218: another cookie tailmatch test - Allow NTLM authentication when building using SecureTransport (Darwin) for SSL. + ... and make 1216 also verify it with a file input - This uses CommonCrypto, a cryptography library that ships with all versions of - iOS and Mac OS X. It's like OpenSSL's libcrypto, except that it's missing a few - less-common cyphers and doesn't have a big number data structure. + These tests verify commit 3604fde3d3c9b0d, the fix for the "cookie + domain tailmatch" vulnerability. See + http://curl.haxx.se/docs/adv_20130412.html -- curl_darwinssl.h: add newline at end of file +- [YAMADA Yasuharu brought this change] -Daniel Stenberg (26 Jun 2012) -- ossl_seed: remove leftover RAND_screen check + cookie: fix tailmatching to prevent cross-domain leakage - Before commit 2dded8fedba (dec 2010) there was logic that used - RAND_screen() at times and now I remove the leftover #ifdef check for - it. + Cookies set for 'example.com' could accidentaly also be sent by libcurl + to the 'bexample.com' (ie with a prefix to the first domain name). - The seeding code that uses Curl_FormBoundary() in ossl_seed() is dubious - to keep since it hardly increases randomness but I fear I'll break - something if I remove it now... - -Yang Tse (26 Jun 2012) -- [Nick Zitzmann brought this change] - - DarwinSSL: several adjustments + This is a security vulnerabilty, CVE-2013-1944. - - Renamed st_ function prefix to darwinssl_ - - Renamed Curl_st_ function prefix to Curl_darwinssl_ - - Moved the duplicated ssl_connect_done out of the #ifdef in lib/urldata.h - - Fixed a teensy little bug that made non-blocking connection attempts block - - Made it so that it builds cleanly against the iOS 5.1 SDK + Bug: http://curl.haxx.se/docs/adv_20130412.html -- curl-compilers.m4: -Wstrict-aliasing=3 for warning enabled gcc and clang builds +Guenter Knauf (11 Apr 2013) +- Enabled MinGW sync resolver builds. -- [Marc Hoersken brought this change] +Yang Tse (10 Apr 2013) +- if2ip.c: fix compiler warning - sockaddr.h: Fixed dereferencing pointer breakin strict-aliasing +Guenter Knauf (10 Apr 2013) +- Fixed lost OpenSSL output with "-t" - followup. - Fixed warning: dereferencing pointer does break strict-aliasing rules - by using a union inside the struct Curl_sockaddr_storage declaration. + The previously applied patch didnt work on Windows; we cant rely + on shell commands like 'echo' since they act diffently on each + platform and each shell. + In order to keep this script platform-independent the code must + only use pure Perl. -Daniel Stenberg (26 Jun 2012) -- SSL cleanup: use crypto functions through the sslgen layer +Daniel Stenberg (9 Apr 2013) +- test1217: verify parsing 257 responses with "rubbish" before path - curl_ntlm_msgs.c would previously use an #ifdef maze and direct - SSL-library calls instead of using the SSL layer we have for this - purpose. + Test 1217 verifies commit e0fb2d86c9f78, and without that change this + test fails. -- [Nick Zitzmann brought this change] +- [Bill Middlecamp brought this change] - darwinssl: add support for native Mac OS X/iOS SSL + FTP: handle "rubbish" in front of directory name in 257 responses + + When doing PWD, there's a 257 response which apparently some servers + prefix with a comment before the path instead of after it as is + otherwise the norm. + + Failing to parse this, several otherwise legitimate use cases break. + + Bug: http://curl.haxx.se/mail/lib-2013-04/0113.html -- RELEASE-NOTES: link to more metalink info +Guenter Knauf (9 Apr 2013) +- Fixed ares-enabled builds with static makefiles. -- RELEASE-NOTES: synced with d025af9bb576 +- Fixed lost OpenSSL output with "-t". + + The OpenSSL pipe wrote to the final CA bundle file, but the encoded PEM + output wrote to a temporary file. Consequently, the OpenSSL output was + lost when the temp file was renamed to the final file at script finish + (overwriting the final file written earlier by openssl). + Patch posted to the list by Richard Michael (rmichael edgeofthenet org). -Yang Tse (25 Jun 2012) -- curl_schannel.c: Remove redundant NULL assignments following Curl_safefree() +Daniel Stenberg (9 Apr 2013) +- test1216: test tailmatching cookie domains + + This test is an attempt to repeat the problem YAMADA Yasuharu reported + at http://curl.haxx.se/mail/lib-2013-04/0108.html -- [Marc Hoersken brought this change] +- RELEASe-NOTES: synced with 29fdb2700f797 + + added "tcpkeepalive on Mac OS X" - curl_schannel.c: Replace free() with Curl_safefree() +Nick Zitzmann (8 Apr 2013) +- darwinssl: disable insecure ciphers by default + + I noticed that aria2's SecureTransport code disables insecure ciphers such + as NULL, anonymous, IDEA, and weak-key ciphers used by SSLv3 and later. + That's a good idea, and now we do the same thing in order to prevent curl + from accessing a "secure" site that only negotiates insecure ciphersuites. -- [Tatsuhiro Tsujikawa brought this change] +Daniel Stenberg (8 Apr 2013) +- [Robert Wruck brought this change] - curl.1: Updated Metalink description in man page + tcpkeepalive: Support CURLOPT_TCP_KEEPIDLE on OSX - Documented that --include will be ignored if both --metalink - and --include are specified. - Also documented that a Metalink file in the local file system - cannot be used if FILE protocol is disabled. + MacOS X doesn't have TCP_KEEPIDLE/TCP_KEEPINTVL but only a single + TCP_KEEPALIVE (see + http://developer.apple.com/library/mac/#DOCUMENTATION/Darwin/Reference/ManPages/man4/tcp.4.html). + Here is a patch for CURLOPT_TCP_KEEPIDLE on OSX platforms. -Steve Holme (24 Jun 2012) -- DOCS: Added clarification to CURLOPT_CUSTOMREQUEST for the POP3 protocol +- configure: remove CURL_CHECK_FUNC_RECVFROM - Bug: http://curl.haxx.se/mail/lib-2012-06/0302.html - Reported by: Nagai H - -- smtp: Corrected result code for MAIL, RCPT and DATA commands + 1 - We don't use the results from the test and we never did. recvfrom() + is only used by the TFTP code and it has not caused any problems. - Bug: http://curl.haxx.se/mail/lib-2012-06/0094.html - Reported by: Dan + 2 - the CURL_CHECK_FUNC_RECVFROM function is extremely slow + +Steve Holme (8 Apr 2013) +- RELEASE-NOTES: Corrected duplicate NTLM memory leaks -Daniel Stenberg (24 Jun 2012) -- [Ghennadi Procopciuc brought this change] +- RELEASE-NOTES: Removed trailing full stop - test: Added test HTTP receive cookies over IPv6 +Daniel Stenberg (8 Apr 2013) +- [Fabian Keil brought this change] -Yang Tse (22 Jun 2012) -- tests: add another Metalink test case + proxy: make ConnectionExists() check credential of proxyconnections too + + Previously it only compared credentials if the requested needle + connection wasn't using a proxy. This caused NTLM authentication + failures when using proxies as the authentication code wasn't send on + the connection where the challenge arrived. + + Added test 1215 to verify: NTLM server authentication through a proxy + (This is a modified copy of test 67) -- [Tatsuhiro Tsujikawa brought this change] +- RELEASE-NOTES: sync with 704a5dfca9 - tests: Enable test2010 and fixed hash value +- TODO-RELEASE: cleaned up, not really maintained lately -- [Tatsuhiro Tsujikawa brought this change] +Marc Hoersken (7 Apr 2013) +- if2ip.c: Fixed another warning: unused parameter 'remote_scope' - Metalink: ignore --include if --metalink is used. +Daniel Stenberg (7 Apr 2013) +- [Marc Hoersken brought this change] + + cookie.c: Made cookie sort function more deterministic - Including headers in response body will break Metalink XML parser. - If it is included in the file described in Metalink XML, hash check - will fail. Therefore, --include should be ignored if --metalink is - used. + Since qsort implementations vary with regards to handling the order + of similiar elements, this change makes the internal sort function + more deterministic by comparing path length first, then domain length + and finally the cookie name. Spotted with testcase 62 on Windows. -- tests: add six Metalink test cases +Marc Hoersken (7 Apr 2013) +- curl_schannel.c: Follow up on memory leak fix ae4558d -- test 2005: add verification of hash checking outcome +- Revert "getpart.pm: Strip carriage returns to fix Windows support" + + This reverts commit e51b23c925a2721cf7c29b2b376d3d8903cfb067. + As discussed on the mailinglist, this was not the correct approach. -- getpart.pm: remove misleading comment +- http_negotiate.c: Fixed passing argument from incompatible pointer type -- [Tatsuhiro Tsujikawa brought this change] +- ftp.c: Added missing brackets around ABOR command logic - curl: Prefixed all Metalink related messages with "Metalink: " +- sockfilt.c: Fixed detection of client-side connection close + + WINSOCK only: + Since FD_CLOSE is only signaled once, it may trigger at the same + time as FD_READ. Data actually being available makes it impossible + to detect that the connection was closed by checking that recv returns + zero. Another recv attempt could block the connection if it was + not closed. This workaround abuses exceptfds in conjunction with + readfds to signal that the connection has actually closed. -- [Tatsuhiro Tsujikawa brought this change] +- curl_schannel.c: Fixed memory leak if connection was not successful - tests: Added Metalink test case # 2005 +- if2ip.c: Fixed warning: unused parameter 'remote_scope' -- [Tatsuhiro Tsujikawa brought this change] +- runtests.pl: Fixed --verbose parameter passed to http_pipe.py - curl: Restore noprogress and isatty config values. - - The noprogress and isatty in Configurable are global, in a sense - that they persist in one curl invocation. Currently once one - download writes its response data to tty, they are set to FALSE - and they are not restored on successive downloads. This change - first backups the current noprogress and isatty, and restores - them when download does not write its data to tty. +- sockfilt.c: Reduce CPU load while running under a Windows PIPE -- [Tatsuhiro Tsujikawa brought this change] +- tftpd.c: Apply sread timeout to the whole data transfer session - curl: Made --metalink option toggle Metalink functionality - - In this change, --metalink option no longer takes argument. If - it is specified, given URIs are processed as Metalink XML file. - If given URIs are remote (e.g., http URI), curl downloads it - first. Regardless URI is local file (e.g., file URI scheme) or - remote, Metalink XML file is not written to local file system and - the received data is fed into Metalink XML parser directly. This - means with --metalink option, filename related options like -O - and -o are ignored. +- getpart.pm: Strip carriage returns to fix Windows support + +Daniel Stenberg (6 Apr 2013) +- ftp tests: libcurl returns CURLE_FTP_ACCEPT_FAILED better now - Usage examples: + Since commit 57aeabcc1a20f, it handles errors on the control connection + while waiting for the data connection better. - $ curl --metalink http://example.org/foo.metalink + Test 591 and 592 are updated accordingly. + +- FTP: wait on both connections during active STOR state - This will download foo.metalink and parse it and then download - the URI described there. + When doing PORT and upload (STOR), this function needs to extract the + file descriptor for both connections so that it will respond immediately + when the server eventually connects back. - $ curl --metalink file://foo.metalink + This flaw caused active connections to become unnecessary slow but they + would still often work due to the normal polling on a timeout. The bug + also would not occur if the server connected back very fast, like when + testing on local networks. - This will parse local file foo.metalink and then download the URI - described there. - -- [Tatsuhiro Tsujikawa brought this change] + Bug: http://curl.haxx.se/bug/view.cgi?id=1183 + Reported by: Daniel Theron - curl: Refactored metalink_checksum - - When creating metalink_checksum from metalink_checksum_t, first - check hex digest is valid for the given hash function. We do - this check in the order of digest_aliases so that first good - match will be chosen (strongest hash function available). As a - result, the metalinkfile now only contains at most one - metalink_checksum because other entries are just redundant. +Marc Hoersken (6 Apr 2013) +- tftpd.c: Follow up cleanup and restore of previous sockopt -- [Gisle Vanem brought this change] +Daniel Stenberg (6 Apr 2013) +- [Kim Vandry brought this change] - tool_doswin.c: fix djgpp function _use_lfn() used without a prototype + connect: treat an interface bindlocal() problem as a non-fatal error - http://curl.haxx.se/mail/archive-2012-06/0028.html - -- build: fix RESOURCE bug in lib/Makefile.vc* + I am using curl_easy_setopt(CURLOPT_INTERFACE, "if!something") to force + transfers to use a particular interface but the transfer fails with + CURLE_INTERFACE_FAILED, "Failed binding local connection end" if the + interface I specify has no IPv6 address. The cause is as follows: - Removed two, not intended to exist, RESOURCE declarations. + The remote hostname resolves successfully and has an IPv6 address and an + IPv4 address. - Bug: http://curl.haxx.se/bug/view.cgi?id=3535977 + cURL attempts to connect to the IPv6 address first. - And sorted configuration hunks to reflect same internal order - as the one shown in the usage message. - -Daniel Stenberg (20 Jun 2012) -- [Marc Hoersken brought this change] - - schannel: Implement new buffer size strategy + bindlocal (in lib/connect.c) fails because Curl_if2ip cannot find an + IPv6 address on the interface. - Increase decrypted and encrypted cache buffers using limitted - doubling strategy. More information on the mailinglist: - http://curl.haxx.se/mail/lib-2012-06/0255.html + This is a fatal error in singleipconnect() - It updates the two remaining reallocations that have already been there - and fixes the other one to use the same "do we need to increase the - buffer"-condition as the other two. CURL_SCHANNEL_BUFFER_STEP_SIZE was - renamed to CURL_SCHANNEL_BUFFER_FREE_SIZE since that is actually what it - is now. Since we don't know how much more data we are going to read - during the handshake, CURL_SCHANNEL_BUFFER_FREE_SIZE is used as the - minimum free space required in the buffer for the next operation. - CURL_SCHANNEL_BUFFER_STEP_SIZE was used for that before, too, but since - we don't have a step size now, the define was renamed. - -Yang Tse (20 Jun 2012) -- schannel SSL: fix compiler warning - -- [Mark Salisbury brought this change] - - schannel SSL: fix for renegotiate problem + This change will make cURL try the next IP address in the list. - In schannel_connect_step2() doread should be initialized based - on connssl->connecting_state. - -- [Tatsuhiro Tsujikawa brought this change] - - runtests.pl: make it support metalink feature - -- getpart.pm: make test definition section/part parser more robust + Also included are two changes related to IPv6 address scope: - Test definition section parts which needed to include xml-lingo as contents - of that part required that the xml-blurb was written as a single line. Now the - xml-data inside the part can be written multiline making it more readable. + - Filter the choice of address in Curl_if2ip to only consider addresses + with the same scope ID as the connection address (mismatched scope for + local and remote address does not result in a working connection). - Tested with <client><file> part which is written to disk before <command> runs. + - bindlocal was ignoring the scope ID of addresses returned by + Curl_if2ip . Now it uses them. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1189 -Daniel Stenberg (20 Jun 2012) -- schannel_connect_step2: checksrc whitespace fix +Marc Hoersken (6 Apr 2013) +- tftpd.c: Fixed sread timeout on Windows by setting it manually -Yang Tse (20 Jun 2012) -- [Mark Salisbury brought this change] +- ftp.pm: Added tskill to support Windows XP Home - schannel SSL: changes in schannel_connect_step2 - - Process extra data buffer before returning from schannel_connect_step2. - Without this change I've seen WinCE hang when schannel_connect_step2 - returns and calls Curl_socket_ready. - - If the encrypted handshake does not fit in the intial buffer (seen with - large certificate chain), increasing the encrypted data buffer is necessary. - - Fixed warning in curl_schannel.c line 1215. +- runtests.pl: Modularization of MinGW/Msys compatibility functions -- [Mark Salisbury brought this change] +- ftp.pm: Made Perl testsuite able to handle Windows processes - config-win32ce.h: WinCE config adjustment - - process.h is not present on WinCE +- util.c: Revert workaround eeefcdf, 6eb56e7 and e3787e8 + +- ftp.pm: Made Perl testsuite able to kill Windows processes -- [Mark Salisbury brought this change] +- util.c: Follow up cleanup on eeefcdf - schannel SSL: Made send method handle unexpected cases better +Daniel Stenberg (6 Apr 2013) +- cpp: use #ifdef __MINGW32__ to avoid compiler complaints - Implemented timeout loop in schannel_send while sending data. This - is as close as I think we can get to write buffering; I put a big - comment in to explain my thinking. + ... instead of just #if + +Marc Hoersken (6 Apr 2013) +- util.c: Made write_pidfile write the correct PID on MinGW/Msys - With some committer adjustments + This workaround fixes an issue on MinGW/Msys regarding the Perl + testsuite scripts not being able to signal or control the server + processes. The MinGW Perl runtime only sees the Msys processes and + their corresponding PIDs, but sockfilt (and other servers) wrote the + Windows PID into their PID-files. Since this PID is useless to the + testsuite, the write_pidfile function was changed to search for the + Msys PID and write that into the PID-file. -Daniel Stenberg (19 Jun 2012) -- [Marc Hoersken brought this change] +Daniel Stenberg (5 Apr 2013) +- RELEASE-NOTES: synced with 5e722b2d09087 + + 3 more bug fixes, 6 more contributors - curl_schannel.c: Avoid unnecessary realloc calls to reduce buffer size +Marc Hoersken (5 Apr 2013) +- sockfilt.c: Fixed handling of multiple fds being signaled -Yang Tse (19 Jun 2012) -- [Mark Salisbury brought this change] +Kamil Dudka (5 Apr 2013) +- curl_global_init.3: improve description of CURL_GLOBAL_ALL + + Reported by: Tomas Mlcoch - schannel SSL: Use standard Curl read/write methods +- examples/multi-single.c: fix the order of destructions - Replaced calls to swrite with Curl_write_plain and calls to sread - with Curl_read_plain. + ... so that it adheres to the API documentation. - With some committer adjustments - -- schannel SSL: make wording of some trace messages better reflect reality + Reported by: Tomas Mlcoch -Daniel Stenberg (19 Jun 2012) -- [Marc Hoersken brought this change] +Daniel Stenberg (5 Apr 2013) +- Curl_open: restore default MAXCONNECTS to 5 + + At some point recently we lost the default value for the easy handle's + connection cache, and this change puts it back to 5 - which is the + former default value and it is documented in the curl_easy_setopt.3 man + page. - curl_schannel.h: Use BUFSIZE as the initial buffer size if available +Marc Hoersken (4 Apr 2013) +- sockfilt.c: Added wrapper functions to fix Windows console issues - Make the Schannel implementation use libcurl's default buffer size - for the initial received encrypted and decrypted data cache buffers. - The implementation still needs to handle more data since more data - might have already been received or decrypted during the handshake - or a read operation which needs to be cached for the next read. + The new read and write wrapper functions support reading from stdin + and writing to stdout/stderr on Windows by using the appropriate + Windows API functions and data types. -Guenter Knauf (19 Jun 2012) -- Fixed NetWare makefile broken from last commit. +Yang Tse (4 Apr 2013) +- lib1509.c: fix compiler warnings -Yang Tse (19 Jun 2012) -- [Mark Salisbury brought this change] +- easy.c: fix compiler warning - schannel SSL: Implemented SSL shutdown +Daniel Stenberg (4 Apr 2013) +- --engine: spellfix the help message - curl_schannel.c - implemented graceful SSL shutdown. If we fail to - shutdown the connection gracefully, I've seen schannel try to use a - session ID for future connects and the server aborts the connection - during the handshake. + Reported by: Fredrik Thulin -- [Mark Salisbury brought this change] +Yang Tse (4 Apr 2013) +- http_negotiate.c: follow-up for commit 3dcc1a9c - schannel SSL: certificate validation on WinCE +Linus Nielsen Feltzing (4 Apr 2013) +- easy: Fix the broken CURLOPT_MAXCONNECTS option + + Copy the CURLOPT_MAXCONNECTS option to CURLMOPT_MAXCONNECTS in + curl_easy_perform(). - curl_schannel.c - auto certificate validation doesn't seem to work - right on CE. I added a method to perform the certificate validation - which uses CertGetCertificateChain and manually handles the result. + Bug: http://curl.haxx.se/bug/view.cgi?id=1212 + Reported-by: Steven Gu -- [Mark Salisbury brought this change] +Guenter Knauf (4 Apr 2013) +- Updated copyright date. - schannel SSL: Added helper methods to simplify code - - Added helper methods InitSecBuffer() and InitSecBufferDesc() to make it - easier to set up SecBuffer & SecBufferDesc structs. +- Another small output fix for --help and --version. -Guenter Knauf (18 Jun 2012) -- Some more NetWare makefile tweaks for metalink. +Yang Tse (4 Apr 2013) +- http_negotiate.c: fix several SPNEGO memory handling issues -Yang Tse (18 Jun 2012) -- tool_cb_see.c: WinCE build adjustment +Guenter Knauf (4 Apr 2013) +- Added a cont to specify base64 line wrap. -- [Mark Salisbury brought this change] +- Fixed version output. - setup.h: WinCE build adjustment +- Added support for --help and --version options. -- [Mark Salisbury brought this change] +- Added option to specify length of base64 output. + + Based on a patch posted to the list by Richard Michael. - ftplistparser.c: do not compile if FTP protocol is not enabled +Daniel Stenberg (3 Apr 2013) +- curl_easy_setopt.3: CURLOPT_HTTPGET disables CURLOPT_UPLOAD -- Win32: downplay MS bazillion type synonyms game +- [Yasuharu Yamada brought this change] + + Curl_cookie_add: only increase numcookies for new cookies - Avoid usage of some MS type synonyms to allow compilation with - compiler headers that don't define these, using simpler synonyms. + Count up numcookies in Curl_cookie_add() only when cookie is new one -Daniel Stenberg (15 Jun 2012) -- Curl_rtsp_parseheader: avoid useless malloc/free +- SO_SNDBUF: don't set SNDBUF for win32 versions vista or later + + The Microsoft knowledge-base article + http://support.microsoft.com/kb/823764 describes how to use SNDBUF to + overcome a performance shortcoming in winsock, but it doesn't apply to + Windows Vista and later versions. If the described SNDBUF magic is + applied when running on those more recent Windows versions, it seems to + instead have the reversed effect in many cases and thus make libcurl + perform less good on those systems. + + This fix thus adds a run-time version-check that does the SNDBUF magic + conditionally depending if it is deemed necessary or not. - Coverity actually pointed out flawed logic in the previous call to - Curl_strntoupper() where the code used sizeof() of a pointer to pass in - a size argument. That code still worked since it only needed to - uppercase 4 letters. Still, the entire malloc/uppercase/free sequence - was pointless since the code has already matched the string once in the - condition that starts the block of code. + Bug: http://curl.haxx.se/bug/view.cgi?id=1188 + Reported by: Andrew Kurushin + Tested by: Christian Hägele -- curl_share_setopt: use va_end() +Nick Zitzmann (1 Apr 2013) +- darwinssl: additional descriptive messages of SSL handshake errors - As spotted by Coverity, va_end() was not used previously. To make it - used I took away a bunch of return statements and made them into - assignments instead. + (This doesn't need to appear in the release notes.) -Yang Tse (15 Jun 2012) -- SSPI related code: Unicode support for WinCE - kill compiler warnings +Guenter Knauf (1 Apr 2013) +- Added dns and connect time to output. -- [Mark Salisbury brought this change] +Daniel Stenberg (1 Apr 2013) +- RELEASE-NOTES: synced with 0614b902136 - SSPI related code: Unicode support for WinCE - commit 46480bb9 follow-up +- code-policed -- build: add curl_multibyte files to build systems +- tcpkeepalive: support TCP_KEEPIDLE/TCP_KEEPINTVL on win32 + + Patch by: Robert Wruck + Bug: http://curl.haxx.se/bug/view.cgi?id=1209 -- [Mark Salisbury brought this change] +- BINDINGS: BBHTTP is a cocoa binding, Julia has a binding - SSPI related code: Unicode support for WinCE - - SSPI related code now compiles with ANSI and WCHAR versions of security - methods (WinCE requires WCHAR versions of methods). - - Pulled UTF8 to WCHAR conversion methods out of idn_win32.c into their own file. - - curl_sasl.c - include curl_memory.h to use correct memory functions. +- ftp_sendquote: use PPSENDF, not FTPSENDF - getenv.c and telnet.c - WinCE compatibility fix + The last remaining code piece that still used FTPSENDF now uses PPSENDF. + In the problematic case, a PREQUOTE series was done on a re-used + connection when Curl_pp_init() hadn't been called so it had messed up + pointers. The init call is done properly from Curl_pp_sendf() so this + change fixes this particular crash. - With some committer adjustments + Bug: http://curl.haxx.se/mail/lib-2013-03/0319.html + Reported by: Sam Deane -Guenter Knauf (15 Jun 2012) -- Fixed typo. +Steve Holme (27 Mar 2013) +- RELEASE-NOTES: Corrected typo -Yang Tse (14 Jun 2012) -- winbuild/MakefileBuild.vc: convert line endings to DOS style - - As per request on mailing list: http://curl.haxx.se/mail/lib-2012-06/0222.html +Daniel Stenberg (27 Mar 2013) +- [Clemens Gruber brought this change] -- [Marc Hoersken brought this change] + multi-uv.c: remove unused variable + +- RELEASE-NOTES: add two references - winbuild: Allow SSPI build with or without Schannel +- test1509: verify proxy header response headers count - The changes introduced in commit 2bfa57bc32 are not enough - to make it actually possible to use the USE_WINSSL option. - Makefile.vc was not updated and the configuration name which is - used in the build path did not match between both build files. + Modified sws to support and use custom CONNECT responses instead of the + previously naive hard-coded version. Made the HTTP test server able to + extract test case number from the host name in a CONNECT request by + finding the number after the last dot. It makes 'machine.moo.123' use + test case 123. - This patch fixes those issues and introduces the following changes: + Adapted a larger amount of tests to the new <connect> style. - - Replaced the -schannel name with -winssl in order to be consistent - with the other options - - Added ENABLE_WINSSL option to winbuild/Makefile.vc (default yes) - - Changed winbuild/MakefileBuild.vc to set USE_WINSSL to true if - USE_SSL is false and USE_WINSSL was not specified as a parameter - - Separated WINSSL handling from SSPI handling to be consistent with - the other options and their corresponding code path + Bug: http://curl.haxx.se/bug/view.cgi?id=1204 + Reported by: Martin Jansen -- curl.1: 7.27.0 seems next release +- [Clemens Gruber brought this change] -- schannel: fix printf-style format strings + Added libuv example multi-uv.c -- Fix bad failf() and info() usage +Yang Tse (25 Mar 2013) +- NTLM: fix several NTLM code paths memory leaks + +- WIN32 MemoryTracking: track wcsdup() _wcsdup() and _tcsdup() usage - Calls to failf() are not supposed to provide trailing newline. - Calls to infof() must provide trailing newline. + As of 25-mar-2013 wcsdup() _wcsdup() and _tcsdup() are only used in + WIN32 specific code, so tracking of these has not been extended for + other build targets. Without this fix, memory tracking system on + WIN32 builds, when using these functions, would provide misleading + results. - Fixed 30 or so strings. - -- schannel: fix unused parameter warnings - -- schannel: fix comparisons between signed and unsigned - -- schannel: fix discarding qualifier from pointer type + In order to properly extend this support for all targets curl.h + would have to define curl_wcsdup_callback prototype and consequently + wchar_t should be visible before that in curl.h. IOW curl_wchar_t + defined in curlbuild.h and this pulling whatever system header is + required to get wchar_t definition. + + Additionally a new curl_global_init_mem() function that also receives + user defined wcsdup() callback would be required. -- schannel: fix shadowing of global declarations +- curl_ntlm_msgs.c: revert commit 463082bea4 + + reverts unreleased invalid memory leak fix -- schannel: fix Curl_schannel_init() and Curl_schannel_cleanup() declarations +Daniel Stenberg (23 Mar 2013) +- RELEASE-NOTES: synced with bc6037ed3ec02 + + More changes, bugfixes and contributors! -- [Gisle Vanem brought this change] +- [Martin Jansen brought this change] - urldata.h: fix cyassl/openssl/ssl.h build clash with wincrypt.h + Curl_proxyCONNECT: count received headers - Building with CyaSSL failed compilation. Reason being that OCSP_REQUEST and - OCSP_RESPONSE are enum values in CyaSSL and defines in <wincrypt.h> included - via <winldap.h> in ldap.c. + Proxy servers tend to add their own headers at the beginning of + responses. The size of these headers was not taken into account by + CURLINFO_HEADER_SIZE before this change. - http://curl.haxx.se/mail/lib-2012-06/0196.html + Bug: http://curl.haxx.se/bug/view.cgi?id=1204 -- MakefileBuild.vc: Allow building without SSL +Steve Holme (21 Mar 2013) +- sasl: Corrected a few violations of the curl coding standards - In order to use Windows native SSL support define 'USE_WINSSL' + Corrected some incorrectly positioned pointer variable declarations to + be "char *" rather than "char* ". -- configure: new option --with-winssl - - This option may be used to build curl/libcurl using SSL/TLS support provided - by MS windows system libraries. Option is mutually exclusive with any other - SSL library. Default value is --without-winssl. +- multi.c: Corrected a couple of violations of the curl coding standards - --with-winssl option implies --with-sspi option. - - Option meaningful only for Windows builds. + Corrected some incorrectly positioned pointer variable declarations to + be "type *" rather than "type* ". -Guenter Knauf (13 Jun 2012) -- Changed Schannel string to SSL-Windows-native. +- imap-tests: Added CRLF to reply data to be compliant with RFC-822 - This is more descriptive for the user who might - not even know what schannnel is at all. + Updated the reply data in tests: 800, 801, 802, 804 and 1321 to possess + the CRLF as per RFC-822. -Yang Tse (13 Jun 2012) -- schannel: remove version number and identify its use with 'schannel' literal - - Version number is removed in order to make this info consistent with - how we do it with other MS and Linux system libraries for which we don't - provide this info. +- multi.c: Fix compilation warning - Identifier changed from 'WinSSPI' to 'schannel' given that this is the - actual provider of the SSL/TLS support. libcurl can still be built with - SSPI and without SCHANNEL support. + warning: an enumerated type is mixed with another type -Daniel Stenberg (12 Jun 2012) -- singlesocket: remove dead code +- multi.c: fix compilation error - No need to check if 'entry' is non-NULL in a spot where it is already checked - and guaranteed to be non-NULL. + warning: conversion from enumeration type to different enumeration type + +- lib1900.c: fix compilation warning - (Spotted by a Coverity scan) + warning: declaration of 'time' shadows a global declaration + +Yang Tse (20 Mar 2013) +- [John E. Malmberg brought this change] -- netrc: remove dead code + build_vms.com: use existing curlbuild.h and parsing fix - Remove two states from the enum and the corresponding code for them as - these states were never reached or used. + This patch removes building curlbuild.h from the build_vms.com procedure + and uses the one in the daily or release tarball instead. - (Spotted by a Coverity scan) - -Yang Tse (12 Jun 2012) -- Revert "connect.c/ftp.c: Fixed dereferencing pointer breakin strict-aliasing" + packages/vms/build_curlbuild_h.com is obsolete with this change. - This reverts commit 9c94236e6cc078a0dc5a78b6e2fefc1403e5375e. + Accessing the library module name "tool_main" needs different handling + when the optional extended parsing is enabled. - It didn't server its purpose, so lets go back to long-time working code. - -- socks_sspi.c: further cleanup - -- [Marc Hoersken brought this change] + Tested on IA64/VMS 8.4 and VAX/VMS 7.3 - socks_sspi.c: Clean up and removal of obsolete minor status +Nick Zitzmann (19 Mar 2013) +- darwinssl: disable ECC ciphers under Mountain Lion by default - Removed obsolete minor status variable and parameter of status function - which was never used or set at all. Also Curl_sspi_strerror does support - only one status and there is no need for a second sub status. - -Guenter Knauf (12 Jun 2012) -- Removed trailing whitespaces. - -Yang Tse (12 Jun 2012) -- strerror.c: make Curl_sspi_strerror() always return code for errors - -- curl_sspi.h: provide sspi status definitions missing in old headers + I found out that ECC doesn't work as of OS X 10.8.3, so those ciphers are + turned off until the next point release of OS X. -- sspi: make Curl_sspi_strerror() libcurl's sspi status code string function +Steve Holme (18 Mar 2013) +- FEATURES: Small tidy up for constancy and grammar -- sspi: make Curl_sspi_strerror() libcurl's sspi status code string function +Daniel Stenberg (18 Mar 2013) +- [Oliver Schindler brought this change] -Daniel Stenberg (11 Jun 2012) -- Revert: 634f7cfee40d4658 partially + Curl_proxyCONNECT: clear 'rewindaftersend' on success - Make sure CURL_VERSION_SSPI is present and works as in previous releases - for ABI and API compatibility reasons. - -- checksrc: shorten a few lines to comply - -- cleanup: remove trailing whitespace - -- [Marc Hoersken brought this change] + After having done a POST over a CONNECT request, the 'rewindaftersend' + boolean could be holding the previous value which could lead to badness. + + This should be tested for in a new test case! + + Bug: https://groups.google.com/d/msg/msysgit/B31LNftR4BI/KhRTz0iuGmUJ - winbuild: Removed WITH_SSL=schannel and tie schannel to SSPI +Steve Holme (18 Mar 2013) +- TODO: Reordered the protocol and security sections + + Moved SMTP, POP3, IMAP and New Protocol sections to be listed after the + other protocols (FTP, HTTP and TELNET) and SASL to be after SSL and + GnuTLS as these are all security related. - Removed specific WITH_SSL=schannel paramter that did not fit the general - schema and complicated the parameters. For now Schannel will be enabled - if SSPI is enabled and OpenSSL is disabled. + Additionally fixed numbering of the SSL and GnuTLS sections as they + weren't consecutive. -- [Steve Holme brought this change] +Yang Tse (18 Mar 2013) +- tests: specify 'text' mode for some output files in verify section - Makefile.vc6: Added version.lib if built with SSPI +Steve Holme (17 Mar 2013) +- imap: Fixed incorrect initial response generation for SASL AUTHENTICATE + + Fixed incorrect initial response generation for the NTLM and LOGIN SASL + authentication mechanisms when the SASL-IR was detected. + + Introduced in commit: 6da7dc026c14. -- [Marc Hoersken brought this change] +- FEATURES: Expanded the supported enhanced IMAP command list - winbuild: Updated winbuild scripts to add schannel +- TODO: Corrected typo in TOC -- [Marc Hoersken brought this change] +- TODO: Added IMAP section and removed unused Other protocols section - mingw32: Fixed warning of USE_SSL being redefined +- TODO: Added graceful base64 decoding failure to SMTP and POP3 -- [Marc Hoersken brought this change] +- TODO: Corrected typo on section 10.2 heading - sspi: Fixed incompatible parameter pointer type in Curl_sspi_version +Yang Tse (16 Mar 2013) +- tests: 96, 558, 1330: strip build subdirectory dependent leading path -- [Marc Hoersken brought this change] +Steve Holme (15 Mar 2013) +- TODO: Added section 10.2 Initial response to POP3 to do list - sspi: Updated RELEASE-NOTES, FEATURES and THANKS +- imap-tests: Corrected copy/paste error in test808 reply data -- [Marc Hoersken brought this change] +Yang Tse (15 Mar 2013) +- unit1330.c: fix date - setup.h: Automatically define USE_SSL if USE_SCHANNEL is defined +- tests: add #96 #558 and #1330 + + These verfy that the 'memory tracking' subsystem is actually doing its + job when using curl tool (#96), a test in libtest (#558) and also a unit + test (#1330), in order to prevent regressions in this functionallity. -- [Marc Hoersken brought this change] +Steve Holme (15 Mar 2013) +- imap-tests: Added test808 for custom EXAMINE command - version: Replaced SSPI feature information with version string details +Daniel Stenberg (15 Mar 2013) +- HTTP proxy: insert slash in URL if missing - Added Windows SSPI version information to the curl version string when - SCHANNEL SSL is not enabled, as the version of the library should also - be included when SSPI is used to generate security contexts. + curl has been accepting URLs using slightly wrong syntax for a long + time, such as when completely missing as slash "http://example.org" or + missing a slash when a query part is given + "http://example.org?q=foobar". - Removed SSPI from the feature list as the features are GSS-Negotiate, - NTLM and SSL depending on the usage of the SSPI library. - -- [Steve Holme brought this change] - - sspi.c: Post Curl_sspi_version() rework code tidy up + curl would translate these into a legitimate HTTP request to servers, + although as was shown in bug #1206 it was not adjusted properly in the + cases where a HTTP proxy was used. - Removed duplicate blank lines. - Removed spaces between the not and test in various if statements. - Removed explicit test of NULL in an if statement. - Placed function returns on same line as function declarations. - Replaced the use of curl_maprintf() with aprintf() as it is the - preprocessor job to do this substitution if ENABLE_CURLX_PRINTF - is set. - -- [Steve Holme brought this change] + Test 1213 and 1214 were added to the test suite to verify this fix. + + The test HTTP server was adjusted to allow us to specify test number in + the host name only without using any slashes in a given URL. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1206 + Reported by: ScottJi - sspi: Reworked Curl_sspi_version() to return version components +Steve Holme (14 Mar 2013) +- ftpserver.pl: Added EXAMINE_imap() for IMAP EXAMINE commands - Reworked the version function to return four version components rather - than a string that has to be freed by the caller. + Used hard coded data from RFC-3501 section 6.3.2. -- [Guenter Knauf brought this change] +Yang Tse (14 Mar 2013) +- curl_memory.h: introduce CURLX_NO_MEMORY_CALLBACKS usage possibility + + This commit alone does not fix anything nor modifies existing + interfaces or behaviors, although it is a prerequisite for other + fixes. - configure.ac: Added -lversion if built with SSPI +- Makefile.vc6: add missing files -- [Marc Hoersken brought this change] +Linus Nielsen Feltzing (14 Mar 2013) +- pipelining: Remove dead code. - schannel: Code cleanup and bug fixes +- Multiple pipelines and limiting the number of connections. - curl_sspi.c: Fixed mingw32-gcc compiler warnings - curl_sspi.c: Fixed length of error code hex output + Introducing a number of options to the multi interface that + allows for multiple pipelines to the same host, in order to + optimize the balance between the penalty for opening new + connections and the potential pipelining latency. - The hex value was printed as signed 64-bit value on 64-bit systems: - SEC_E_WRONG_PRINCIPAL (0xFFFFFFFF80090322) + Two new options for limiting the number of connections: - It is now correctly printed as the following: - SEC_E_WRONG_PRINCIPAL (0x80090322) + CURLMOPT_MAX_HOST_CONNECTIONS - Limits the number of running connections + to the same host. When adding a handle that exceeds this limit, + that handle will be put in a pending state until another handle is + finished, so we can reuse the connection. - curl_sspi.c: Fallback to security function table version number - Instead of reporting an unknown version, the interface version is used. + CURLMOPT_MAX_TOTAL_CONNECTIONS - Limits the number of connections in total. + When adding a handle that exceeds this limit, + that handle will be put in a pending state until another handle is + finished. The free connection will then be reused, if possible, or + closed if the pending handle can't reuse it. - curl_sspi.c: Removed SSPI/ version prefix from Curl_sspi_version - curl_schannel: Replaced static buffer sizes with defined names - curl_schannel.c: First brace when declaring functions on column 0 - curl_schannel.c: Put the pointer sign directly at variable name - curl_schannel.c: Use structs directly instead of typedef'ed structs - curl_schannel.c: Removed space before opening brace - curl_schannel.c: Fixed lines being longer than 80 chars - -- [Marc Hoersken brought this change] - - curl_sspi: Added Curl_sspi_version function + Several new options for pipelining: - Added new function to get SSPI version as string. - Added required library version.lib to makefiles. - Changed curl_schannel.c to use Curl_sspi_version. - -- [Guenter Knauf brought this change] - - schannel: Updated mingw32 makefiles - -- [Marc Hoersken brought this change] - - schannel: Replace ASCII specific code with general defines - -- [Marc Hoersken brought this change] - - schannel: Added definitions which are missing in mingw32 - -- [Marc Hoersken brought this change] + CURLMOPT_MAX_PIPELINE_LENGTH - Limits the pipeling length. If a + pipeline is "full" when a connection is to be reused, a new connection + will be opened if the CURLMOPT_MAX_xxx_CONNECTIONS limits allow it. + If not, the handle will be put in a pending state until a connection is + ready (either free or a pipe got shorter). + + CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE - A pipelined connection will not + be reused if it is currently processing a transfer with a content + length that is larger than this. + + CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE - A pipelined connection will not + be reused if it is currently processing a chunk larger than this. + + CURLMOPT_PIPELINING_SITE_BL - A blacklist of hosts that don't allow + pipelining. + + CURLMOPT_PIPELINING_SERVER_BL - A blacklist of server types that don't allow + pipelining. + + See the curl_multi_setopt() man page for details. - schannel: Moved interal struct types to urldata.h +Yang Tse (13 Mar 2013) +- tool_main.c: remove redundant vms_show storage-class specifier + + vms_show 'extern' storage-class specifier removed from tool_main.c due to... - Moved type definitions in order to avoid inclusion loop + - Advice from Tor Arntsen: http://curl.haxx.se/mail/lib-2013-03/0164.html + + - HP OpenVMS docs stating that 'Extern is the default storage class for + variables declared outside a function.' + http://h71000.www7.hp.com/commercial/c/docs/dec_c_help_5.html + (Storage_Classes section) -- [Marc Hoersken brought this change] +- test509: libcurl initialization with memory callbacks and actual usage - schannel: Fixed compiler warnings about pointer type assignments +Steve Holme (13 Mar 2013) +- pop3: Removed unnecessary transfer cancellation + + Following commit e450f66a02d8 and the changes in the multi interface + being used internally, from 7.29.0, the transfer cancellation in + pop3_dophase_done() is no longer required. -- [Marc Hoersken brought this change] +Yang Tse (13 Mar 2013) +- Makefile.am: add VMS files not being included in tarball - schannel: Fixed critical typo in conditions and added buffer length checks +- [Tom Grace brought this change] -- [Marc Hoersken brought this change] - - sspi: Refactored socks_sspi and schannel to use same error message functions + build_vms.com: VMS build fixes - Moved the error constant switch to curl_sspi.c and added two new helper - functions to curl_sspi.[ch] which either return the constant or a fully - translated message representing the SSPI security status. - Updated socks_sspi.c and curl_schannel.c to use the new functions. + Added missing slash in cc_full_list. + Removed unwanted extra quotes inside symbol tool_main + for non-VAX architectures that triggered link failure. + Replaced curl_sys_inc with sys_inc. -- [Marc Hoersken brought this change] +- [Tom Grace brought this change] - schannel: Added special shutdown check for Windows 2000 Professional + tool_main.c: fix VMS global variable storage-class specifier - Windows 2000 Professional: Schannel returns SEC_E_OK instead - of SEC_I_CONTEXT_EXPIRED. If the length of the output buffer - is zero and the first byte of the encrypted packet is 0x15, - the application can safely assume that the message was a - close_notify message and change the return value to - SEC_I_CONTEXT_EXPIRED. + An extern submits a psect and a global reference to the linker to point + to it. Using "extern int vms_show = 0" also creates a globaldef. - Connection shutdown does not mean that there is no data to read - Correctly handle incomplete message and ask curl to re-read - Fixed buffer for decrypted being to small - Re-structured read condition to be more effective - Removed obsolete verbose messages - Changed memory reduction method to keep a minimum buffer of size 4096 + The use of the extern by itself does declare a psect but does not declare + a globalsymbol. It does declare a globalref. But the linker needs one and + only one globaldef or there is an error. -- [Marc Hoersken brought this change] +Patrick Monnerat (12 Mar 2013) +- OS400: synchronize RPG binding - schannel: Implemented SSL/TLS renegotiation +Steve Holme (12 Mar 2013) +- pop3: Fixed continuous wait when using --ftp-list - Updated TODO information and added related MSDN articles + Don't initiate a transfer when using --ftp-list. -- [Marc Hoersken brought this change] +Kamil Dudka (12 Mar 2013) +- [Zdenek Pavlas brought this change] - schannel: Save session credential handles in session cache + curl_global_init: accept the CURL_GLOBAL_ACK_EINTR flag + + The flag can be used in pycurl-based applications where using the multi + interface would not be acceptable because of the performance lost caused + by implementing the select() loop in python. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1168 + Downstream Bug: https://bugzilla.redhat.com/919127 -- [Marc Hoersken brought this change] +- easy: do not ignore poll() failures other than EINTR - schannel: Code cleanup +Yang Tse (12 Mar 2013) +- curl.h: stricter CURL_EXTERN linkage decorations logic + + No API change involved. + + Info: http://curl.haxx.se/mail/lib-2013-02/0234.html -- [Marc Hoersken brought this change] +Daniel Stenberg (11 Mar 2013) +- THANKS: Latin-1'ified Jiri's name - schannel: Check for required context attributes +Steve Holme (11 Mar 2013) +- test806: Added CRLF to reply data to be compliant with RFC-822 -- [Marc Hoersken brought this change] +Daniel Stenberg (11 Mar 2013) +- test805: added crlf newlines to make data size match + + since mails sent are supposed to have CRLF line endings I added them and + now the data size after (\Seen) matches again properly - schannel: Allow certificate and revocation checks being deactivated +- test: fix newline for the data check of 807 -- [Marc Hoersken brought this change] +Yang Tse (11 Mar 2013) +- test801 to test807: fix protocol section line endings - schannel: Added SSL/TLS support with Microsoft Windows Schannel SSPI +Steve Holme (10 Mar 2013) +- Makefile.am: Corrected a couple of spurious tab characters + + Corrected a couple of tab characters between test702 and test703, and + between test900 and test901 which should be spaces. -- [Marc Hoersken brought this change] +- [Jiri Hruska brought this change] - http: Replaced specific SSL libraries list in https_getsock fallback + imap: Added test807 for custom request functionality (STORE) -- [Marc Hoersken brought this change] +- [Jiri Hruska brought this change] - connect.c/ftp.c: Fixed dereferencing pointer breakin strict-aliasing - - Fixed warning: dereferencing pointer does break strict-aliasing rules - by using a union instead of separate pointer variables. - Internal union sockaddr_u could probably be moved to generic header. - Thanks to Paul Howarth for the hint about using unions for this. - - Important for winbuild: Separate declaration of sockaddr_u pointer. - The pointer variable *sock cannot be declared and initialized right - after the union declaration. Therefore it has to be a separate statement. + imap: Added test806 for IMAP (folder) LIST command -- [Marc Hoersken brought this change] +- [Jiri Hruska brought this change] - curl_ntlm_msgs.c: Fixed passwdlen not being used and recalculated + imap: Added test805 for APPEND functionality -Yang Tse (11 Jun 2012) -- tests: fix test definitions # 1355, 1363, 1385 and 1393 - - -i without HTTP protocol shall not include headers in the output +- [Jiri Hruska brought this change] -Daniel Stenberg (10 Jun 2012) -- Curl_pgrsDone: return int and acknowledge return code - - Since Curl_pgrsDone() itself calls Curl_pgrsUpdate() which may return an - abort instruction or similar we need to return that info back and - subsequently properly handle return codes from Curl_pgrsDone() where - used. - - (Spotted by a Coverity scan) + imap: Added test804 for skipping SELECT if in the same mailbox -Steve Holme (10 Jun 2012) -- [Marc Hoersken brought this change] +- [Jiri Hruska brought this change] - winbuild: Fixed environment variables being lost + imap: Added test802 and test803 for UIDVALIDITY verification - Fixed USE_IPV6 and USE_IDN not being passed - from Makefile.vc to MakefileBuild.vc - Fixed whitespace and formatting issues - Fixed typo and format in help message - -Guenter Knauf (9 Jun 2012) -- Added metalink support to NetWare builds. - -Steve Holme (9 Jun 2012) -- smtp.c: Removed unused variable + Added one test for a request with matching UIDVALIDITY and one which is + a mismatched request that will fail. -- smtp: Post apop feature code tidy up +- [Jiri Hruska brought this change] -- pop3: Post apop feature code tidy up + imap: Added test801 for UID and SECTION URL parameters -- pop3: Added support for apop authentication +- [Jiri Hruska brought this change] -- pop3: Enhanced the extended authentication mechanism detection + imap-tests: Accept quoted parameters in ftpserver.pl - Enhanced the authentication type / mechanism detection in preparation - for the introduction of APOP support. + Any IMAP parameter can come in escaped and in double quotes. Added a + simple function to unquote the command parameters and applied it to + the IMAP command handlers. -- pop3.c: Fixed length of SASL check +- [Jiri Hruska brought this change] -Yang Tse (9 Jun 2012) -- Fixes allowing 26 more test cases in 1334 to 1393 range to succeed - -- tests: fix test definitions # 1370 and 1371 + tests: Fix ftpserver.pl indentation - -J without -O shall not honor C-D filename + The whole of FETCH_imap() had one extra space of indentation, whilst + APPEND_imap() used indentation of 2 instead of 4 in places. -Daniel Stenberg (9 Jun 2012) -- OpenSSL: support longer certificate subject names - - Previously it would use a 256 byte buffer and thus cut off very long - subject names. The limit is now upped to the receive buffer size, 16K. +- Makefile.am: Corrected end of line filler character - Bug: http://curl.haxx.se/bug/view.cgi?id=3533045 - Reported by: Anthony G. Basile + The majority of lines, that specify a test file for inclusion, end with + a tab character before the slash whilst some end with a space. Corrected + those that end with a space to end with a tab character as well. -Kamil Dudka (8 Jun 2012) -- ssl: fix duplicated SSL handshake with multi interface and proxy +- email-tests: Updated the test data that corresponds to the test number - Bug: https://bugzilla.redhat.com/788526 - Reported by: Enrico Scholz + Finished segregating the email protocol tests, into their own protocol + based ranges, in preparation of adding more e-mail related tests to the + test suite. -Daniel Stenberg (8 Jun 2012) -- tool_getparam.h: fix compiler error +- email-tests: Renamed the IMAP test to be 800 - forward declare the Configurable struct + Continued segregating the email protocol tests, into their own protocol + based ranges, in preparation of adding more e-mail related tests to the + test suite. -- metalink: restore some includes +- email-tests: Renamed the SMTP tests to be in the range 900-906 - Commit eeeba1496cbca removed them and thus broke my Linux build + Continued segregating the email protocol tests, into their own protocol + based ranges, in preparation of adding more e-mail related tests to the + test suite. -- openldap: OOM fixes +- email-tests: Renamed the POP3 tests to be in the range 850-857 - when calloc fails, return error! (Detected by Fortify) + Started segregating the email protocol tests, into their own protocol + based ranges, in preparation of adding more e-mail related tests to the + test suite. + +Daniel Stenberg (10 Mar 2013) +- hiperfifo: updated to use current libevent API - Reported by: Robert B. Harris + Patch by: Myk Taylor -Steve Holme (8 Jun 2012) -- sasl: Re-factored mechanism constants in preparation for APOP work +Steve Holme (10 Mar 2013) +- imap: Reworked some function descriptions -Yang Tse (8 Jun 2012) -- metalink: build fixes and adjustments II - - Additionally, make hash checking ability mandatory in order to allow metalink - support in curl. - - A command line option could be introduced to skip hash checking at runtime, - but the ability to check hashes should always be built-in when providing - metalink support. +- imap: Added some missing comments to imap_sendf() -Guenter Knauf (8 Jun 2012) -- Added metalink support to MinGW builds. +- email: Removed hard returns from init functions -Daniel Stenberg (7 Jun 2012) -- log2changes.pl: fix the Version output +Daniel Stenberg (9 Mar 2013) +- curl_multi_wait: avoid second loop if nothing to do - Previously it could easily wrongly get repeated + ... hopefully this will also make clang-analyzer stop warning on + potentional NULL dereferences (which were false positives anyway). -Yang Tse (7 Jun 2012) -- metalink: build fixes and adjustments I - -Daniel Stenberg (7 Jun 2012) -- lib554.c: use curl_formadd() properly +- multi_runsingle: avoid NULL dereference - The length/size options take longs so make sure to pass on such types. + When Curl_do() returns failure, the connection pointer could be NULL so + the code path following needs to that that into account. - Reported by: Neil Bowers - Bug: http://curl.haxx.se/mail/lib-2012-06/0001.html + Bug: http://curl.haxx.se/mail/lib-2013-03/0062.html + Reported by: Eric Hu -Steve Holme (7 Jun 2012) -- smtp.c: Re-factored the smtp_state_*_resp() functions +Steve Holme (9 Mar 2013) +- imap: Re-factored all perform based functions - Re-factored the smtp_state_*_resp() functions to 1) Match the constants - that were refactored in commit 00fddba6727c, 2) To be more readable and - 3) To match their counterparties in pop3.c. - -Yang Tse (7 Jun 2012) -- Fixes allowing HTTP test cases 1338, 1339, 1368 and 1369 to succeed + Standardised the naming of all perform based functions to be in the form + imap_perform_something(). -- tests 1364 to 1393: several -o filename -J -i -D combinations for HTTP and FTP +Daniel Stenberg (9 Mar 2013) +- [Cédric Deltheil brought this change] -- tests 1348 to 1363: test definition polishing + examples/getinmemory.c: abort the transfer if not enough memory - Verify that the "Saved to filename 'blabla'" message is only displayed when - the 'blabla' filename being used _actually_ has been specified by the server - in the Content-Disposition header. - - Use relative path for unintended file creation postcheck. + No more use exit(3) but instead tell libcurl that no byte has been + written to let it return a `CURLE_WRITE_ERROR`. In addition, check + curl easy handle return code. -Steve Holme (6 Jun 2012) -- smtp: Re-factored the SMTP_AUTH* state machine constants +- RELEASE-NOTES: synced with ca3c0ed3a9c - Re-factored the SMTP_AUTH* constants, that are used by the state - machine, to be clearer to read. + 8 more bugfixes, one change and a bunch of contributors -Guenter Knauf (6 Jun 2012) -- Added hint for pkg-config wrapper script. +Yang Tse (9 Mar 2013) +- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility -- Updated Android section with recent NDK. - - The r7b had some bugs, and shouldnt be used. +Steve Holme (9 Mar 2013) +- imap: Added description comments to all perform based functions -Yang Tse (6 Jun 2012) -- Disable non-HTTP header related tests +- imap: Removed the need for separate custom request functions - These now detect incompleate header data and fail - -- tests 1348 to 1363: compleate header data part of test definition + Moved the custom request processing into the LIST command as the logic + is the same. -- tests 1334 to 1363 revisited. - - Add a postcheck section to verify unintended file creation. - - Remove needless <file> checks in verify section. Renumbering where appropriate. +- imap: Corrected typo in comment -- tests: adjust file part behavior in test verify section. - - When a <file> part is now specified with no contents at all, this - will actually verify that the specified file has no contents at all. - Previously file contents would be ignored. +Yang Tse (9 Mar 2013) +- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility -Steve Holme (5 Jun 2012) -- smtp.c: Removed whitespace +Steve Holme (9 Mar 2013) +- imap: Moved imap_logout() to be grouped with the other perform functions -- pop3: Another small code tidy up +- email: Updated the function descriptions for the logout / quit functions - Missed some comments that we identified during the SMTP tidy up earlier. + Updated the function description comments following commit 4838d196fdbf. -- smtp: Post authentication code tidy up - - Corrected lines longer than 78 characters. +- email: Simplified the logout / quit functions - Removed unnecessary braces in smtp_state_helo_resp(). + Moved the blocking state machine to the disconnect functions so that the + logout / quit functions are only responsible for sending the actual + command needed to logout or quit. - Introduced some comments in data sending functions. + Additionally removed the hard return on failure. + +- email: Tidied up the *_regular_transfer() functions - Tidied up comments to match changes made in pop3.c. + Added comments and simplified convoluted dophase_done comparison. -Yang Tse (5 Jun 2012) -- tests 1348 to 1363: add a comma in test description +- email: Simplified nesting of if statements in *_doing() functions -Steve Holme (5 Jun 2012) -- email: Removed duplicated header file +Daniel Stenberg (8 Mar 2013) +- RELEASE-NOTES: mention that krb4 is up for consideration -- sasl: Renamed Curl_sasl_decode_ntlm_type2_message() +Steve Holme (8 Mar 2013) +- imap: Fixed handling of untagged responses for the STORE custom command - For consistency with other SASL based functions renamed this function - to Curl_sasl_create_ntlm_type3_message() which better describes its - usage. + Added an exception, for the STORE command, to the untagged response + processor in imap_endofresp() as servers will back respones containing + the FETCH keyword instead. -- pop3: Post authentication code tidy up +Yang Tse (8 Mar 2013) +- curlbuild.h.dist: enhance non-configure GCC ABI detection logic + + GCC specific adjustments: - Corrected lines longer than 78 characters. + - check __ILP32__ before 32 and 64bit processor architectures in + order to detect ILP32 programming model on 64 bit processors + which, of course, also support LP64 programming model, when using + gcc 4.7 or newer. - Changed POP3_AUTH_FINAL to POP3_AUTH to match SMTP code now that the - AUTH command is no longer sent on its own. + - keep 32bit processor architecture checks in order to support gcc + versions older than 4.7 which don't define __ILP32__ - Introduced some comments in data sending functions. + - check __LP64__ for gcc 3.3 and newer, while keeping 64bit processor + architecture checks for older versions which don't define __LP64__ + +- curlbuild.h.dist: fix GCC build on ARM systems without configure script - Another attempt at trying to rational code and comment style. + Bug: http://curl.haxx.se/bug/view.cgi?id=1205 + Reported by: technion -- pop3: Added support for sasl digest-md5 authentication +- [Gisle Vanem brought this change] -Yang Tse (4 Jun 2012) -- sasl: add reference for curl_sasl + polarssl.c: fix header filename typo -- Makefile.inc: tab adjustment +- configure: use XC_LIBTOOL for portability across libtool versions -Daniel Stenberg (4 Jun 2012) -- pop3 tests: CAPA instead of AUTH - - After Steve's commit e336bc7c42c7340 test 1319 and 1407 need to check - for CAPA instead of AUTH. +- xc-lt-iface.m4: provide XC_LIBTOOL macro -Steve Holme (4 Jun 2012) -- sasl: Added service parameter to Curl_sasl_create_digest_md5_message() - - Added a service type parameter to Curl_sasl_create_digest_md5_message() - to allow the function to be used by different services rather than being - hard coded to "smtp". +Steve Holme (7 Mar 2013) +- imap: Fixed SELECT not being performed for custom requests -Yang Tse (4 Jun 2012) -- tests 1356 to 1363: several -O -J -i -D combinations with FTP protocol - - Currently 1356 to 1362 succeed but a write failure is logged in traceNNNN. +- email: Minor code tidy up following recent changes - Currently 1363 fails, so disabled for now. + Removed unwanted braces and added variable initialisation. -Steve Holme (4 Jun 2012) -- tests: Updated pop3 tests for change in auth mechanism detection +- DOCS: Corrected the IMAP URL grammar of the UIDVALIDITY parameter -- pop3: Changed the sasl mechanism detection from auth to capa - - Not all SASL enabled POP3 servers support the AUTH command on its own - when trying to detect the supported mechanisms. As such changed the - mechanism detection to use the CAPA command instead. +- FEATURES: Provided a little clarity in some IMAP features -Daniel Stenberg (4 Jun 2012) -- curl_easy_setopt.3: proto updates + cleanups - - - For all *FUNCTION options, they now all show the complete prototype in - the description. Previously some of them would just refer to a - typedef'ed function pointer in the curl.h header. +- email: Optimised block_statemach() functions - - I made the phrasing of that "Pass a pointer to a function that matches - the following prototype" the same for all *FUNCTION option descriptions. - - - I removed some uses of 'should'. I think I sometimes over-use this - word as in many places I actually mean MUST or otherwise more specific - and not-so-optional synonyms. + Optimised the result test in each of the block_statemach() functions. -Yang Tse (4 Jun 2012) -- tests 1348 to 1355: several -O -J -i -D combinations with FTP protocol +- DOCS: Added the list command to the IMAP URL section - Currently 1348 to 1354 succeed but a write failure is logged in traceNNNN. + Added examples of the list command and clarified existing example URLs + following recent changes. + +- FEATURES: Updated for recent imap additions - Currently 1355 fails, so disabled for now. + Updated the imap features list, corrected a typo in the smtp features + and clarified a pop3 feature. -- tests 1346 to 1347: several -O -J -i -D combinations with HTTP protocol +Daniel Stenberg (7 Mar 2013) +- version bump: the next release will be 7.30.0 -Steve Holme (4 Jun 2012) -- sasl: Small code tidy up +- checksrc: ban unsafe functions - Reworked variable names in Curl_sasl_create_cram_md5_message() to match - those in Curl_sasl_create_digest_md5_message() as they are more - appropriate. + The list of unsafe functions currently consists of sprintf, vsprintf, + strcat, strncat and gets. + + Subsequently, some existing code needed updating to avoid warnings on + this. -- sasl: Moved digest-md5 authentication message creation from smtp.c +Steve Holme (7 Mar 2013) +- RELEASE-NOTES: Added missing imap fixes and additions - Moved the digest-md5 message creation from smtp.c into the sasl module - to allow for use by other modules such as pop3. + With all the recent imap changes it wasn't clear what new features and + fixes should be included in the release notes. + +Nick Zitzmann (6 Mar 2013) +- RELEASE-NOTES: brought this up-to-date with the latest changes + +Steve Holme (6 Mar 2013) +- [Jiri Hruska brought this change] -- sasl: Small code tidy up before moving digest-md5 over + imap: Fixed test801 and test1321 to specify a message UID - Correction of comments and variable names. + Just a folder list would be retrieved if UID was not specified now. -- RELEASE-NOTES: Added missing addition of sasl login support +- [Jiri Hruska brought this change] -- pop3: Added support for sasl cram-md5 authentication + imap: Fixed ftpserver.pl to allow verification even through LIST command + + Commit 198012ee inadvertently broke LIST_imap(). -Daniel Stenberg (3 Jun 2012) -- Curl_sasl_create_plain_message: remove TAB +- imap: Tidied up the APPEND and final APPEND response functions + + Removed unnecessary state changes on failure and setting of result codes + on success. -Steve Holme (3 Jun 2012) -- sasl: Small code tidy up +- imap: Tidied up the final FETCH response function - Added some comments and removed an unreferenced variable. + Removed unnecessary state change on failure and setting of result code on + success. -- pop3.c: Added conditional compilation for NTLM function calls +- imap: Tidied up the LIST response function - Added USE_NTLM condition compilation around the NTLM functions called - from pop3_statemach_act() introduced in commit 69f7156ad96877. + Reworked comments as they referenced custom commands, removed + unnecessary state change on failure and setting of result code on + success. -- sasl: Moved cram-md5 authentication message creation from smtp.c +- imap: Removed the custom request response function - Moved the cram-md5 message creation from smtp.c into the sasl module - to allow for use by other modules such as pop3. + Removed imap_state_custom_resp() as imap_state_list_resp() provides the + same functionality. + +- [Jiri Hruska brought this change] -- pop3: Fixed an issue with changes introduced in commit c267c53017bc + imap: Updated ftpserver.pl to be more compliant, added new commands - Because pop3_endofresp() is called for each line of data yet is not - passed the line and line length, so we have to use the data pointed to - by pp->linestart_resp which contains the whole packet, the mechanisms - were being detected in one call yet the function would be called for - each line of data. + Enriched IMAP capabilities of ftpserver.pl in order to be able to + add tests for the new IMAP features. - Using curl with verbose mode enabled would show that one line of data - would be received in response to the AUTH command, before the AUTH - <mechanism> command was sent to the server and then the next few lines - of the original AUTH command would be displayed before the response from - the AUTH <mechanism> command. This would then cause problems when - parsing the CRAM-MD5 challenge data as extra data was contained in the - buffer. + * Added support for APPEND - Saves uploaded data to log/upload.$testno + * Added support for LIST - Returns the contents of <reply/> section in + the current test, like e.g FETCH. + * Added support for STORE - Returns hardcoded updated flags + * Changed handling of SELECT - Returns much more information in the + usual set of untagged responses; uses hardcoded data from an example + in the IMAP RFC + * Changed handling of FETCH - Fixed response format + +- imap: Added check for empty UID in FETCH command - Changed the parsing so that each line is checked for the mechanisms - and the function returns FALSE until the whole of the AUTH response has - been processed. + As the UID has to be specified by the user for the FETCH command to work + correctly, added a check to imap_fetch(), although strictly speaking it + is protected by the call from imap_perform(). -Daniel Stenberg (3 Jun 2012) -- version: bump to 7.27.0 for next release +Kamil Dudka (6 Mar 2013) +- nss: fix misplaced code enabling non-blocking socket mode - Due to new features + The option needs to be set on the SSL socket. Setting it on the model + takes no effect. Note that the non-blocking mode is still not enabled + for the handshake because the code is not yet ready for that. -- RELEASE-NOTES: synced with c4e3578e4bf +Daniel Stenberg (6 Mar 2013) +- imap: fix compiler warning - Also bumped the contributor number and next release is to become 7.27.0 + imap.c:694:21: error: unused variable 'imapc' [-Werror=unused-variable] -- THANKS: 16 new contributors from the 7.26.0 release +Steve Holme (5 Mar 2013) +- imap: Added support for list command -Steve Holme (3 Jun 2012) -- DOCS: Fixed list in Section 18.2 not displaying correctly on web site +- imap: Added list perform and response handler functions -- DOCS: Corrected missed heading renumbering from commit 530675a1ad7 +- imap: Introduced IMAP_LIST state -- DOCS: Added IMAP and LDAP sections - - Added new sections 11. IMAP and 12. LDAP to document adding SASL based - authentication. +- imap: Small tidy up of imap_select() to match imap_append() - Renumbered current sections 11 to 17 as 13 to 19. - - Additionally added 19.10 Add CURLOPT_MAIL_CLIENT option. + Updated the style of imap_select() before adding the LIST command. -- sasl.c: Fix to avoid warnings introduced in commit d9ca9e9869e8 +- imap: Moved mailbox check from the imap_do() function - Applied a fix to avoid warnings on systems where Curl_ntlm_sspi_cleanup() - is just a nop. - -- pop3.c:Corrected typo in commit 69ba0da8272d + In preparation for the addition of the LIST command, moved the mailbox + check from imap_do() to imap_select() and imap_append(). -- pop3: Fixed the issue of having to supply the user name for all requests +- curl_setup.h: Added S_IRDIR() macro for compilers that don't support it - Previously it wasn't possible to connect to POP3 and not specify the - user name as a CURLE_ACCESS_DENIED error would be returned. This error - occurred because USER would be sent to the server with a blank user name - if no mailbox user was specified as the server would reply with -ERR. + Commit 26eaa8383001 introduces the use of S_ISDIR() yet some compilers, + such as MSVC don't support it, so we must define a substitute using + file flags and mask. + +Daniel Stenberg (4 Mar 2013) +- AddFormData: prevent only directories from being posted - This wasn't a problem prior to the 7.26.0 release but with the - introduction of custom commands the user and/or application developer - might want to issue a CAPA command without having to log in as a - specific mailbox user. + Commit f4cc54cb4746ae5a6d (shipped as part of the 7.29.0 release) was a + bug fix that introduced a regression in that while trying to avoid + allowing directory names, it also forbade "special" files like character + devices and more. like "/dev/null" as was used by Oliver who reported + this regression. - Additionally this fix won't send the newly introduced AUTH command if no - user name is specified. + Reported by: Oliver Gondža + Bug: http://curl.haxx.se/mail/archive-2013-02/0040.html -- pop3.c: Small code tidy up +Nick Zitzmann (3 Mar 2013) +- darwinssl: fix infinite loop if server disconnected abruptly - Corrected lines exceeding 78 characters. + If the server hung up the connection without sending a closure alert, + then we'd keep probing the socket for data even though it's dead. Now + we're ready for this situation. - Repositioned some comments and added extra clarity. - -- sasl: Corrected variable names in comments and parameters - -- pop3: Added support for sasl ntlm authentication + Bug: http://curl.haxx.se/mail/lib-2013-03/0014.html + Reported by: Aki Koskinen -- sasl: Small comment style tidy up following ntlm commit +Steve Holme (3 Mar 2013) +- imap: Added comments to imap_append() -- sasl: Moved ntlm authentication message handling from smtp.c - - Moved the ntlm message creation and decoding from smtp.c into the sasl - module to allow for use by other modules such as pop3. +- [Jiri Hruska brought this change] -- pop3: Added support for sasl login authentication + imap: Added required mailbox check for FETCH and APPEND commands -Yang Tse (1 Jun 2012) -- tests 1334 to 1345: several -O -J -i -D combinations with HTTP protocol +- pingpong.c: Fix enumerated type mixed with another type -- tests: support test definitions with up to 5 file checks in <verify> section +- smtp: Updated the coding style for state changes after a send operation - This is done introducing tags <file1> to <file4> besides existing <file> one, - as well as corresponding <stripfile1> to <stripfile4> ones, that can be used - in the <verify> section in the same way as the non-numbered ones. + Some state changes would be performed after a failure test that + performed a hard return, whilst others would be performed within a test + for success. Updated the code, for consistency, so all instances are + performed within a success test. -Steve Holme (31 May 2012) -- sasl: Moved login authentication message creation from smtp.c +- pop3: Updated the coding style for state changes after a send operation - Moved the login message creation from smtp.c into the sasl module - to allow for use by other modules such as pop3. + Some state changes would be performed after a failure test that + performed a hard return, whilst others would be performed within a test + for success. Updated the code, for consistency, so all instances are + performed within a success test. -- smtp.c: Reworked message encoding in smtp_state_authpasswd_resp() - - Rather than encoding the password message itself the - smtp_state_authpasswd_resp() function now delegates the work to the same - function that smtp_state_authlogin_resp() and smtp_authenticate() use - when constructing the encoded user name. +- imap: Fixed typo in variable assignment -- smtp.c: Re-factored smtp_auth_login_user() for use with passwords - - In preparation for moving to the SASL module re-factored the - smtp_auth_login_user() function to smtp_auth_login() so that it can be - used for both user names and passwords as sending both of these under - the login authentication mechanism is the same. +- [Jiri Hruska brought this change] -- pop3: Added support for sasl plain text authentication + imap: Fixed custom request handling in imap_done() + + Fixed imap_done() so that neither the FINAL states are not entered when + a custom command has been performed. -- curl_ntlm_msgs.c: Corrected small spelling mistake in comments +- [Jiri Hruska brought this change] -- sasl: Moved plain text authentication message creation from smtp.c + imap: Enabled custom requests in imap_select_resp() - Moved the plain text message creation from smtp.c into the sasl module - to allow for use by other modules such as pop3. + Changed imap_select_resp() to invoke imap_custom() instead of + imap_fetch() after the mailbox has been selected if a custom + command has been set. -Yang Tse (30 May 2012) -- configure: fix LDAPS disabling related misplaced closing parenthesis +- [Jiri Hruska brought this change] -- pop3 test server: allow pop3 test server verification to succeed again + imap: Enabled custom requests in imap_perform() - Introduce SUPPORTCAPA and SUPPORTAUTH config commands to allow further - pop3 test server expansion for tests that require CAPA or AUTH support, - although this will need some extra work to make it fully functional. + Modified imap_perform() to start with the custom command instead of + SELECT when a custom command is to be performed and no mailbox has + been given. -Steve Holme (28 May 2012) -- pop3: Introduced the continue response in pop3_endofresp() +- [Jiri Hruska brought this change] -- pop3: Changed response code from O and E to + and - + imap: Added custom request perform and response handler functions - The POP3 protocol doesn't really have the concept of error codes and - uses +, +OK and -ERR in response to commands to indicate continue, - success and error. + Added imap_custom(), which initiates the custom command processing, + and an associated response handler imap_state_custom_resp(), which + handles any responses by sending them to the client as body data. - The AUTH command is one of those commands that requires multiple pieces - of data to be sent to the server where the server will respond with + as - part of the handshaking. This meant changing the values before - continuing with the next stage of adding authentication support. + All untagged responses with the same name as the first word of the + custom request string are accepted, with the exception of SELECT and + EXAMINE which have responses that cannot be easily identified. An + extra check has been provided for them so that any untagged responses + are accepted for them. -- pop3: Small code tidy up following authentication work so far +- pop3: Fixed unnecessary parent structure reference - Changed the order of the state machine to match the order of actual - events. - - Reworked some comments and function parameter positioning that I missed - the other day. + Updated pop3 code following recent imap changes. -Kamil Dudka (28 May 2012) -- nss: use human-readable error messages provided by NSS - - Bug: http://lists.baseurl.org/pipermail/yum-devel/2012-January/009002.html +- [Jiri Hruska brought this change] -Daniel Stenberg (27 May 2012) -- test1013.pl: filter out Metalink + imap: Added custom request parsing - Since it isn't a feature supported by curl-config we can't compare that - with the --version output + Added imap_parse_custom_request() for parsing the CURLOPT_CUSTOMREQUEST + parameter which URL decodes the value and separates the request from + any parameters - This makes it easier to filter untagged responses + by the request command. -- pop3: remove variable-not-used warnings +- [Jiri Hruska brought this change] -Steve Holme (27 May 2012) -- DOCS: Corrected the "Added in" version number for CURLOPT_MAIL_AUTH + imap: Introduced custom request parameters - Additionally corrected another RFC link that I missed yesterday. + Added custom request parameters to the per-request structure. -- pop3: Added support for SASL based authentication mechanism detection - - Added support for detecting the supported SASL authentication mechanisms - via the AUTH command. There are two ways of detecting them, either by - using the AUTH command, that will return -ERR if not supported or by - using the CAPA command which will return SASL and the list of mechanisms - if supported, not include SASL if SASL authentication is not supported - or -ERR if the CAPA command is not supported. As such it seems simpler - to use the AUTH command and fallback to normal clear text authentication - if the the command is not supported. - - Additionally updated the test cases to return -ERR when the AUTH command - is encountered. Additional test cases will be added when support for the - individual authentication mechanisms is added. +- [Jiri Hruska brought this change] -Daniel Stenberg (27 May 2012) -- pop3: remove trailing whitespace + imap: Introduced IMAP_CUSTOM state -Steve Holme (27 May 2012) -- pop3: Code tidy up before the introduction of authentication code - - Moved EOB definition into header file. - - Switched the logic around in pop3_endofresp() to allow for the - introduction of auth-mechanism detection. - - Repositioned second and third function variables where they will fit - within the 78 character line limit. +- imap: Minor code tidy up - Tidied up some comments. + Minor tidy up of code layout and comments following recent changes. -Guenter Knauf (27 May 2012) -- Enabled OpenSSL static linkage. +- imap: Simplified the imap_state_append_resp() function + + Introduced the result code variable to simplify the state changes and + remove the hard returns. -- Enabled OpenSSL static linkage. +- imap: Changed successful response logic in imap_state_append_resp() + + For consistency changed the logic of the imap_state_append_resp() + function to test for an unsucessful continuation response rather than a + succesful one. -- Try to detect OpenSSL build type automatically. +- imap: Standardised imapcode condition tests + + For consistency changed two if(constant != imapcode) tests to be + if(imapcode != constant). -Daniel Stenberg (26 May 2012) -- metalink: fix build errors when disabled +- imap: Moved imap_append() to be with the other perform functions -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Reduced #ifdef HAVE_METALINK + imap: Enabled APPEND support in imap_perform() + + Added logic in imap_perform() to perform an APPEND rather than SELECT + and FETCH if an upload has been specified. -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Disable hash check if neither OpenSSL nor GNUTLS is installed. + imap: Implemented APPEND final processing + + The APPEND operation needs to be performed in several steps: + 1) We send "<tag> APPEND <mailbox> <flags> {<size>}\r\n" + 2) Server responds with continuation respose "+ ...\r\n" + 3) We start the transfer and send <size> bytes of data + 4) Only now we end the request command line by sending "\r\n" + 5) Server responds with "<tag> OK ...\r\n" + + This commit performs steps 4 and 5, in the DONE phase, as more + processing is required after the transfer. -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Format GETOUT_METALINK nicely + imap: Added APPEND perform and response handler functions + + Added imap_append() function to initiate upload and imap_append_resp() + to handle the continuation response and start the transfer. -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Minimize usage of structs from libmetalink + imap: Introduced IMAP_APPEND and IMAP_APPEND_FINAL states -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Check checksum of downloaded file if checksum is available + imap: Updated setting of transfer variables in imap_state_fetch_resp() - Metalink file contains several hash types of checksums, such as - md5, sha-1, sha-256, etc. To deal with these checksums, I created - abstraction layer based on lib/curl_md5.h and - lib/md5.c. Basically, they are almost the same but I changed the - code so that it is not hash type dependent. Currently, - GNUTLS(nettle or gcrypt) and OpenSSL functions are supported. - - Checksum checking is done by reopening download file. If there - is an I/O error, the current implementation just prints error - message and does not try next resource. - - In this patch, the supported hash types are: md5, sha-1 and sha-256. + Add number of bytes retrieved from the PP cache to req.bytecount and set + req.maxdownload only when starting a proper download. -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Always create directory hierarchy for Metalink. - - Filenames contained in Metalink file can include directory information. - Filenames are unique in Metalink file, taking into account the directory - information. So we need to create the directory hierarchy. + imap: Improved FETCH response parsing - Curl has --create-dirs option, but we create directory hierarchy for - Metalink downloads regardless of the option value. - - This patch also put metalink int variable outside of HAVE_LIBMETALINK - guard. This reduces the number of #ifdefs. + Added safer parsing of the untagged FETCH response line and the size of + continuation data. -- [Tatsuhiro Tsujikawa brought this change] +- imap: Fixed accidentally lossing the result code + + Accidentally lost the result code in imap_state_capability() and + imap_state_login() with commit b06a78622609. - Fixed segmentation fault when Metalink has no valid file or no resource. +- imap: Another minor comment addition / tidy up -- [Tatsuhiro Tsujikawa brought this change] +- imap: Updated the coding style for state changes after a send operation + + Some state changes would be performed after a failure test that + performed a hard return, whilst others would be performed within a test + for success. Updated the code, for consistency, so all instances are + performed within a success test. - Support media-type parameter in Content-Type +- pop3 / smtp: Small comment tidy up + + Small tidy up to keep some comments consistant across each of the email + protocols. -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Print "Metalink" in Features if Metalink support is enabled. + imap: FETCH response handler cleanup before further changes + + Removed superfluous NULL assignment after Curl_safefree() and rewrote + some comments and logging messages. -- [Tatsuhiro Tsujikawa brought this change] +- pop3: Small tidy up of function arguments - Removed trailing space +- imap: Small tidy up of function arguments -- [ant brought this change] +- smtp: Corrected debug message for POP3_AUTH_FINAL constant + + Following commit ad3177da24b8 corrected the debug message in state() + from AUTH to AUTH_FINAL. - Add --metalink to --help +- pop3: Corrected debug message for POP3_AUTH_FINAL constant + + Following commit afad1ce753a1 corrected the debug message in state() + from AUTH to AUTH_FINAL. -- [ant brought this change] +- imap: Corrected debug message for IMAP_AUTHENTICATE_FINAL constant + + Following commit 13006f3de9ec corrected the debug message in state() + from AUTHENTICATE to AUTHENTICATE_FINAL. - Add Metalink information and --metalink option to man page +- [Jiri Hruska brought this change] -- [ant brought this change] + imap: Fixed error code returned for invalid FETCH response + + If the FETCH command does not result in an untagged response the the + UID is probably invalid. As such do not return CURLE_OK. - Add Metalink information and --metalink option to man page +- [Jiri Hruska brought this change] -- [ant brought this change] + imap: Added processing of the final FETCH responses + + Not processing the final FETCH responses was not optimal, not only + because the response code would be ignored but it would also leave data + unread on the socket which would prohibit connection reuse. - Adds Metalink information to INSTALL +- [Jiri Hruska brought this change] -- [Tatsuhiro Tsujikawa brought this change] + imap: Introduced FETCH_FINAL state for processing final fetch responses + + A typical FETCH response can be broken down into four parts: + + 1) "* <uid> FETCH (<what> {<size>}\r\n", using continuation syntax + 2) <size> bytes of the actual message + 3) ")\r\n", finishing the untagged response + 4) "<tag> OK ...", finishing the command + + Part 1 is read in imap_fetch_resp(), part 2 is consumed in the PERFORM + phase by the transfer subsystem, parts 3 and 4 are currently ignored. - --metalink option is available regardless of Metalink support. +- imap: fix autobuild warning + + Removed whitespace from imap_perform() -- [Tatsuhiro Tsujikawa brought this change] +- imap: fix compiler warning + + error: declaration of 'imap' shadows a previous local - metalink: parse downloaded Metalink file +- smtp: Re-factored the final SMTP_AUTH constant - Parse downloaded Metalink file and add downloads described there. Fixed - compile error without metalink support. + Changed the final SMTP_AUTH constant to SMTP_AUTH_FINAL for consistency + with the response function. -- [Tatsuhiro Tsujikawa brought this change] +- pop3: Re-factored the final POP3_AUTH constant + + Changed the final POP3_AUTH constant to POP3_AUTH_FINAL for consistency + with the response function. - Fixed HAVE_LIBMETALINK conditional is always true +- imap: Re-factored final IMAP_AUTHENTICATE constant + + Changed the final IMAP_AUTHENTICATE constant to IMAP_AUTHENTICATE_FINAL + for consistency with the response function. -- [Tatsuhiro Tsujikawa brought this change] +- imap: Updated the coding style of imap_state_servergreet_resp() + + Updated the coding style, in this function, to be consistant with other + response functions rather then performing a hard return on failure. - metalink: minor metalinkfile fix +- imap: Reversed the logic of the (un)successful tagged SELECT response - Don't update config->metalinkfile_last in operate(). Use local variable - to point to the current metalinkfile. + Reversed the logic of the unsuccessful vs successful tagged SELECT + response in imap_state_select_resp() to be more logical to read. -- [Tatsuhiro Tsujikawa brought this change] +- imap: Reversed the logic of the (un)successful tagged CAPABILITY response + + Reversed the logic of the unsuccessful vs successful tagged CAPABILITY + response in imap_state_capability_resp() to be more logical to read. - metalink: show help message even if disabled +- imap: Corrected char* references with char * - Print message if --metalink is used while metalink support is not - enabled. Migrated Metalink support in tool_operate.c and removed - operatemetalink(). + Corrected char* references made in commit: 709b3506cd9b. -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Applied patches from Daniel + imap: Added processing of more than one response when sent in same packet + + Added a loop to imap_statemach_act() in which Curl_pp_readresp() is + called until the cache is drained. Without this multiple responses + received in a single packet could result in a hang or delay. -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Support Metalink. - - This change adds experimental Metalink support to curl. - To enable Metalink support, run configure with --with-libmetalink. - To feed Metalink file to curl, use --metalink option like this: - - $ curl -O --metalink foo.metalink + imap: Added skipping of SELECT command if already in the same mailbox - We use libmetalink to parse Metalink files. + Added storage and checking of the last mailbox userd to prevent + unnecessary switching. -Steve Holme (26 May 2012) -- DOCS: Fixed line spacing of authentication examples in CURLOPT_URL +- [Jiri Hruska brought this change] -- DOCS: Changed domain names in various examples to example.com + imap: Introduced the mailbox variable - Updated various references of real domain names to example.com as per - RFC-2606. + Added the mailbox variable to the per-connection structure in + preparation for checking for an already selected mailbox. -- DOCS: Fixed meaning of bit 2 in CURLOPT_POSTREDIR +- email: Slight reordering of connection based variables - Setting bit 2 for this value was documented as having a constant value - defined as CURL_REDIR_POST_303 yet referenced a 302 request. - - Additionally corrected the meaning of CURL_REDIR_POST_ALL for all three - bits and fixed problems with the bolding of keywords in this section. + Reordered the state and ssl_done variables in order to provide more + consistency between the email protocols as well as for for an upcoming + change. -- DOCS: Standardised how RFCs are referenced. - - Standardised how RFCs are referenced so that the website may autolink to - the correct documentation on ietf.org. Additionally removed the one link - to RFC3986 on curl.haxx.se. +- imap: Tidied up comments for connection based variables -Yang Tse (26 May 2012) -- Fix libcurl.pc and curl-config generation for static MingW* cross builds +- DOCS: Added the IMAP UIDVALIDITY property to the CURLOPT_URL section -Daniel Stenberg (25 May 2012) -- [Tatsuhiro Tsujikawa brought this change] +- [Jiri Hruska brought this change] - Made -D option work with -O and -J. - - To achieve this, first new structure HeaderData is defined to hold - necessary data to perform header-related work. Then tool_header_cb now - receives HeaderData pointer as userdata. All header-related work - (currently, dumping header and Content-Disposition inspection) are done - in this callback function. HeaderData.outs->config is used to determine - whether each work is done. - - Unit tests were also updated because after this change, curl code always - sets CURLOPT_HEADERFUNCTION and CURLOPT_HEADERDATA. + imap: Added verification of UIDVALIDITY mailbox attribute - Tested with -O -J -D, -O -J -i and -O -J -D -i and all worked fine. + Added support for checking the UIDVALIDITY, and aborting the request, if + it has been specified in the URL and the server response is different. -Steve Holme (25 May 2012) -- sasl: Re-factored auth-mechanism constants to be more generic +- [Jiri Hruska brought this change] -- smtp: Moved auth-mechanism constants into a separate header file + imap: Added support for parsing the UIDVALIDITY property - Move the SMTP_AUTH constants into a separate header file in - preparation for adding SASL based authentication to POP3 as the two - protocols will need to share them. + Added support for parsing the UIDVALIDITY property from the SELECT + response and storing it in the per-connection structure. -Kamil Dudka (25 May 2012) -- nss: avoid using explicit casts of code pointers +- [Jiri Hruska brought this change] -Steve Holme (24 May 2012) -- DOCS: Added LDAP to the CURLOPT_URL section - -- TODO: Removed DIGEST-MD5 authentication from SMTP to do list - - Removed DIGEST-MD5 from Section 9.1 Other authentication mechanisms as - the feature was added to SMTP in 7.26.0. + imap: Introduced the mailbox_uidvalidity variable - Also corrected small spelling mistake. + Added the mailbox_uidvalidity variable to the per-connection structure + in preparation for checking the UIDVALIDITY mailbox attribute. + +- imap: Corrected comment in imap_endofresp() -Daniel Stenberg (24 May 2012) -- bump to 7.26.1: start working towards next release +- imap: Corrected whitespace -Version 7.26.0 (24 May 2012) +- [Jiri Hruska brought this change] -Daniel Stenberg (24 May 2012) -- RELEASE-NOTES: synced with ef60fdbd73 + imap: Added filtering of CAPABILITY and FETCH untagged responses - Just before 7.26.0 is about to ship + Only responses that contain "CAPABILITY" and "FETCH", respectively, + will be sent to their response handler. -Steve Holme (22 May 2012) -- smtp: Fixed an issue with the multi-interface always sending postdata +- [Jiri Hruska brought this change] + + imap: Added a helper function for upcoming untagged response filtering - Due to the result code being reset to CURLE_OK when smtp_dophase_done() - was called, postdata would incorrectly be sent to the server when the - MAIL FROM or RCPT command was rejected. + RFC 3501 states that "the client MUST be prepared to accept any response + at all times" yet we assume anything received with "* " at the beginning + is the untagged response we want. - As such, libcurl would return the wrong result code from performing the - operation and additionally set CURLINFO_RESPONSE_CODE to be that - returned by the postdata command. + Introduced a helper function that checks whether the input looks like a + response to specified command, so that we may filter the ones we are + interested in according to the current state. + +- [Jiri Hruska brought this change] + + imap: Moved CAPABILITY response handling to imap_state_capability_resp() - Bug: http://curl.haxx.se/mail/lib-2012-05/0108.html - Reported by: Gokhan Sengun + Introduced similar handling to the FETCH responses, where even the + untagged data responses are handled by the response handler of the + individual state. -- DOCS: Updated version number for features added in the pending release +Linus Nielsen Feltzing (26 Feb 2013) +- Remove unused variable in smtp_state_data_resp() -Daniel Stenberg (22 May 2012) -- [Tatsuhiro Tsujikawa brought this change] +Steve Holme (25 Feb 2013) +- email: Small tidy up following recent changes - Fixed compile error with GNUTLS+NETTLE - - In nettle/md5.h, md5_init and md5_update are defined as macros to - nettle_md5_init and nettle_md5_update respectively. This causes - error when using MD5_params.md5_init and md5_update. This patch - renames these members as md5_init_func and md5_update_func to - avoid name conflict. For completeness, MD5_params.md5_final was - also renamed as md5_final_func. +- smtp: Removed bytecountp from the per-request structure - The changes in curl_ntlm_core.c is conversion error and fixed by - casting to proper type. + Removed this pointer to a downloaded bytes counter because it was set in + smtp_init() to point to the same variable the transfer functions keep + the count in (k->bytecount), effectively making the code in transfer.c + "*k->bytecountp = k->bytecount" a no-op. -- TODO-RELEASE: mention the pending biggies for 7.27.0 +- pop3: Removed bytecountp from the per-request structure + + Removed this pointer to a downloaded bytes counter because it was set in + pop3_init() to point to the same variable the transfer functions keep + the count in (k->bytecount), effectively making the code in transfer.c + "*k->bytecountp = k->bytecount" a no-op. -- [Jan Ehrhardt brought this change] +- [Jiri Hruska brought this change] - winbuild: fix IPv6 enabled build + imap: Removed bytecountp from the per-request structure - The existing check was wrong so IPv6 support would never be enabled + Removed this pointer to a downloaded bytes counter because it was set in + imap_init() to point to the same variable the transfer functions keep + the count in (k->bytecount), effectively making the code in transfer.c + "*k->bytecountp = k->bytecount" a no-op. -- 7.26.0: will be the next release version +- [Jiri Hruska brought this change] -- RELEASE-NOTES: synced with 8ae1e657e82a + imap: Adjusted SELECT and FETCH function order - And mention that this will become 7.26.0 + Moved imap_select() and imap_fetch() to be grouped with the other + perform functions. -Guenter Knauf (22 May 2012) -- Updated dependency libary versions. +- [Jiri Hruska brought this change] -Daniel Stenberg (20 May 2012) -- curl-config.1: fix curl-config usage in example - - The curl-config command must be used twice in the single command line to - work properly in some environments. + imap: Adjusted SELECT and FETCH state order in imap_statemach_act() - Bug: http://curl.haxx.se/bug/view.cgi?id=3528241 - Reported by: Julian Taylor + Exchanged the position of these states in the switch statements to + match the state enum, execution and function order. -Steve Holme (17 May 2012) -- smtp: Fixed non-escaping of dot character at beginning of line - - A dot character at the beginning of a line would not be escaped to a - double dot as required by RFC-2821, instead it would be deleted by the - mail server. Please see section 4.5.2 of the RFC for more information. +- imap: Minor tidy up of comments in imap_parse_url_path() - Note: This fix also simplifies the detection of repeated CRLF.CRLF - combinations, such as CRLF.CRLF.CRLF, a little rather than having to - advance the eob counter to 2. + Tidy up of comments before next round of imap changes. -Daniel Stenberg (16 May 2012) -- FAQ: updated 1.10 How many are using curl? +- imap: Fixed incorrect comparison for STARTTLS in imap_endofresp() - Now linking to http://daniel.haxx.se/blog/2012/05/16/300m-users/ + Corrected the comparison type in addition to commit 1dac29fa83a9. -- disable-versioned-symbols: removed superfluous 'fi' +- DOCS: Corrected IMAP URL examples according to RFC5092 - The commit e315927a1a left this in + URL examples that included the UID weren't technically correct although + would pass the curl parser. -- MakefileBuild.vc: use the correct IDN variable +Nick Zitzmann (24 Feb 2013) +- darwinssl: fix undefined $ssllib warning in runtests.pl - The variable that control IDN enablement is called USE_IDN within these - Makefiles + I also added --with-darwinssl to the list of SSL options in configure. -- [Pierre Chapuis brought this change] +Steve Holme (24 Feb 2013) +- imap: Added check for new internal imap response code - autoconf: improve handling of versioned symbols +- imap: Changed the order of the response types in imap_endofresp() - It checks whether versioned symbols should be enabled before checking - whether it is possible (i.e. the linker supports --version-script) or - not. This avoids a useless warning when building cURL on a platform that - does not use GNU ld. + From a maintenance point of view the code reads better to view tagged + responses, then untagged followed by continuation responses. - Moreover, it fixes broken indentation of this chunk of code. + Additionally, this matches the order of responses in POP3. -- curl.1: clarify -x usage - - 1 - fix the syntax in the .IP line - - 2 - Provided user names and passwords are URL decoded by libcurl - - Bug: http://curl.haxx.se/bug/view.cgi?id=3525935 +- [Jiri Hruska brought this change] -- NTLM: is supported in GnuTLS builds too + imap: Added stricter parsing of continuation responses - ... since commit 9a4c887c4a7 introduced in libcurl 7.19.4 + Enhanced the parsing to only allow continuation responses in some + states. -- TODO: happy eyeballs is now RFC6555 +- imap: Simplified memcmp() in tagged response parsing -- my_useragent: shorten user-agent - - The built-in user-agent will now only say curl/[version] and nothing - else in an attempt to decrease overhead in HTTP requests. +- [Jiri Hruska brought this change] -- CURLOPT_HEADERFUNCTION: works for non-HTTP protocols too + imap: Reworked the logic of untagged command responses -Claes Jakobsson (3 May 2012) -- Add note about default timeout in CURLOPT_TIMEOUT +- imap: Corrected spacing of trailing brace -Daniel Stenberg (2 May 2012) -- [Gokhan Sengun brought this change] +- [Jiri Hruska brought this change] - MD5: OOM fix + imap: Added stricter parsing of tagged command responses - check whether md5 initialization succeeded before updating digest of - buffers onto it + Enhanced the parsing of tagged responses which must start with "OK", + "NO" or "BAD" -- REALEASE-NOTES: synced with 64f48e884e3c1 +- [Jiri Hruska brought this change] -- [Jan Schaumann brought this change] + imap: Simplified command response test in imap_endofresp() - add newly created manual page +- [Jiri Hruska brought this change] -- [Jan Schaumann brought this change] + imap: Corrected comment in imap_endofresp() - add a manual page for mk-ca-bundle - -Guenter Knauf (26 Apr 2012) -- Updated dependency lib versions. - -Daniel Stenberg (23 Apr 2012) -- URL parse: reject numerical IPv6 addresses outside brackets +- DOCS: Corrected layout of POP3 and IMAP URL examples - Roman Mamedov spotted (in - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670126) that curl would - not complain when given a URL with an IPv6 numerical address without - brackets. It would simply cut off the last ":[hex]" part and thus not - work correctly. + Corrected layout issues with the POP3 and IMAP URL examples introduced + in commit cb3ae6894fb2. + +- DOCS: Updated CURLOPT_URL section following recent POP3 and IMAP changes - That's a URL using an illegal syntax and now libcurl will instead return - a clear error code and error message detailing the error. + Updated the POP3 sub-section to refer to message ID rather than mailbox. - The above mentioned bug report claims this to be a regression but - libcurl does not guarantee functionality when given URLs that aren't - following the URL spec (RFC3986 mostly). I consider the fact that it - used to handle this differently a mere coincidence. + Added an IMAP sub-section with example URLs depicting the specification + of mailbox, uid and section. -- Curl_MD5_init: fix OOM memory leak +- pop3: Refactored the mailbox variable as it didn't reflect it's purpose - Bug: http://curl.haxx.se/mail/lib-2012-04/0246.html - Reported by: Michael Mueller + Updated the mailbox variable to correctly reflect it's purpose. The + name mailbox was a leftover from when IMAP and POP3 support was + initially added to curl. -- [Gokhan Sengun brought this change] +- FEATURES: Updated following recent IMAP changes - OpenSSL cert: provide more details when cert check fails - - curl needs to be more chatty regarding certificate verification failure - during SSL handshake +- [Jiri Hruska brought this change] -Yang Tse (23 Apr 2012) -- Revert "sspi: Added version information" + imap: Added the ability to FETCH a specific UID and SECTION - This reverts commit 2976de480808119dae08fc6f52c8d75ba1aedb1a. - -- Revert "sspi - Small code tidy up" + Updated the FETCH command to send the UID and SECTION parsed from the + URL. By default the BODY specifier doesn't include a section, BODY[] is + now sent whereas BODY[TEXT] was previously sent. In my opinion + retrieving just the message text is rarely useful when dealing with + emails, as the headers are required for example, so that functionality + is not retained. In can however be simulated by adding SECTION=TEXT to + the URL. - This reverts commit 46cd5f1daddad3b3e542e6d93eee52e8bb9a8687. + Also updated test801 and test1321 due to the BODY change. -- Revert "Fixed 'extra tokens at end of #endif directive'." - - This reverts commit 77172a242fc0c820f97eae39d0e3e0f265222fe6. +- email: Additional tidy up of comments following recent changes -- Revert "Fixed 'Trailing whitespace' found by checksrc." +- smtp: Removed some FTP heritage leftovers + + Removed user and passwd from the SMTP struct as these cannot be set on + a per-request basis and are leftover from legacy FTP code. - This reverts commit 683bfa60ad0b52505947e59b03515e5f44378523. + Changed some comments still using FTP terminology. -- Revert "sspi: Code tidy up to remove unused variable." +- smtp: Moved the per-request variables to the per-request data structure - This reverts commit 412510f97407d617426d93b80e6b6bf0a8ff11ac. + Moved the rcpt variable from the per-connection struct smtp_conn to the + new per-request struct and fixed references accordingly. -- Revert "Add -lversion if build with SSPI." +- pop3: Introduced a custom SMTP structure for per-request data - This reverts commit 9ec0b7e0c44d29eca6f45916fe5af3501168fe85. + Created a new SMTP structure and changed the type of the smtp proto + variable in connectdata from FTP* to SMTP*. -Guenter Knauf (23 Apr 2012) -- Add -lversion if build with SSPI. +unknown (23 Feb 2013) +- [Steve Holme brought this change] -Steve Holme (22 Apr 2012) -- sspi: Code tidy up to remove unused variable. + imap: Minor correction of comments for max line length -Guenter Knauf (22 Apr 2012) -- Fixed 'Trailing whitespace' found by checksrc. +Daniel Stenberg (23 Feb 2013) +- strcasestr: remove check for this unused function -- Fixed 'extra tokens at end of #endif directive'. +- pop3: fix compiler warning + + error: declaration of 'pop3' shadows a previous local -Steve Holme (22 Apr 2012) -- sspi - Small code tidy up +Steve Holme (23 Feb 2013) +- [Jiri Hruska brought this change] -- sspi: Added version information + imap: Added URL parsing of new variables - Added version information for Windows SSPI to curl's main version - string and removed SSPI from the features string. + Updated the imap_parse_url_path() function to parse uidvalidity, uid and + section parameters based on RFC-5092. -Daniel Stenberg (20 Apr 2012) -- HTTP: empty chunked POST ended up in two zero size chunks - - When doing a chunked-encoded POST with -d (CURLOPT_POSTFIELDS) and the - size of the POST was zero length, it made libcurl first send a zero - chunk and then the terminating one. This could confuse a receiver and it - should rather just send the terminating chunk as it does with this fix. - - Test case 1333 is added to verify. +- [Jiri Hruska brought this change] + + imap: Introduced imap_is_bchar() function - Bug: http://curl.haxx.se/mail/archive-2012-04/0060.html - Reported by: Arnaud Compan + Added imap_is_bchar() for testing if a given character is a valid bchar + or not. -Guenter Knauf (20 Apr 2012) -- Updated dependency lib versions. +- [Jiri Hruska brought this change] -Daniel Stenberg (19 Apr 2012) -- singleipconnect: return OK even when Curl_socket() fails + imap: Introduced new per-request veriables - Commit 9109cdec11ee5a brought this regression (shipped since 7.24.0). + Added uidvalidity, uid and section variables to the per-request IMAP + structure in preparation for upcoming URL parsing. + +- pingpong: Renamed curl_ftptransfer to curl_pp_transfer + +- pop3: Removed some FTP heritage leftovers - The singleipconnect() function must not return an error if Curl_socket() - returns an error. It should then simply return OK and pass a SOCKET_BAD - back simply because that is how the user of this function expects it to - work and something else is not fine. + Removed user and passwd from the POP3 struct as these cannot be set on + a per-request basis and are leftover from legacy FTP code. - Reported by: Blaise Potard - Bug: http://curl.haxx.se/bug/view.cgi?id=3516508 + Changed some comments still using FTP terminology. -Yang Tse (19 Apr 2012) -- Take in account that CURLAUTH_* bitmasks are now 'unsigned long' - follow-up +- pop3: Moved the per-request variables to the per-request data structure - MIPSPro compiler detected curl_easy_getinfo() related missing adjustments. - SunPro compiler detected curl tool --libcurl option related missing adjustments. + Moved the mailbox and custom request variables from the per-connection + struct pop3_conn to the new per-request struct and fixed references + accordingly. -- url.c: CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH fixes +- pop3: Introduced a custom POP3 structure for per-request data - Fail with CURLE_NOT_BUILT_IN when none of requested auth methods is supported. - - Reject CURLAUTH_ONLY bit when given alone or with CURLAUTH_NONE. + Created a new POP3 structure and changed the type of the pop3 proto + variable in connectdata from FTP* to POP*. + +- [Jiri Hruska brought this change] -- Take in account that CURLAUTH_* bitmasks are now 'unsigned long' + imap: Fixed escaping of mailbox names - Data type of internal vars holding CURLAUTH_* bitmasks changed from 'long' to - 'unsigned long' for proper handling and operating. + Used imap_atom() to escape mailbox names in imap_select(). -- curl.h: CURLAUTH_* bitmasks adjusted to become 'unsigned long' typed +- pingpong: Moved curl_ftptransfer definition to pingpong.h - Info: http://curl.haxx.se/mail/lib-2012-04/0170.html + Moved the ftp transfer structure into pingpong.h so other protocols that + require it don't have to include ftp.h. -- Some explicit conversion to 'long' of curl_easy_setopt() third argument +- urldata.h: Fixed comment for opt_no_body variable - Explicit conversion to 'long' of curl_easy_setopt() third argument for options - CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH given that this is how its bitmasks are - docummented to be used. + Corrected comment for opt_no_body variable to CURLOPT_NOBODY. -- build adjustments: commit 9e24b9c7 follow-up +- email: Minor tidy up following IMAP changes -Daniel Stenberg (17 Apr 2012) -- -# progress meter: avoid superfluous updates and duplicate lines - - By comparing if a different "progress point" is reached or not since the - previous update, the progress function callback for this now avoids many - superfluous screen updates. This has the nice side-effect that it fixes - a problem that causes a second progress meter line. - - The second line output happened because when we use the -# progress - meter, we force a newline output after the transfer in the main loop in - curl, but when libcurl calls the progress callback from - curl_easy_cleanup() it would then output the progress display - again. Possibly the naive newline output is wrong but this optimization - was suitable anyway... +- [Jiri Hruska brought this change] + + imap: Removed more FTP leftovers - Reported by: Daniel Theron - Bug: http://curl.haxx.se/bug/view.cgi?id=3517418 + Changed some variables and comments still using FTP terminology. -Yang Tse (16 Apr 2012) -- nss.c: fix compiler warning +- [Jiri Hruska brought this change] -- curl-compilers.m4: -Wno-pedantic-ms-format for Windows gcc 4.5 builds + imap: Removed some FTP heritage leftovers - When building a Windows target with gcc 4.5 or newer and strict compiler - warnings enabled use -Wno-pedantic-ms-format in addition to other flags. + Removed user and passwd from the IMAP struct as these cannot be set on + a per-request basis and are leftover from legacy FTP code. -Kamil Dudka (16 Apr 2012) -- tests/valgrind.pm: suppress memleaks of NSS_InitContext() - - Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=745224 +- [Jiri Hruska brought this change] -Yang Tse (14 Apr 2012) -- setup_once.h: tighten requirements for stdbool.h header inclusion + imap: Introduced a custom IMAP structure for per-request data - Include stdbool.h only when it is available and configure is capable of - detecting a proper 'bool' data type when the header is included. + Created a new IMAP structure and changed the type of the imap proto + variable in connectdata from FTP* to the new IMAP*. - Compilation fix for old or unpatched versions of XL C compiler. + Moved the mailbox variable from the per-connection struct imap_conn to + the new per-request struct and fixed references accordingly. + +- pop3: Updated do phrase clean-up comment - Report: http://curl.haxx.se/mail/archive-2012-04/0022.html + Following commit 65644b833532 for the IMAP module updated the clean-up + comment in POP3. -- headers: require GCC 2.7 or newer in order to allow attribute GCC'isms usage +- imap: Fixed memory leak when performing multiple selects - Usage in other code paths already protected and requiring even newer versions. + Moved the clean-up of the mailbox variable from imap_disconnect() to + imap_done() as this variable is allocated in the do phase, yet would + have only been freed only once if multiple selects where preformed + on a single connection. -- [Jonathan Nieder brought this change] +Daniel Stenberg (22 Feb 2013) +- [Alexander Klauer brought this change] - headers: surround GCC attribute names with double underscores - - This protects from attribute names being defined by third party's code. + Documentation: Typo in docs/CONTRIBUTE - Improvement: http://curl.haxx.se/mail/lib-2012-04/0127.html + Fixes a typo get → git in docs/CONTRIBUTE. -Guenter Knauf (13 Apr 2012) -- Updated copyright year. +- [Alexander Klauer brought this change] -Yang Tse (13 Apr 2012) -- testcurl.pl: build example programs for Android cross-compiles + repository: ignore patch files generated by git + + Ignores the patch files generated by the 'git format-patch' command. -- nss.c: fix compiler warning +- [Alexander Klauer brought this change] -- examples: fix compiler warnings + libcurl documentation: clarifications and typos + + * Elaborates on default values of some curl_easy_setopt() options. + * Reminds the user to cast variadic arguments to curl_easy_setopt() to + 'void *' where curl internally interprets them as such. + * Clarifies the working of the CURLOPT_SEEKFUNCTION option for + curl_easy_setopt(). + * Fixes typo 'forth' → 'fourth'. + * Elaborates on CURL_SOCKET_TIMEOUT. + * Adds some missing periods. + * Notes that the return value of curl_version() must not be passed to + free(). -Kamil Dudka (13 Apr 2012) -- nss: provide human-readable names for NSS errors +- [Alexander Klauer brought this change] -- nss: use NSS_InitContext() to initialize NSS if available + lib/url.c: Generic read/write data pointers - NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent - collisions on NSS initialization/shutdown with other libraries. - - Bug: https://bugzilla.redhat.com/738456 + Always interprets the pointer passed with the CURLOPT_WRITEDATA or + CURLOPT_READDATA options of curl_easy_setopt() as a void pointer in + order to avoid problems in environments where FILE and void pointers + have non-trivial conversion. + +- [Alexander Klauer brought this change] -- nss: unconditionally require PK11_CreateGenericObject() + libcurl documentation: updates HTML index - This bumps the minimal supported version of NSS to 3.12.x. + * Adds several links to documentation of library functions which were + missing. + * Marks documentation of deprecated library functions "(deprecated)". + * Removes spurious .html suffixes. -Guenter Knauf (13 Apr 2012) -- Set batch mode to 755 to make Cygwin git pulls work. +- ossl_seed: avoid recursive seeding! -- Added section for Android configure cross-compile. +Steve Holme (22 Feb 2013) +- [Jiri Hruska brought this change] -- Added NetWare export. + Fixed checking the socket if there is data waiting in the cache + + Use Curl_pp_moredata() in Curl_pp_multi_statemach() to check if there is + more data to be received, rather than the socket state, as a task could + hang waiting for more data from the socket itself. -Yang Tse (12 Apr 2012) -- testcurl.pl: build example programs for MinGW cross-compiles +- imap.c: Fixed an incorrect variable reference + + Fixed an incorrect variable reference which was introduced in commit + a1701eea289f as a result of a copy and paste from SMTP/POP3. -- tool_operate.c: fix compiler warning +- [Jiri Hruska brought this change] -- url.c: fix compiler warning + pingpong: Introduce Curl_pp_moredata() + + A simple function to test whether the PP is not sending and there are + still more data in its receiver cache. This will be later utilized to: + + 1) Change Curl_pp_multi_statemach() and Curl_pp_easy_statemach() to + not test socket state and just call user's statemach_act() function + when there are more data to process, because otherwise the task would + just hang, waiting for more data from the socket. + + 2) Allow PP users to read multiple responses by looping as long as there + are more data available and current phase is not finished. + (Currently needed for correct processing of IMAP SELECT responses.) -Guenter Knauf (12 Apr 2012) -- Updated dependency lib versions (2nd try). +Nick Zitzmann (19 Feb 2013) +- FEATURES: why yes, we do support metalink + + I just noticed Metalink support wasn't listed as a feature of the tool. -- Updated dependency lib versions. +- metalink: fix improbable crash parsing metalink filename + + The this_url pointer wasn't being initialized, so if strdup() would return + null when copying the filename in a metalink file, then hilarity would + ensue during the cleanup phase. This change was brought to you by clang, + which noticed this and raised a warning. -Yang Tse (12 Apr 2012) -- tool_formparse.c: rename a couple of vars to avoid declaration shadowing +Yang Tse (19 Feb 2013) +- smtp.c: fix enumerated type mixed with another type -- OS400/initscript.sh: fix db2_name() module name generation +- polarssl threadlock cleanup + +Nick Zitzmann (18 Feb 2013) +- docs: schannel and darwinssl documentation improvements - Allow repeatable file name length reduction on file names with underscore or - dash characters. This is done in order to better support libcurl's existing - source file names and allow OS/400 package to build out of the box again. + Schannel and darwinssl use the certificates built into the + OS to do vert verification instead of bundles. darwinssl + is thread-safe. Corrected typos in the NSS docs. -- testcurl.pl: log more environment vars that modify configure and build behavior +Daniel Stenberg (18 Feb 2013) +- resolver_error: remove wrong error message output + + The attempt to use gai_strerror() or alternative function didn't work as + the 'sock_error' field didn't contain the proper error code. But since + this hasn't been reported and thus isn't really a big deal I decided to + just scrap the whole attempt to output the detailed resolver error and + instead remain with just stating that the resolving of the name failed. -- configure: NATIVE_WINDOWS no longer defined in config files +- [Kim Vandry brought this change] -- build adjustments: CURL_HIDDEN_SYMBOLS no longer defined in config files - - configure script now provides conditional definitions for Makefile.am - that result in CURL_HIDDEN_SYMBOLS being defined by resulting makefiles - when appropriate. + Curl_resolver_is_resolved: show proper host name on failed resolve + +- Curl_resolver_is_resolved: fix compiler warning - Additionally, configure script option for symbol hiding control is now - named --enable-symbol-hiding --disable-symbol-hiding. While still valid, - old option name --enable-hidden-symbols --disable-hidden-symbols will - be deprecated in some future release. + conversion to 'int' from 'long int' may alter its value -- build adjustments: functionally revert commits 4d3fb91f and bbfe1182 +- compiler warning fix - Undefining CURL_HIDDEN_SYMBOLS in source files isn't the proper fix. + follow-up to commit ed7174c6f66, rename 'wait' to 'block' -- test servers: build adjustment +- compiler warning fix: declaration of 'wait' shadows a global declaration + + It seems older gcc installations (at least) will cause warnings if we + name a variable 'wait'. Now changed to 'block' instead. - Undefine CURL_HIDDEN_SYMBOLS libcurl private preprocessor macro that might - leak from lib/setup.h into source files where this should not be defined. + Reported by: Jiří Hruška + Bug: http://curl.haxx.se/mail/lib-2013-02/0247.html -- libtests: build adjustment +Nick Zitzmann (17 Feb 2013) +- MacOSX-Framework: Make script work in Xcode 4.0 and later - Undefine CURL_HIDDEN_SYMBOLS libcurl private preprocessor macro that might - leak from lib/setup.h into source files where this should not be defined. + Apple made a number of changes to Xcode 4. The SDKs were moved, the entire + Developer folder was moved, and PowerPC support was removed. The script + will now adapt to those changes and should be future-proofed against + additional changes in case Apple moves the Developer folder ever again. + Also, the minimum OS X version compiler option was removed, so that the + framework can be built against the latest SDK but still run in older cats. -- curl tool: make setup.h first header included in tool_setup.h again +Daniel Stenberg (17 Feb 2013) +- docs: refer to CURLOPT_ACCEPT_ENCODING instead of the old name -- curl tool: use configuration files from lib directory - follow-up II +Steve Holme (16 Feb 2013) +- email: Tidied up result code variables - lib/config-win32.h no longer copied to src/config-win32.h + Tidied up result variables to be consistent in name, declaration order + and default values. -- configure: Windows cross-compilation fixes +Nick Zitzmann (16 Feb 2013) +- ntlm_core: fix compiler warning when building with clang - BUILDING_LIBCURL and CURL_STATICLIB are no longer defined in curl_config.h, - configure will generate appropriate conditionals so that mentioned symbols - get defined and used in Makefiles at compilation time + Fixed a 64-to-32 compiler warning raised when building with + clang and the --with-darwinssl option. -- curl tool: make curl.h first header included in tool_setup.h +Daniel Stenberg (16 Feb 2013) +- Guile-curl: a new libcurl binding -- curl tool: use configuration files from lib directory - follow-up I +- polarsslthreadlock: #include the proper memory and debug includes - amigaos.[ch] now integrates nicely with any libcurl build + Pointed out by Steve Holme -- curl tool: use configuration files from lib directory - - Configuration files such as curl_config.h and all config-*.h no longer exist - nor are generated/copied into 'src' directory, now these only exist in 'lib' - directory from where curl tool sources uses them. - - Additionally old src/setup.h has been refactored into src/tool_setup.h which - now pulls lib/setup.h +Steve Holme (16 Feb 2013) +- email: Removed unnecessary forward declaration - The possibility of a makefile needing an include path adjustment exists. + Due to the reordering of functions in commit 586f5d361474 the forward + declaration to state_upgrade_tls() are no longer required. -Daniel Stenberg (6 Apr 2012) -- PolarSSL: correct return code for CRL matches - - When a server certificate matches one in the given CRL file, the code - now returns CURLE_SSL_CACERT as test case 313 expects and verifies. +- pop3.c: Added reference to RFC-5034 + +Daniel Stenberg (15 Feb 2013) +- [Willem Sparreboom brought this change] -- PolarSSL: include version number in version string + PolarSSL: Change to cURL coding style - Previously it would say PolarSSL only, now it says PolarSSL/1.1.0 in the - same style other libs and components do. + Repaired all curl/lib/checksrc.pl warnings in the previous four patches -- test: added test 1332 that tests --post303 +- [Willem Sparreboom brought this change] -- curl: add --post303 to set the CURL_REDIR_POST_303 option + PolarSSL: WIN32 threading support for entropy + + Added WIN32 threading support for PolarSSL entropy if + --enable-threaded-resolver config flag is set and process.h can be found. -- [Andrei Cipu brought this change] +- [Willem Sparreboom brought this change] - CURLOPT_POSTREDIR: also allow 303 to do POST on the redirected URL + PolarSSL: pthread support for entropy - As it turns out, some people do want that after all. + Added pthread support for polarssl entropy if --enable-threaded-resolver + config flag is set and pthread.h can be found. -- test1331: cookies on a 407 response +- [Willem Sparreboom brought this change] + + PolarSSL: changes to entropy/ctr_drbg/HAVEGE_RANDOM - Verify that cookies are sent back even after a 407 response has been - received + Add non-threaded entropy and ctr_drbg and removed HAVEGE_RANDOM define -- [Dag Ekengren brought this change] +- [Willem Sparreboom brought this change] - PolarSSL: add support for asynchronous connect + PolarSSL: added human readable error strings + + Print out human readable error strings for PolarSSL related errors -- [Tim Heckman brought this change] +Steve Holme (15 Feb 2013) +- pop3: Removed unnecessary state changes on failure - Revert "access the CA source file using HTTPS" - - This reverts commit f7e2ab6. - - This change caused fetching of the certificates to become unreliable. - - Bug: http://curl.haxx.se/mail/lib-2012-03/0238.html - Reported by: Tim Heckman +- imap: Removed unnecessary state change on failure -- [Andrei Cipu brought this change] +Daniel Stenberg (15 Feb 2013) +- metalink_cleanup: yet another follow-up fix - IPv6 cookie domain: get rid of the first bracket before the second. +- metalink_cleanup: define it without argument - Commit 97b66ebe was copying a smaller buffer, thus duplicating the last - character. + Since the function takes no argument, the macro shouldn't take one as + some compilers will error out on that. -- MAIL-ETIQUETTE: Added "How to unsubscribe" +- rename "easy" statemachines: call them block instead - ... as it seems to hard for some people + ... since they're not used by the easy interface really, I wanted to + remove the association. Also, I unified the pingpong statemachine driver + into a single function with a 'wait' argument: Curl_pp_statemach. -Yang Tse (4 Apr 2012) -- ftp.c: ftplistparser related OOM handling fix +Yang Tse (15 Feb 2013) +- [Gisle Vanem brought this change] -- smtp.c: fix compiler warnings + curl_setup_once.h: definition of HAVE_CLOSE_S defines sclose() to close_s() -- lib599.c: fix compiler warning +- [Gisle Vanem brought this change] -Daniel Stenberg (4 Apr 2012) -- runtests: yassl and polarssl are not openssl - - Don't set the "has_openssl" variable if yassl or polarssl is found as - they will simply not work as 100% drop-in replacements for some of the - stuff the "OpenSSL" feature is used for. - - I spotted this problem when doing test runs with PolarSSL builds. + config-dos.h: define HAVE_CLOSE_S for MSDOS/Watt-32 -- [Lijo Antony brought this change] +- [Gisle Vanem brought this change] - connect.c: return changed to CURLE_COULDNT_CONNECT when opensocket fails - - Curl_socket returns CURLE_COULDNT_CONNECT when the opensocket callback - returns CURL_SOCKET_BAD. Previous return value CURLE_FAILED_INIT - conveys incorrect information to the user. + config-dos.h: define strerror() to strerror_s_() for High-C -Steve Holme (2 Apr 2012) -- pop3: Reworked the command sending and handling - - Reworked the command sending from two specific LIST and RETR command - functions into a single command based function as well as the two - associated response handlers into a generic command handler. +- [Gisle Vanem brought this change] -Daniel Stenberg (1 Apr 2012) -- [Dave Reisner brought this change] + config-dos.h: define HAVE_TERMIOS_H only for djgpp - curl tool: add filename_effective token for --write-out +Steve Holme (14 Feb 2013) +- smtp.c: Fixed a trailing whitespace - By modifying the parameter list for ourWriteOut() and passing the - OutStruct that collects data in tool_operate, we get access to the - remote name that we're writing to. Shell scripters should find this - useful when used in conjuntion with the --remote-header-name option. + Remove tailing whitespace introduced in commit 7ed689d24a4e. -Steve Holme (1 Apr 2012) -- smtp.c: Code policing and tidy up - -Daniel Stenberg (1 Apr 2012) -- [Armel Asselin brought this change] +- pop3: Fixed blocking SSL connect when connecting via POP3S + + A call to Curl_ssl_connect() was accidentally left in when the SSL/TLS + connection layer was reworked in 7.29. Not only would this cause the + connection to block but had the additional overhead of calling the + non-blocking connect a little bit later. - SSH: public key can now be an empty string +- smtp: Refactored the smtp_state_auth_resp() function - If an empty string is passed to CURLOPT_SSH_PUBLIC_KEYFILE, libcurl will - pass no public key to libssh2 which then tries to compute it from the - private key. This is known to work when libssh2 1.4.0+ is linked against - OpenSSL. + Renamed smtp_state_auth_resp() function to match the implementations in + IMAP and POP3. -- [Tatsuhiro Tsujikawa brought this change] +Daniel Stenberg (14 Feb 2013) +- remove ifdefs + + Clarify the code by reducing ifdefs - OpenSSL: Made cert hostname check conform to RFC 6125 +- strlcat: remove function - This change replaces RFC 2818 based hostname check in OpenSSL build with - RFC 6125 [1] based one. + This function was only used twice, both in places where performance + isn't crucial (socks + if2ip). Removing the use of this function removes + the need to have our private version for systems without it == reduced + amount of code. - The hostname check in RFC 2818 is ambiguous and each project implements - it in the their own way and they are slightly different. I check curl, - gnutls, Firefox and Chrome and they are all different. + Also, in the SOCKS case it is clearly better to fail gracefully rather + than to truncate the results. - I don't think there is a bug in current implementation of hostname - check. But it is not as strict as the modern browsers do. Currently, - curl allows multiple wildcard character '*' and it matches '.'. (as - described in the comment in ssluse.c). + This work was triggered by a bug report on the strcal prototype in + strequal.h. - Firefox implementation is also based on RFC 2818 but it only allows at - most one wildcard character and it must be in the left-most label in the - pattern and the wildcard must not be followed by any character in the - label.[2] Chromium implementation is based on RFC 6125 as my patch does. - Firefox and Chromium both require wildcard in the left-most label in the - presented identifier. + strlcat was added in commit db70cd28 in February 2001! - This patch is more strict than the current implementation, so there may - be some cases where old curl works but new one does not. But at the same - time I think it is good practice to follow the modern browsers do and - follow the newer RFC. + Bug: http://curl.haxx.se/bug/view.cgi?id=1192 + Reported by: Jeremy Huddleston + +- Curl_FormBoundary: made static - [1] http://tools.ietf.org/html/rfc6125#section-6.4.3 - [2] https://bugzilla.mozilla.org/show_bug.cgi?id=159483 + As Curl_FormBoundary() is no longer used outside of this file (since + commit ad7291c1a9d), it is now renamed to formboundary() and is made + static. -- HTTP: reset expected DL/UL sizes on redirects +- ossl_seed: fix the last resort PRNG seeding + + Instead of just abusing the pseudo-randomizer from Curl_FormBoundary(), + this now uses Curl_ossl_random() to get entropy. + +Steve Holme (13 Feb 2013) +- email: Tidy up before additional IMAP work + + Replaced two explicit comparisons of CURLE_OK with boolean alternatives. - With FOLLOWLOCATION enabled. When a 3xx page is downloaded and the - download size was known (like with a Content-Length header), but the - subsequent URL (transfered after the 3xx page) was chunked encoded, then - the previous "known download size" would linger and cause the progress - meter to get incorrect information, ie the former value would remain - being sent in. This could easily result in downloads that were WAY - larger than "expected" and would cause >100% outputs with the curl - command line tool. + General tidy up of comments. + +- smtp: Removed duplicate pingpong structure initialisation - Test case 599 was created and it was used to repeat the bug and then - verify the fix. + The smtp_connect() function was setting the member variables of the + pingpong structure twice, once before calling Curl_pp_init() and once + after! + +Yang Tse (13 Feb 2013) +- move msvc IDE related files to 'vs' directory tree - Bug: http://curl.haxx.se/bug/view.cgi?id=3510057 - Reported by: Michael Wallner + Use 'vs' directory tree given that 'vc' intended one clashes + with an already existing build target in file Makefile.dist. -Steve Holme (31 Mar 2012) -- [Gökhan Şengün brought this change] +Daniel Stenberg (13 Feb 2013) +- install-sh: updated to support multiple source files as arguments + + Version 7.29.0 uses Makefiles generated with a newer version of the + autotools than the previous 7.28.1. These Makefiles try to install + e.g. header files by calling install-sh with multiple source files as + arguments. The bundled install-sh is to old and does not support this. + + The problem only occurs, if install-sh is actually being used, ie. the + platform install executable is to old or not usable. Example: Solaris + 10. + + The files install-sh and mkinstalldirs are now updated with the automake + 1.11.3 versions. A better fix might be to completely remove them from + git and force the files to be added/created during buildconf. + + Bug: http://curl.haxx.se/bug/view.cgi?id=1195 + Reported by: Rainer Jung - smtp: Add support for DIGEST-MD5 authentication +Yang Tse (13 Feb 2013) +- move msvc IDE related files to 'vc' directory tree -- [Gökhan Şengün brought this change] +- msvc IDE 'vc' directory tree preparation - smtp: Cody tidy up of md5 digest length +Steve Holme (12 Feb 2013) +- imap: Corrected a whitespace issue from previous commit - Replaced the hard coded md5 digest length (16) with a preprocessor - constant + Fixed a small whitespace issue that crept in there in commit + 508cdf4da4d7. -- [Gökhan Şengün brought this change] +- email: Another post optimisation of endofresp() tidy up - md5: Add support for calculating the md5 sum of buffers incrementally +- sasl: Fixed null pointer reference when decoding empty digest challenge + + Fixed a null pointer reference when an empty challenge is passed to the + Curl_sasl_create_digest_md5_message() function. - It is now possible to calculate the md5 sum as the stream of buffers - becomes known where as previously it was only possible to calculate the - md5 sum of a pre-prepared buffer. + Bug: http://sourceforge.net/p/curl/bugs/1193/ + Reported by: Saran Neti -Daniel Stenberg (31 Mar 2012) -- Revert "mk-ca-bundle.pl: use LWP::UserAgent for https" +- email: Post optimisation of endofresp() tidy up - This reverts commit 9f0e1689f169b83b8fbdae23e0024cc57dcbc770. + Removed unnecessary end of line check and return. + +Nick Zitzmann (12 Feb 2013) +- darwinssl: Fix send glitchiness with data > 32 or so KB - It turned out that "improvement" instead made the fetching of the - certificates unreliable + An ambiguity in the SSLWrite() documentation lead to a bad inference in the + code where we assumed SSLWrite() returned the amount of bytes written to + the socket, when that is not actually true; it returns the amount of data + that is buffered for writing to the socket if it returns errSSLWouldBlock. + Now darwinssl_send() returns CURLE_AGAIN if data is buffered but not written. - Bug: http://curl.haxx.se/mail/lib-2012-03/0238.html - Reported by: Tim Heckman + Reference URL: http://curl.haxx.se/mail/lib-2013-02/0145.html -Steve Holme (31 Mar 2012) -- DOCS: Added information regarding POP3 commands to CURLOPT_CUSTOMREQUEST +Steve Holme (12 Feb 2013) +- pingpong.h: Fixed line length over 78 characters from b56c9eb48e3c -- pop3: Added support for additional pop3 commands +- pingpong: Optimised the endofresp() function + + Reworked the pp->endofresp() function so that the conndata, line and + line length are passed down to it just as with Curl_client_write() + rather than each implementation of the function having to query + these values. - This feature allows the user to specify and use additional POP3 - commands such as UIDL and DELE via libcurl's CURLOPT_CUSTOMREQUEST or - curl's -X command line option. + Additionally changed the int return type to bool as this is more + representative of the function's usage. -Yang Tse (30 Mar 2012) -- [tetetest tetetest brought this change] +- email: Post STARTLS capability code tidy up (Part Three) + + Corrected the order of the upgrade_tls() functions and moved the handler + upgrade and getsock() functions out from the middle of the state related + functions. - CMakeLists.txt: fix Windows LDAP/LDAPS option handling +- email: Post STARTLS capability code tidy up (Part Two) - bug: http://curl.haxx.se/mail/lib-2012-03/0278.html + Corrected the order of the pop3_state_capa() / imap_state_capability() + and the pop3_state_capa_resp() / imap_state_capability_resp() functions + to match the execution order. -- [tetetest tetetest brought this change] +Daniel Stenberg (11 Feb 2013) +- [ulion brought this change] - CMakeLists.txt: fix MS Visual Studio x64 unsigned long long literal suffix + SOCKS: fix socks proxy when noproxy matched + + Test 1212 added to verify - bug: http://curl.haxx.se/mail/lib-2012-03/0255.html + Bug: http://curl.haxx.se/bug/view.cgi?id=1190 -Steve Holme (28 Mar 2012) -- TODO: Corrected POP3 section heading +Steve Holme (11 Feb 2013) +- ntlm: Updated comments for the addition of SASL support to IMAP in v7.29 -Yang Tse (28 Mar 2012) -- curl-functions.m4: update detection logic of getaddrinfo() thread-safeness +- RELEASE-NOTES: Updated following the recent imap/pop3/smtp changes + +Linus Nielsen Feltzing (10 Feb 2013) +- Fix NULL pointer reference when closing an unused multi handle. + +Steve Holme (10 Feb 2013) +- email: Post STARTLS capability code tidy up (Part One) - Take in account that h_errno might be a modifiable lvalue not defined as - a C preprocessor macro + Corrected the order of the CAPA / CAPABILITY state machine constants to + match the execution order. -Steve Holme (27 Mar 2012) -- TODO: Added SMTP and POP3 specific features +- imap: Fixed memory leak following commit f6010d9a0359 -Yang Tse (27 Mar 2012) -- [Olaf Flebbe brought this change] +- smtp: Added support for the STARTTLS capability (Part Two) + + Added honoring of the tls_supported flag when starting a TLS upgrade + rather than unconditionally attempting it. If the use_ssl flag is set + to CURLUSESSL_TRY and the server doesn't support TLS upgrades then the + connection will continue to authenticate. If this flag is set to + CURLUSESSL_ALL then the connection will complete with a failure as it + did previously. - tool_cb_dbg.c: fix tool_cb_dbg() to behave properly even for size 0 +- pop3: Added support for the STLS capability (Part Three) - curl segfault in debug callback triggered with CURLINFO_HEADER_OUT and size 0 + Added honoring of the tls_supported flag when starting a TLS upgrade + rather than unconditionally attempting it. If the use_ssl flag is set + to CURLUSESSL_TRY and the server doesn't support TLS upgrades then the + connection will continue to authenticate. If this flag is set to + CURLUSESSL_ALL then the connection will complete with a failure as it + did previously. + +- imap: Added support for the STARTTLS capability (Part Three) - bug: http://curl.haxx.se/bug/view.cgi?id=3511794 + Added honoring of the tls_supported flag when starting a TLS upgrade + rather than unconditionally attempting it. If the use_ssl flag is set + to CURLUSESSL_TRY and the server doesn't support TLS upgrades then the + connection will continue to authenticate. If this flag is set to + CURLUSESSL_ALL then the connection will complete with a failure as it + did previously. -- test #1405: support HTTP disabled builds +Daniel Stenberg (10 Feb 2013) +- [Alessandro Ghedini brought this change] -Steve Holme (26 Mar 2012) -- test #809: Updated error code to match recent pop3 changes + htmltitle: fix suggested build command -Yang Tse (25 Mar 2012) -- ssh.c: code cleanup, Curl_safefree() already nullifies pointer +Steve Holme (10 Feb 2013) +- pop3: Added support for the STLS capability (Part Two) + + Added sending of initial CAPA command before STLS is sent. This allows + for the detection of the capability before trying to upgrade the + connection. -- fix some compiler warnings +- imap: Added support for the STARTTLS capability (Part Two) + + Added sending of initial CAPABILITY command before STARTTLS is sent. + This allows for the detection of the capability before trying to + upgrade the connection. -Steve Holme (25 Mar 2012) -- pop3.c: Corrected problem with state() introduced in 01690ed2bce5 +- smtp: Added support for the STLS capability (Part One) + + Introduced detection of the STARTTLS capability, in order to add support + for TLS upgrades without unconditionally sending the STARTTLS command. -- pop.c: Small code tidy up +- pop3: Added support for the STLS capability (Part One) + + Introduced detection of the STLS capability, in order to add support + for TLS upgrades without unconditionally sending the STLS command. -- pop3: Removed the need for the single message LIST command handler +- imap: Added support for the STARTTLS capability (Part One) - Simplified the code to remove the need for a separate "LIST <msg id>" - command handler and state machine and instead use the LIST command - handler for both operations. + Introduced detection of the STARTTLS capability, in order to add support + for TLS upgrades without unconditionally sending the STARTTLS command. |