summaryrefslogtreecommitdiff
path: root/lib/urldata.h
Commit message (Collapse)AuthorAgeFilesLines
* - Toshio Kuratomi reported a memory leak problem with libcurl+NSS that turnedDaniel Stenberg2009-04-131-0/+5
| | | | | | | | out to be leaking cacerts. Kamil Dudka helped me complete the fix. The issue is found in Redhat's bug tracker: https://bugzilla.redhat.com/show_bug.cgi?id=453612 There are still memory leaks present, but they seem to have other reasons.
* - David Kierznowski notified us about a security flawcurl-7_19_4Daniel Stenberg2009-03-021-13/+22
| | | | | | | | | | | | | | | | | | | (http://curl.haxx.se/docs/adv_20090303.html also known as CVE-2009-0037) in which previous libcurl versions (by design) can be tricked to access an arbitrary local/different file instead of a remote one when CURLOPT_FOLLOWLOCATION is enabled. This flaw is now fixed in this release together this the addition of two new setopt options for controlling this new behavior: o CURLOPT_REDIR_PROTOCOLS controls what protocols libcurl is allowed to follow to when CURLOPT_FOLLOWLOCATION is enabled. By default, this option excludes the FILE and SCP protocols and thus you nee to explicitly allow them in your app if you really want that behavior. o CURLOPT_PROTOCOLS controls what protocol(s) libcurl is allowed to fetch using the primary URL option. This is useful if you want to allow a user or other outsiders control what URL to pass to libcurl and yet not allow all protocols libcurl may have been built to support.
* - Linus Nielsen Feltzing reported and helped me repeat and fix a problem withDaniel Stenberg2009-02-201-0/+4
| | | | | | | | | | FTP with the multi interface: when a transfer fails, like when aborted by a write callback, the control connection was wrongly closed and thus not re-used properly. This change is also an attempt to cleanup the code somewhat in this area, as now the FTP code attempts to keep (better) track on pending responses necessary to get read in ftp_done().
* - CURLOPT_FTP_CREATE_MISSING_DIRS can now be set to 2 in addition to 1 forDaniel Stenberg2009-02-171-1/+4
| | | | | | | | | | | | | | plain FTP connections, and it will then allow MKD to fail once and retry the CWD afterwards. This is especially useful if you're doing many simultanoes connections against the same server and they all have this option enabled, as then CWD may first fail but then another connection does MKD before this connection and thus MKD fails but trying CWD works! The numbers can (should?) now be set with the convenience enums now called CURLFTP_CREATE_DIR and CURLFTP_CREATE_DIR_RETRY. Tests has proven that if you're making an application that uploads a set of files to an ftp server, you will get a noticable gain in speed if you're using multiple connections and this option will be then be very useful.
* - CURLINFO_CONDITION_UNMET was added to allow an application to get to know ifDaniel Stenberg2009-02-111-0/+2
| | | | | | | the condition in the previous request was unmet. This is typically a time condition set with CURLOPT_TIMECONDITION and was previously not possible to reliably figure out. From bug report #2565128 (http://curl.haxx.se/bug/view.cgi?id=2565128)
* Introduced curl_sspi.c and curl_sspi.h for the implementation of functionsYang Tse2009-01-291-7/+1
| | | | | | | Curl_sspi_global_init() and Curl_sspi_global_cleanup() which previously were named Curl_ntlm_global_init() and Curl_ntlm_global_cleanup() in http_ntlm.c Also adjusted socks_sspi.c to remove the link-time dependency on the Windows SSPI library using it now in the same way as it was done in http_ntlm.c.
* - Markus Moeller introduced two new options to libcurl:Daniel Stenberg2009-01-281-0/+9
| | | | | | | CURLOPT_SOCKS5_GSSAPI_SERVICE and CURLOPT_SOCKS5_GSSAPI_NEC to allow libcurl to do GSS-style authentication with SOCKS5 proxies. The curl tool got the options called --socks5-gssapi-service and --socks5-gssapi-nec to enable these.
* - Chad Monroe provided the new CURLOPT_TFTP_BLKSIZE option that allows an appDaniel Stenberg2009-01-261-1/+3
| | | | | to set desired block size to use for TFTP transfers instead of the default 512 bytes.
* - Craig A West brought CURLOPT_NOPROXY and the corresponding --noproxy option.Daniel Stenberg2009-01-251-0/+2
| | | | | | They basically offer the same thing the NO_PROXY environment variable only offered previously: list a set of host names that shall not use the proxy even if one is specified.
* spell-checked a bunch of commentsDaniel Stenberg2009-01-131-11/+11
|
* Created a CURLMIN macro to match CURLMAXDan Fandrich2009-01-071-1/+3
|
* - Using the libssh2 0.19 function libssh2_session_block_directions(), libcurlDaniel Stenberg2008-12-191-0/+9
| | | | | | | now has an improved ability to do right when the multi interface (both "regular" and multi_socket) is used for SCP and SFTP transfers. This should result in (much) less busy-loop situations and thus less CPU usage with no speed loss.
* - Internet Explorer had a broken HTTP digest authentication before v7 andDaniel Stenberg2008-12-101-1/+2
| | | | | | | | | | | | | | there are servers "out there" that relies on the client doing this broken Digest authentication. Apache even comes with an option to work with such broken clients. The difference is only for URLs that contain a query-part (a '?'-letter and text to the right of it). libcurl now supports this quirk, and you enable it by setting the CURLAUTH_DIGEST_IE bit in the bitmask you pass to the CURLOPT_HTTPAUTH or CURLOPT_PROXYAUTH options. They are thus individually controlled to server and proxy.
* - Christian Krause filed bug #2221237Daniel Stenberg2008-12-081-0/+3
| | | | | | | (http://curl.haxx.se/bug/view.cgi?id=2221237) that identified an infinite loop during GSS authentication given some specific conditions. With his patience and great feedback I managed to narrow down the problem and eventually fix it although I can't test any of this myself!
* explain the two *channel_inuse fields somewhat betterDaniel Stenberg2008-12-021-0/+4
|
* - Bug #2218480 (http://curl.haxx.se/bug/view.cgi?id=2218480) pointed out aDaniel Stenberg2008-11-031-4/+3
| | | | | | | problem with my CURLINFO_PRIMARY_IP fix from October 7th that caused a NULL pointer read. I also took the opportunity to clean up this logic (storing of the connection's IP address) somewhat as we had it stored in two different places and ways previously and they are now unified.
* fix length of longest IPv6 address stringYang Tse2008-11-031-1/+2
|
* Added experimental support for zlib and OpenSSL on Symbian OS.Dan Fandrich2008-10-251-0/+4
|
* remove some spurious line-endingsYang Tse2008-10-171-2/+2
|
* - Igor Novoseltsev added CURLOPT_PROXYUSER and CURLOPT_PROXYPASSWORD that thenDaniel Stenberg2008-10-161-1/+2
| | | | | | make CURLOPT_PROXYUSERPWD sort of deprecated. The primary motive for adding these new options is that they have no problems with the colon separator that the CURLOPT_PROXYUSERPWD option does.
* - Igor Novoseltsev brought a patch that introduced two new options toDaniel Stenberg2008-10-081-1/+2
| | | | | | | curl_easy_setopt: CURLOPT_USERNAME and CURLOPT_PASSWORD that sort of deprecates the good old CURLOPT_USERPWD since they allow applications to set the user name and password independently and perhaps more importantly allow both to contain colon(s) which CURLOPT_USERPWD doesn't fully support.
* Improved the logic the decides whether to use HTTP 1.1 features or not in aDan Fandrich2008-09-051-3/+6
| | | | | | | request. Detect cases where an upload must be sent chunked and the server supports only HTTP 1.0 and return CURLE_UPLOAD_FAILED.
* - Martin Drasar provided the CURLOPT_POSTREDIR patch. It renamesDaniel Stenberg2008-09-051-0/+1
| | | | | | | | | CURLOPT_POST301 (but adds a define for backwards compatibility for you who don't define CURL_NO_OLDIES). This option allows you to now also change the libcurl behavior for a HTTP response 302 after a POST to not use GET in the subsequent request (when CURLOPT_FOLLOWLOCATION is enabled). I edited the patch somewhat before commit. The curl tool got a matching --post302 option. Test case 1076 was added to verify this.
* - Introducing CURLOPT_CERTINFO and the corresponding CURLINFO_CERTINFO. ByDaniel Stenberg2008-09-051-0/+4
| | | | | | | | | | | | | enabling this feature with CURLOPT_CERTINFO for a request using SSL (HTTPS or FTPS), libcurl will gather lots of server certificate info and that info can then get extracted by a client after the request has completed with curl_easy_getinfo()'s CURLINFO_CERTINFO option. Linus Nielsen Feltzing helped me test and smoothen out this feature. Unfortunately, this feature currently only works with libcurl built to use OpenSSL. This feature was sponsored by networking4all.com - thanks!
* Made some variables constDan Fandrich2008-09-041-5/+5
|
* Adjust usage of conditional definition of USE_OPENSSLYang Tse2008-08-171-0/+6
|
* - Phil Blundell added the CURLOPT_SCOPE option, as well as adjusted the URLDaniel Stenberg2008-07-301-0/+3
| | | | | | | parser to allow numerical IPv6-addresses to be specified with the scope given, as per RFC4007 - with a percent letter that itself needs to be URL escaped. For example, for an address of fe80::1234%1 the HTTP URL is: "http://[fe80::1234%251]/"
* Fixed --use-ascii to properly convert text files on Symbian OS, MS-DOSDan Fandrich2008-07-301-1/+2
| | | | and OS/2.
* Introcuding a new timestamp for curl_easy_getinfo():Daniel Stenberg2008-07-031-0/+1
| | | | | | | | CURLINFO_APPCONNECT_TIME. This is set with the "application layer" handshake/connection is completed (typically SSL, TLS or SSH). By using this you can figure out the application layer's own connect time. You can extract the time stamp using curl's -w option and the new variable named 'time_appconnect'. This feature was sponsored by Lenny Rachitsky at NeuStar.
* - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_ISSUERCERT, forDaniel Stenberg2008-06-061-0/+2
| | | | OpenSSL, NSS and GnuTLS-built libcurls.
* - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_CRLFILE, forDaniel Stenberg2008-06-061-0/+2
| | | | OpenSSL, NSS and GnuTLS-built libcurls.
* - Added CURLINFO_PRIMARY_IP as a new information retrievable withDaniel Stenberg2008-06-061-0/+5
| | | | | | curl_easy_getinfo. It returns a pointer to a string with the most recently used IP address. Modified test case 500 to also verify this feature. The implementing of this feature was sponsored by Lenny Rachitsky at NeuStar.
* - To make it easier for applications that want lots of magic stuff done onDaniel Stenberg2008-04-301-9/+9
| | | | | | | | | redirections and thus cannot use CURLOPT_FOLLOWLOCATION easily, we now introduce the new CURLINFO_REDIRECT_URL option that lets applications extract the URL libcurl would've redirected to if it had been told to. This then enables the application to continue to that URL as it thinks is suitable, without having to re-implement the magic of creating the new URL from the Location: header etc. Test 1029 verifies it.
* Change the confusing two variables for the expect 100 continue stuff intoDaniel Stenberg2008-03-131-6/+10
| | | | a single state variable to make the code easier to follow and understand.
* - Based on initial work done by Gautam Kachroo to address a bug, we now keepDaniel Stenberg2008-02-201-3/+11
| | | | | | | better control at the exact state of the connection's SSL status so that we know exactly when it has completed the SSL negotiation or not so that there won't be accidental re-uses of connections that are wrongly believed to be in SSL-completed-negotiate state.
* - We no longer support setting the CURLOPT_URL option from inside a callbackDaniel Stenberg2008-02-201-4/+0
| | | | | | | | | | | such as the CURLOPT_SSL_CTX_FUNCTION one treat that as if it was a Location: following. The patch that introduced this feature was done for 7.11.0, but this code and functionality has been broken since about 7.15.4 (March 2006) with the introduction of non-blocking OpenSSL "connects". It was a hack to begin with and since it doesn't work and hasn't worked correctly for a long time and nobody has even noticed, I consider it a very suitable subject for plain removal. And so it was done.
* - Dmitry Kurochkin cleaned up the pipelining code and removed the need for andDaniel Stenberg2008-02-031-3/+0
| | | | use of the "is_in_pipeline" struct field.
* - Dmitry Kurochkin moved several struct fields from the connectdata struct toDaniel Stenberg2008-01-311-13/+12
| | | | | | the SingleRequest one to make pipelining better. It is a bit tricky to keep them in the right place, to keep things related to the actual request or to the actual connection in the right place.
* Dmitry Kurochkin removed the cancelled state for pipelining, as we agreedDaniel Stenberg2008-01-211-1/+0
| | | | | that it is bad anyway. Starting now, removing a handle that is in used in a pipeline will break the pipeline - it'll be set back up again but still...
* Dmitry Kurochkin worked a lot on improving the HTTP Pipelining support thatDaniel Stenberg2008-01-161-0/+5
| | | | | | | previously had a number of flaws, perhaps most notably when an application fired up N transfers at once as then they wouldn't pipeline at all that nicely as anyone would think... Test case 530 was also updated to take the improved functionality into account.
* Woops, partly revert my previous commit and do it slightly differently instead.Daniel Stenberg2008-01-151-0/+1
| | | | | | | | | | | The signalling of that a global DNS cache is wanted is done by setting the option but the setting of the internal variable that it is in use must not be done until it finally actually gets used! NOTE and WARNING: I noticed that you can't actually switch off the global dns cache with CURLOPT_DNS_USE_GLOBAL_CACHE but you couldn't do that previously either and the option is very clearly and loudly documented as DO NOTE USE so I won't bother to fix this bug now.
* I made the torture test on test 530 go through. This was actually due toDaniel Stenberg2008-01-151-1/+0
| | | | | | silly code left from when we switched to let the multi handle "hold" the dns cache when using the multi interface... Of course this only triggered when a certain function call returned error at the correct moment.
* Trying GnuTLS and OpenSSL together fails to compile in not soGisle Vanem2008-01-141-0/+3
| | | | obvious ways. Give an explicit error.
* Georg Lippitsch brought CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA to allowDaniel Stenberg2008-01-101-0/+5
| | | | | | | | | | | libcurl to seek in a given input stream. This is particularly important when doing upload resumes when there's already a huge part of the file present remotely. Before, and still if this callback isn't used, libcurl will read and through away the entire file up to the point to where the resuming begins (which of course can be a slow opereration depending on file size, I/O bandwidth and more). This new function will also be preferred to get used instead of the CURLOPT_IOCTLFUNCTION for seeking back in a stream when doing multi-stage HTTP auth with POST/PUT.
* Introducing curl_easy_pause() and new magic return codes for both the readDaniel Stenberg2008-01-081-8/+17
| | | | | and the write callbacks that now can make a connection's reading and/or writing get paused.
* Based on further discussion on curl-library, I reverted yesterday's SOCKS5Daniel Stenberg2008-01-051-3/+0
| | | | | | | | | | | code to instead introduce support for a new proxy type called CURLPROXY_SOCKS5_HOSTNAME that is used to send the host name to the proxy instead of IP address and there's thus no longer any need for a new curl_easy_setopt() option. The default SOCKS5 proxy is again back to sending the IP address to the proxy. The new curl command line option for enabling sending host name to a SOCKS5 proxy is now --socks5-hostname.
* Based on Maxim Perenesenko's patch, we now do SOCKS5 operations and let theDaniel Stenberg2008-01-041-2/+4
| | | | | | proxy do the host name resolving and only if --socks5ip (or CURLOPT_SOCKS5_RESOLVE_LOCAL) is used we resolve the host name locally and pass on the IP address only to the proxy.
* Michal Marek introduced CURLOPT_PROXY_TRANSFER_MODE which is used to controlDaniel Stenberg2007-12-021-0/+2
| | | | | | | the appending of the "type=" thing on FTP URLs when they are passed to a HTTP proxy. Some proxies just don't like that appending (which is done unconditionally in 7.17.1), and some proxies treat binary/ascii transfers better with the appending done!
* struct HandleData is now called struct SingleRequest, and is only for data thatDaniel Stenberg2007-11-241-88/+64
| | | | | | | | | | | is inited at the start of the DO action. I removed the Curl_transfer_keeper struct completely, and I had to move out a few struct members (that had to be set before DO or used after DONE) to the UrlState struct. The SingleRequest struct is accessed with SessionHandle->req. One of the biggest reasons for doing this was the bunch of duplicate struct members in HandleData and Curl_transfer_keeper since it was really messy to keep track of two variables with the same name and basically the same purpose!
* While inspecting the Negotiate code, I noticed how the proxy auth was usingDaniel Stenberg2007-11-201-1/+2
| | | | | | | the same state struct as the host auth, so both could never be used at the same time! I fixed it (without being able to check) to use two separate structs to allow authentication using Negotiate on host and proxy simultanouesly.